From 3f3acef4b7b1287888fd9642fd357d61915f58d1 Mon Sep 17 00:00:00 2001 From: Yuteng Chen Date: Sat, 28 Mar 2026 21:43:56 +0800 Subject: [PATCH 01/15] Add autoscaleroptions of proto files Signed-off-by: Yuteng Chen --- flyteidl/protos/flyteidl/plugins/ray.proto | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/flyteidl/protos/flyteidl/plugins/ray.proto b/flyteidl/protos/flyteidl/plugins/ray.proto index 749444ee049..7e26356ecd4 100644 --- a/flyteidl/protos/flyteidl/plugins/ray.proto +++ b/flyteidl/protos/flyteidl/plugins/ray.proto @@ -22,6 +22,18 @@ message RayJob { string runtime_env_yaml = 5; } +message AutoscalerOptions { + // "Default", "Aggressive", "Conservative" + string upscaling_mode = 1; + int32 idle_timeout_seconds = 2; + // autoscaler sidecar env vars + repeated EnvVar env = 3; + // custom autoscaler image + string image = 4; + // autoscaler container resources + Resources resources = 5; +} + // Define Ray cluster defines the desired state of RayCluster message RayCluster { // HeadGroupSpecs are the spec for the head pod @@ -30,6 +42,7 @@ message RayCluster { repeated WorkerGroupSpec worker_group_spec = 2; // Whether to enable autoscaling. bool enable_autoscaling = 3; + AutoscalerOptions autoscaler_options = 4; } // HeadGroupSpec are the spec for the head pod From 9eaead886f5f17c91fc9b981e78c31ef67d4c842 Mon Sep 17 00:00:00 2001 From: Yuteng Chen Date: Sat, 28 Mar 2026 22:15:55 +0800 Subject: [PATCH 02/15] fix EnvVar Signed-off-by: Yuteng Chen --- flyteidl/protos/flyteidl/plugins/ray.proto | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/flyteidl/protos/flyteidl/plugins/ray.proto b/flyteidl/protos/flyteidl/plugins/ray.proto index 7e26356ecd4..99ff1c2fdb0 100644 --- a/flyteidl/protos/flyteidl/plugins/ray.proto +++ b/flyteidl/protos/flyteidl/plugins/ray.proto @@ -22,6 +22,26 @@ message RayJob { string runtime_env_yaml = 5; } +message EnvValueFrom { + // Source of environment variable + enum Source{ + CONFIGMAP = 0; + SECRET = 1; + RESOURCEFIELD = 2; + FIELD = 3; + } + Source source = 1; + // Name for config map or secret, container name for resource, path for field + string name = 2; + // Key for config map or secret, resource name for resource + string key = 3; +} + +message EnvVar { + map values = 1; + map valuesFrom = 2; +} + message AutoscalerOptions { // "Default", "Aggressive", "Conservative" string upscaling_mode = 1; From 57cfe74e27d44505088741ae8dde2ca4f3a41949 Mon Sep 17 00:00:00 2001 From: Yuteng Chen Date: Sat, 28 Mar 2026 22:29:21 +0800 Subject: [PATCH 03/15] fix resource Signed-off-by: Yuteng Chen --- flyteidl/protos/flyteidl/plugins/ray.proto | 25 ++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/flyteidl/protos/flyteidl/plugins/ray.proto b/flyteidl/protos/flyteidl/plugins/ray.proto index 99ff1c2fdb0..12f806b0488 100644 --- a/flyteidl/protos/flyteidl/plugins/ray.proto +++ b/flyteidl/protos/flyteidl/plugins/ray.proto @@ -22,6 +22,31 @@ message RayJob { string runtime_env_yaml = 5; } +message Resources { + // Known resource names. + enum ResourceName { + CPU = 0; + MEMORY = 1; + } + + // Encapsulates a resource name and value. + message ResourceEntry { + // Resource name. + ResourceName name = 1; + + // Value must be a valid k8s quantity. See + // https://github.com/kubernetes/apimachinery/blob/master/pkg/api/resource/quantity.go#L30-L80 + string value = 2; + } + + // The desired set of resources requested. ResourceNames must be unique within the list. + repeated ResourceEntry requests = 1; + + // Defines a set of bounds (e.g. min/max) within which the task can reliably run. ResourceNames must be unique + // within the list. + repeated ResourceEntry limits = 2; +} + message EnvValueFrom { // Source of environment variable enum Source{ From 841ae948d2e4acd9a8b84629a2e2502c421b272a Mon Sep 17 00:00:00 2001 From: Yuteng Chen Date: Sun, 29 Mar 2026 07:48:09 +0800 Subject: [PATCH 04/15] generate go from proto Signed-off-by: Yuteng Chen --- .../go/admin/mocks/AdminServiceClient.go | 4 +- .../go/admin/mocks/AdminServiceServer.go | 1 - .../admin/mocks/AgentMetadataServiceClient.go | 4 +- .../admin/mocks/AgentMetadataServiceServer.go | 1 - .../go/admin/mocks/AsyncAgentServiceClient.go | 7 +- .../go/admin/mocks/AsyncAgentServiceServer.go | 4 +- .../AsyncAgentService_GetTaskLogsClient.go | 4 +- .../AsyncAgentService_GetTaskLogsServer.go | 4 +- .../admin/mocks/AuthMetadataServiceClient.go | 6 +- .../go/admin/mocks/DataProxyServiceClient.go | 6 +- .../mocks/ExternalPluginServiceClient.go | 6 +- .../go/admin/mocks/IdentityServiceClient.go | 6 +- .../go/admin/mocks/SignalServiceClient.go | 4 +- .../go/admin/mocks/SignalServiceServer.go | 1 - .../go/admin/mocks/SyncAgentServiceClient.go | 6 +- .../SyncAgentService_ExecuteTaskSyncClient.go | 4 +- .../SyncAgentService_ExecuteTaskSyncServer.go | 4 +- flyteidl/clients/go/assets/admin.swagger.json | 102 +-- .../cacheservice/mocks/CacheServiceClient.go | 4 +- .../go/datacatalog/mocks/DataCatalogClient.go | 3 +- flyteidl/gen/pb-es/flyteidl/plugins/ray_pb.ts | 325 ++++++++ flyteidl/gen/pb-go/flyteidl/plugins/ray.pb.go | 774 +++++++++++++++--- .../flyteidl/service/admin.swagger.json | 102 +-- .../flyteidl/service/agent.swagger.json | 102 +-- .../external_plugin_service.swagger.json | 100 +-- .../gen/pb_python/flyteidl/plugins/ray_pb2.py | 44 +- .../pb_python/flyteidl/plugins/ray_pb2.pyi | 84 +- flyteidl/gen/pb_rust/flyteidl.plugins.rs | 129 +++ 28 files changed, 1470 insertions(+), 371 deletions(-) diff --git a/flyteidl/clients/go/admin/mocks/AdminServiceClient.go b/flyteidl/clients/go/admin/mocks/AdminServiceClient.go index 0854c88eb68..84b88e1d1e1 100644 --- a/flyteidl/clients/go/admin/mocks/AdminServiceClient.go +++ b/flyteidl/clients/go/admin/mocks/AdminServiceClient.go @@ -6,10 +6,8 @@ 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" + grpc "google.golang.org/grpc" ) // AdminServiceClient is an autogenerated mock type for the AdminServiceClient type diff --git a/flyteidl/clients/go/admin/mocks/AdminServiceServer.go b/flyteidl/clients/go/admin/mocks/AdminServiceServer.go index afc69cd991a..a05b851f71a 100644 --- a/flyteidl/clients/go/admin/mocks/AdminServiceServer.go +++ b/flyteidl/clients/go/admin/mocks/AdminServiceServer.go @@ -6,7 +6,6 @@ import ( context "context" admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin" - mock "github.com/stretchr/testify/mock" ) diff --git a/flyteidl/clients/go/admin/mocks/AgentMetadataServiceClient.go b/flyteidl/clients/go/admin/mocks/AgentMetadataServiceClient.go index 0fef13afab4..62acbd54c53 100644 --- a/flyteidl/clients/go/admin/mocks/AgentMetadataServiceClient.go +++ b/flyteidl/clients/go/admin/mocks/AgentMetadataServiceClient.go @@ -6,10 +6,8 @@ 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" + grpc "google.golang.org/grpc" ) // AgentMetadataServiceClient is an autogenerated mock type for the AgentMetadataServiceClient type diff --git a/flyteidl/clients/go/admin/mocks/AgentMetadataServiceServer.go b/flyteidl/clients/go/admin/mocks/AgentMetadataServiceServer.go index 71e698ef2aa..85230f7db83 100644 --- a/flyteidl/clients/go/admin/mocks/AgentMetadataServiceServer.go +++ b/flyteidl/clients/go/admin/mocks/AgentMetadataServiceServer.go @@ -6,7 +6,6 @@ import ( context "context" admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin" - mock "github.com/stretchr/testify/mock" ) diff --git a/flyteidl/clients/go/admin/mocks/AsyncAgentServiceClient.go b/flyteidl/clients/go/admin/mocks/AsyncAgentServiceClient.go index c537228482a..ffc5ad62d9d 100644 --- a/flyteidl/clients/go/admin/mocks/AsyncAgentServiceClient.go +++ b/flyteidl/clients/go/admin/mocks/AsyncAgentServiceClient.go @@ -6,12 +6,9 @@ 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" - service "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/service" + mock "github.com/stretchr/testify/mock" + grpc "google.golang.org/grpc" ) // AsyncAgentServiceClient is an autogenerated mock type for the AsyncAgentServiceClient type diff --git a/flyteidl/clients/go/admin/mocks/AsyncAgentServiceServer.go b/flyteidl/clients/go/admin/mocks/AsyncAgentServiceServer.go index 5c489efc9f3..52a48436f74 100644 --- a/flyteidl/clients/go/admin/mocks/AsyncAgentServiceServer.go +++ b/flyteidl/clients/go/admin/mocks/AsyncAgentServiceServer.go @@ -6,10 +6,8 @@ import ( context "context" 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" + mock "github.com/stretchr/testify/mock" ) // AsyncAgentServiceServer is an autogenerated mock type for the AsyncAgentServiceServer type diff --git a/flyteidl/clients/go/admin/mocks/AsyncAgentService_GetTaskLogsClient.go b/flyteidl/clients/go/admin/mocks/AsyncAgentService_GetTaskLogsClient.go index fe19dbc1593..a684f728c75 100644 --- a/flyteidl/clients/go/admin/mocks/AsyncAgentService_GetTaskLogsClient.go +++ b/flyteidl/clients/go/admin/mocks/AsyncAgentService_GetTaskLogsClient.go @@ -6,10 +6,8 @@ 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" + metadata "google.golang.org/grpc/metadata" ) // AsyncAgentService_GetTaskLogsClient is an autogenerated mock type for the AsyncAgentService_GetTaskLogsClient type diff --git a/flyteidl/clients/go/admin/mocks/AsyncAgentService_GetTaskLogsServer.go b/flyteidl/clients/go/admin/mocks/AsyncAgentService_GetTaskLogsServer.go index b6927e4b2e9..6064c0a90dc 100644 --- a/flyteidl/clients/go/admin/mocks/AsyncAgentService_GetTaskLogsServer.go +++ b/flyteidl/clients/go/admin/mocks/AsyncAgentService_GetTaskLogsServer.go @@ -6,10 +6,8 @@ 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" + metadata "google.golang.org/grpc/metadata" ) // AsyncAgentService_GetTaskLogsServer is an autogenerated mock type for the AsyncAgentService_GetTaskLogsServer type diff --git a/flyteidl/clients/go/admin/mocks/AuthMetadataServiceClient.go b/flyteidl/clients/go/admin/mocks/AuthMetadataServiceClient.go index 595b5fa04c0..1c9288fac42 100644 --- a/flyteidl/clients/go/admin/mocks/AuthMetadataServiceClient.go +++ b/flyteidl/clients/go/admin/mocks/AuthMetadataServiceClient.go @@ -5,11 +5,9 @@ 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" + mock "github.com/stretchr/testify/mock" + grpc "google.golang.org/grpc" ) // AuthMetadataServiceClient is an autogenerated mock type for the AuthMetadataServiceClient type diff --git a/flyteidl/clients/go/admin/mocks/DataProxyServiceClient.go b/flyteidl/clients/go/admin/mocks/DataProxyServiceClient.go index b2593fcf7e4..6dc0dacd316 100644 --- a/flyteidl/clients/go/admin/mocks/DataProxyServiceClient.go +++ b/flyteidl/clients/go/admin/mocks/DataProxyServiceClient.go @@ -5,11 +5,9 @@ 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" + mock "github.com/stretchr/testify/mock" + grpc "google.golang.org/grpc" ) // DataProxyServiceClient is an autogenerated mock type for the DataProxyServiceClient type diff --git a/flyteidl/clients/go/admin/mocks/ExternalPluginServiceClient.go b/flyteidl/clients/go/admin/mocks/ExternalPluginServiceClient.go index 865bf9bcd81..6322b9fd7ff 100644 --- a/flyteidl/clients/go/admin/mocks/ExternalPluginServiceClient.go +++ b/flyteidl/clients/go/admin/mocks/ExternalPluginServiceClient.go @@ -5,11 +5,9 @@ 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" + mock "github.com/stretchr/testify/mock" + grpc "google.golang.org/grpc" ) // ExternalPluginServiceClient is an autogenerated mock type for the ExternalPluginServiceClient type diff --git a/flyteidl/clients/go/admin/mocks/IdentityServiceClient.go b/flyteidl/clients/go/admin/mocks/IdentityServiceClient.go index 961bac5b2bc..efecbb87aff 100644 --- a/flyteidl/clients/go/admin/mocks/IdentityServiceClient.go +++ b/flyteidl/clients/go/admin/mocks/IdentityServiceClient.go @@ -5,11 +5,9 @@ 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" + mock "github.com/stretchr/testify/mock" + grpc "google.golang.org/grpc" ) // IdentityServiceClient is an autogenerated mock type for the IdentityServiceClient type diff --git a/flyteidl/clients/go/admin/mocks/SignalServiceClient.go b/flyteidl/clients/go/admin/mocks/SignalServiceClient.go index 11cd4e9f9f1..04bc1783b0c 100644 --- a/flyteidl/clients/go/admin/mocks/SignalServiceClient.go +++ b/flyteidl/clients/go/admin/mocks/SignalServiceClient.go @@ -6,10 +6,8 @@ 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" + grpc "google.golang.org/grpc" ) // SignalServiceClient is an autogenerated mock type for the SignalServiceClient type diff --git a/flyteidl/clients/go/admin/mocks/SignalServiceServer.go b/flyteidl/clients/go/admin/mocks/SignalServiceServer.go index 7b04736a5bd..6a13d1be2b6 100644 --- a/flyteidl/clients/go/admin/mocks/SignalServiceServer.go +++ b/flyteidl/clients/go/admin/mocks/SignalServiceServer.go @@ -6,7 +6,6 @@ import ( context "context" admin "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin" - mock "github.com/stretchr/testify/mock" ) diff --git a/flyteidl/clients/go/admin/mocks/SyncAgentServiceClient.go b/flyteidl/clients/go/admin/mocks/SyncAgentServiceClient.go index 6c39f1fed60..b5efa0e1de2 100644 --- a/flyteidl/clients/go/admin/mocks/SyncAgentServiceClient.go +++ b/flyteidl/clients/go/admin/mocks/SyncAgentServiceClient.go @@ -5,11 +5,9 @@ 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" + mock "github.com/stretchr/testify/mock" + grpc "google.golang.org/grpc" ) // SyncAgentServiceClient is an autogenerated mock type for the SyncAgentServiceClient type diff --git a/flyteidl/clients/go/admin/mocks/SyncAgentService_ExecuteTaskSyncClient.go b/flyteidl/clients/go/admin/mocks/SyncAgentService_ExecuteTaskSyncClient.go index 6d161bb9538..932c4e1c4e4 100644 --- a/flyteidl/clients/go/admin/mocks/SyncAgentService_ExecuteTaskSyncClient.go +++ b/flyteidl/clients/go/admin/mocks/SyncAgentService_ExecuteTaskSyncClient.go @@ -6,10 +6,8 @@ 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" + metadata "google.golang.org/grpc/metadata" ) // SyncAgentService_ExecuteTaskSyncClient is an autogenerated mock type for the SyncAgentService_ExecuteTaskSyncClient type diff --git a/flyteidl/clients/go/admin/mocks/SyncAgentService_ExecuteTaskSyncServer.go b/flyteidl/clients/go/admin/mocks/SyncAgentService_ExecuteTaskSyncServer.go index 61b4691a72a..802141dc1d4 100644 --- a/flyteidl/clients/go/admin/mocks/SyncAgentService_ExecuteTaskSyncServer.go +++ b/flyteidl/clients/go/admin/mocks/SyncAgentService_ExecuteTaskSyncServer.go @@ -6,10 +6,8 @@ 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" + metadata "google.golang.org/grpc/metadata" ) // SyncAgentService_ExecuteTaskSyncServer is an autogenerated mock type for the SyncAgentService_ExecuteTaskSyncServer type diff --git a/flyteidl/clients/go/assets/admin.swagger.json b/flyteidl/clients/go/assets/admin.swagger.json index 4f0b9e77d55..5f192adc3d4 100644 --- a/flyteidl/clients/go/assets/admin.swagger.json +++ b/flyteidl/clients/go/assets/admin.swagger.json @@ -4387,33 +4387,6 @@ "default": "UNDEFINED", "description": " - UNDEFINED: Default: no quality of service specified." }, - "ResourcesResourceEntry": { - "type": "object", - "properties": { - "name": { - "$ref": "#/definitions/ResourcesResourceName", - "description": "Resource name." - }, - "value": { - "type": "string", - "title": "Value must be a valid k8s quantity. See\nhttps://github.com/kubernetes/apimachinery/blob/master/pkg/api/resource/quantity.go#L30-L80" - } - }, - "description": "Encapsulates a resource name and value." - }, - "ResourcesResourceName": { - "type": "string", - "enum": [ - "UNKNOWN", - "CPU", - "GPU", - "MEMORY", - "STORAGE", - "EPHEMERAL_STORAGE" - ], - "default": "UNKNOWN", - "description": "Known resource names.\n\n - EPHEMERAL_STORAGE: For Kubernetes-based deployments, pods use ephemeral local storage for scratch space, caching, and for logs." - }, "RuntimeMetadataRuntimeType": { "type": "string", "enum": [ @@ -7100,7 +7073,7 @@ "description": "These will default to Flyte given paths. If provided, the system will not append known paths. If the task still\nneeds flyte's inputs and outputs path, add $(FLYTE_INPUT_FILE), $(FLYTE_OUTPUT_FILE) wherever makes sense and the\nsystem will populate these before executing the container." }, "resources": { - "$ref": "#/definitions/coreResources", + "$ref": "#/definitions/flyteidlcoreResources", "description": "Container resources requirement as specified by the container engine." }, "env": { @@ -8038,28 +8011,6 @@ "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" }, - "coreResources": { - "type": "object", - "properties": { - "requests": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/ResourcesResourceEntry" - }, - "description": "The desired set of resources requested. ResourceNames must be unique within the list." - }, - "limits": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/ResourcesResourceEntry" - }, - "description": "Defines a set of bounds (e.g. min/max) within which the task can reliably run. ResourceNames must be unique\nwithin the list." - } - }, - "description": "A customizable interface to convey resources requested for a container. This can be interpreted differently for different\ncontainer engines." - }, "coreRetryStrategy": { "type": "object", "properties": { @@ -8494,7 +8445,7 @@ "type": "object", "properties": { "resources": { - "$ref": "#/definitions/coreResources", + "$ref": "#/definitions/flyteidlcoreResources", "description": "A customizable interface to convey resources requested for a task container." }, "extended_resources": { @@ -9314,6 +9265,55 @@ ], "default": "MINUS" }, + "flyteidlcoreResources": { + "type": "object", + "properties": { + "requests": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/flyteidlcoreResourcesResourceEntry" + }, + "description": "The desired set of resources requested. ResourceNames must be unique within the list." + }, + "limits": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/flyteidlcoreResourcesResourceEntry" + }, + "description": "Defines a set of bounds (e.g. min/max) within which the task can reliably run. ResourceNames must be unique\nwithin the list." + } + }, + "description": "A customizable interface to convey resources requested for a container. This can be interpreted differently for different\ncontainer engines." + }, + "flyteidlcoreResourcesResourceEntry": { + "type": "object", + "properties": { + "name": { + "$ref": "#/definitions/flyteidlcoreResourcesResourceName", + "description": "Resource name." + }, + "value": { + "type": "string", + "title": "Value must be a valid k8s quantity. See\nhttps://github.com/kubernetes/apimachinery/blob/master/pkg/api/resource/quantity.go#L30-L80" + } + }, + "description": "Encapsulates a resource name and value." + }, + "flyteidlcoreResourcesResourceName": { + "type": "string", + "enum": [ + "UNKNOWN", + "CPU", + "GPU", + "MEMORY", + "STORAGE", + "EPHEMERAL_STORAGE" + ], + "default": "UNKNOWN", + "description": "Known resource names.\n\n - EPHEMERAL_STORAGE: For Kubernetes-based deployments, pods use ephemeral local storage for scratch space, caching, and for logs." + }, "flyteidlcoreSchema": { "type": "object", "properties": { diff --git a/flyteidl/clients/go/cacheservice/mocks/CacheServiceClient.go b/flyteidl/clients/go/cacheservice/mocks/CacheServiceClient.go index 90a99c59073..05f64d9ccec 100644 --- a/flyteidl/clients/go/cacheservice/mocks/CacheServiceClient.go +++ b/flyteidl/clients/go/cacheservice/mocks/CacheServiceClient.go @@ -6,10 +6,8 @@ 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" + grpc "google.golang.org/grpc" ) // CacheServiceClient is an autogenerated mock type for the CacheServiceClient type diff --git a/flyteidl/clients/go/datacatalog/mocks/DataCatalogClient.go b/flyteidl/clients/go/datacatalog/mocks/DataCatalogClient.go index 19e296eb1d9..d21d74ba42e 100644 --- a/flyteidl/clients/go/datacatalog/mocks/DataCatalogClient.go +++ b/flyteidl/clients/go/datacatalog/mocks/DataCatalogClient.go @@ -6,9 +6,8 @@ import ( context "context" datacatalog "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/datacatalog" - grpc "google.golang.org/grpc" - mock "github.com/stretchr/testify/mock" + grpc "google.golang.org/grpc" ) // DataCatalogClient is an autogenerated mock type for the DataCatalogClient type diff --git a/flyteidl/gen/pb-es/flyteidl/plugins/ray_pb.ts b/flyteidl/gen/pb-es/flyteidl/plugins/ray_pb.ts index 0c0a33e0a1c..da964fc8da2 100644 --- a/flyteidl/gen/pb-es/flyteidl/plugins/ray_pb.ts +++ b/flyteidl/gen/pb-es/flyteidl/plugins/ray_pb.ts @@ -83,6 +83,325 @@ export class RayJob extends Message { } } +/** + * @generated from message flyteidl.plugins.Resources + */ +export class Resources extends Message { + /** + * The desired set of resources requested. ResourceNames must be unique within the list. + * + * @generated from field: repeated flyteidl.plugins.Resources.ResourceEntry requests = 1; + */ + requests: Resources_ResourceEntry[] = []; + + /** + * Defines a set of bounds (e.g. min/max) within which the task can reliably run. ResourceNames must be unique + * within the list. + * + * @generated from field: repeated flyteidl.plugins.Resources.ResourceEntry limits = 2; + */ + limits: Resources_ResourceEntry[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "flyteidl.plugins.Resources"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "requests", kind: "message", T: Resources_ResourceEntry, repeated: true }, + { no: 2, name: "limits", kind: "message", T: Resources_ResourceEntry, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): Resources { + return new Resources().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): Resources { + return new Resources().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): Resources { + return new Resources().fromJsonString(jsonString, options); + } + + static equals(a: Resources | PlainMessage | undefined, b: Resources | PlainMessage | undefined): boolean { + return proto3.util.equals(Resources, a, b); + } +} + +/** + * Known resource names. + * + * @generated from enum flyteidl.plugins.Resources.ResourceName + */ +export enum Resources_ResourceName { + /** + * @generated from enum value: CPU = 0; + */ + CPU = 0, + + /** + * @generated from enum value: MEMORY = 1; + */ + MEMORY = 1, +} +// Retrieve enum metadata with: proto3.getEnumType(Resources_ResourceName) +proto3.util.setEnumType(Resources_ResourceName, "flyteidl.plugins.Resources.ResourceName", [ + { no: 0, name: "CPU" }, + { no: 1, name: "MEMORY" }, +]); + +/** + * Encapsulates a resource name and value. + * + * @generated from message flyteidl.plugins.Resources.ResourceEntry + */ +export class Resources_ResourceEntry extends Message { + /** + * Resource name. + * + * @generated from field: flyteidl.plugins.Resources.ResourceName name = 1; + */ + name = Resources_ResourceName.CPU; + + /** + * Value must be a valid k8s quantity. See + * https://github.com/kubernetes/apimachinery/blob/master/pkg/api/resource/quantity.go#L30-L80 + * + * @generated from field: string value = 2; + */ + value = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "flyteidl.plugins.Resources.ResourceEntry"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "name", kind: "enum", T: proto3.getEnumType(Resources_ResourceName) }, + { no: 2, name: "value", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): Resources_ResourceEntry { + return new Resources_ResourceEntry().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): Resources_ResourceEntry { + return new Resources_ResourceEntry().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): Resources_ResourceEntry { + return new Resources_ResourceEntry().fromJsonString(jsonString, options); + } + + static equals(a: Resources_ResourceEntry | PlainMessage | undefined, b: Resources_ResourceEntry | PlainMessage | undefined): boolean { + return proto3.util.equals(Resources_ResourceEntry, a, b); + } +} + +/** + * @generated from message flyteidl.plugins.EnvValueFrom + */ +export class EnvValueFrom extends Message { + /** + * @generated from field: flyteidl.plugins.EnvValueFrom.Source source = 1; + */ + source = EnvValueFrom_Source.CONFIGMAP; + + /** + * Name for config map or secret, container name for resource, path for field + * + * @generated from field: string name = 2; + */ + name = ""; + + /** + * Key for config map or secret, resource name for resource + * + * @generated from field: string key = 3; + */ + key = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "flyteidl.plugins.EnvValueFrom"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "source", kind: "enum", T: proto3.getEnumType(EnvValueFrom_Source) }, + { no: 2, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "key", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): EnvValueFrom { + return new EnvValueFrom().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): EnvValueFrom { + return new EnvValueFrom().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): EnvValueFrom { + return new EnvValueFrom().fromJsonString(jsonString, options); + } + + static equals(a: EnvValueFrom | PlainMessage | undefined, b: EnvValueFrom | PlainMessage | undefined): boolean { + return proto3.util.equals(EnvValueFrom, a, b); + } +} + +/** + * Source of environment variable + * + * @generated from enum flyteidl.plugins.EnvValueFrom.Source + */ +export enum EnvValueFrom_Source { + /** + * @generated from enum value: CONFIGMAP = 0; + */ + CONFIGMAP = 0, + + /** + * @generated from enum value: SECRET = 1; + */ + SECRET = 1, + + /** + * @generated from enum value: RESOURCEFIELD = 2; + */ + RESOURCEFIELD = 2, + + /** + * @generated from enum value: FIELD = 3; + */ + FIELD = 3, +} +// Retrieve enum metadata with: proto3.getEnumType(EnvValueFrom_Source) +proto3.util.setEnumType(EnvValueFrom_Source, "flyteidl.plugins.EnvValueFrom.Source", [ + { no: 0, name: "CONFIGMAP" }, + { no: 1, name: "SECRET" }, + { no: 2, name: "RESOURCEFIELD" }, + { no: 3, name: "FIELD" }, +]); + +/** + * @generated from message flyteidl.plugins.EnvVar + */ +export class EnvVar extends Message { + /** + * @generated from field: map values = 1; + */ + values: { [key: string]: string } = {}; + + /** + * @generated from field: map valuesFrom = 2; + */ + valuesFrom: { [key: string]: EnvValueFrom } = {}; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "flyteidl.plugins.EnvVar"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "values", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "scalar", T: 9 /* ScalarType.STRING */} }, + { no: 2, name: "valuesFrom", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "message", T: EnvValueFrom} }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): EnvVar { + return new EnvVar().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): EnvVar { + return new EnvVar().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): EnvVar { + return new EnvVar().fromJsonString(jsonString, options); + } + + static equals(a: EnvVar | PlainMessage | undefined, b: EnvVar | PlainMessage | undefined): boolean { + return proto3.util.equals(EnvVar, a, b); + } +} + +/** + * @generated from message flyteidl.plugins.AutoscalerOptions + */ +export class AutoscalerOptions extends Message { + /** + * "Default", "Aggressive", "Conservative" + * + * @generated from field: string upscaling_mode = 1; + */ + upscalingMode = ""; + + /** + * @generated from field: int32 idle_timeout_seconds = 2; + */ + idleTimeoutSeconds = 0; + + /** + * autoscaler sidecar env vars + * + * @generated from field: repeated flyteidl.plugins.EnvVar env = 3; + */ + env: EnvVar[] = []; + + /** + * custom autoscaler image + * + * @generated from field: string image = 4; + */ + image = ""; + + /** + * autoscaler container resources + * + * @generated from field: flyteidl.plugins.Resources resources = 5; + */ + resources?: Resources; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "flyteidl.plugins.AutoscalerOptions"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "upscaling_mode", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "idle_timeout_seconds", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, + { no: 3, name: "env", kind: "message", T: EnvVar, repeated: true }, + { no: 4, name: "image", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 5, name: "resources", kind: "message", T: Resources }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): AutoscalerOptions { + return new AutoscalerOptions().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): AutoscalerOptions { + return new AutoscalerOptions().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): AutoscalerOptions { + return new AutoscalerOptions().fromJsonString(jsonString, options); + } + + static equals(a: AutoscalerOptions | PlainMessage | undefined, b: AutoscalerOptions | PlainMessage | undefined): boolean { + return proto3.util.equals(AutoscalerOptions, a, b); + } +} + /** * Define Ray cluster defines the desired state of RayCluster * @@ -110,6 +429,11 @@ export class RayCluster extends Message { */ enableAutoscaling = false; + /** + * @generated from field: flyteidl.plugins.AutoscalerOptions autoscaler_options = 4; + */ + autoscalerOptions?: AutoscalerOptions; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -121,6 +445,7 @@ export class RayCluster extends Message { { no: 1, name: "head_group_spec", kind: "message", T: HeadGroupSpec }, { no: 2, name: "worker_group_spec", kind: "message", T: WorkerGroupSpec, repeated: true }, { no: 3, name: "enable_autoscaling", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 4, name: "autoscaler_options", kind: "message", T: AutoscalerOptions }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): RayCluster { diff --git a/flyteidl/gen/pb-go/flyteidl/plugins/ray.pb.go b/flyteidl/gen/pb-go/flyteidl/plugins/ray.pb.go index 18d0c4c1cba..14d3a9d0c8a 100644 --- a/flyteidl/gen/pb-go/flyteidl/plugins/ray.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/plugins/ray.pb.go @@ -21,6 +21,106 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +// Known resource names. +type Resources_ResourceName int32 + +const ( + Resources_CPU Resources_ResourceName = 0 + Resources_MEMORY Resources_ResourceName = 1 +) + +// Enum value maps for Resources_ResourceName. +var ( + Resources_ResourceName_name = map[int32]string{ + 0: "CPU", + 1: "MEMORY", + } + Resources_ResourceName_value = map[string]int32{ + "CPU": 0, + "MEMORY": 1, + } +) + +func (x Resources_ResourceName) Enum() *Resources_ResourceName { + p := new(Resources_ResourceName) + *p = x + return p +} + +func (x Resources_ResourceName) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Resources_ResourceName) Descriptor() protoreflect.EnumDescriptor { + return file_flyteidl_plugins_ray_proto_enumTypes[0].Descriptor() +} + +func (Resources_ResourceName) Type() protoreflect.EnumType { + return &file_flyteidl_plugins_ray_proto_enumTypes[0] +} + +func (x Resources_ResourceName) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Resources_ResourceName.Descriptor instead. +func (Resources_ResourceName) EnumDescriptor() ([]byte, []int) { + return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{1, 0} +} + +// Source of environment variable +type EnvValueFrom_Source int32 + +const ( + EnvValueFrom_CONFIGMAP EnvValueFrom_Source = 0 + EnvValueFrom_SECRET EnvValueFrom_Source = 1 + EnvValueFrom_RESOURCEFIELD EnvValueFrom_Source = 2 + EnvValueFrom_FIELD EnvValueFrom_Source = 3 +) + +// Enum value maps for EnvValueFrom_Source. +var ( + EnvValueFrom_Source_name = map[int32]string{ + 0: "CONFIGMAP", + 1: "SECRET", + 2: "RESOURCEFIELD", + 3: "FIELD", + } + EnvValueFrom_Source_value = map[string]int32{ + "CONFIGMAP": 0, + "SECRET": 1, + "RESOURCEFIELD": 2, + "FIELD": 3, + } +) + +func (x EnvValueFrom_Source) Enum() *EnvValueFrom_Source { + p := new(EnvValueFrom_Source) + *p = x + return p +} + +func (x EnvValueFrom_Source) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (EnvValueFrom_Source) Descriptor() protoreflect.EnumDescriptor { + return file_flyteidl_plugins_ray_proto_enumTypes[1].Descriptor() +} + +func (EnvValueFrom_Source) Type() protoreflect.EnumType { + return &file_flyteidl_plugins_ray_proto_enumTypes[1] +} + +func (x EnvValueFrom_Source) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use EnvValueFrom_Source.Descriptor instead. +func (EnvValueFrom_Source) EnumDescriptor() ([]byte, []int) { + return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{2, 0} +} + // RayJobSpec defines the desired state of RayJob type RayJob struct { state protoimpl.MessageState @@ -111,6 +211,267 @@ func (x *RayJob) GetRuntimeEnvYaml() string { return "" } +type Resources struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The desired set of resources requested. ResourceNames must be unique within the list. + Requests []*Resources_ResourceEntry `protobuf:"bytes,1,rep,name=requests,proto3" json:"requests,omitempty"` + // Defines a set of bounds (e.g. min/max) within which the task can reliably run. ResourceNames must be unique + // within the list. + Limits []*Resources_ResourceEntry `protobuf:"bytes,2,rep,name=limits,proto3" json:"limits,omitempty"` +} + +func (x *Resources) Reset() { + *x = Resources{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl_plugins_ray_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Resources) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Resources) ProtoMessage() {} + +func (x *Resources) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl_plugins_ray_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 Resources.ProtoReflect.Descriptor instead. +func (*Resources) Descriptor() ([]byte, []int) { + return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{1} +} + +func (x *Resources) GetRequests() []*Resources_ResourceEntry { + if x != nil { + return x.Requests + } + return nil +} + +func (x *Resources) GetLimits() []*Resources_ResourceEntry { + if x != nil { + return x.Limits + } + return nil +} + +type EnvValueFrom struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Source EnvValueFrom_Source `protobuf:"varint,1,opt,name=source,proto3,enum=flyteidl.plugins.EnvValueFrom_Source" json:"source,omitempty"` + // Name for config map or secret, container name for resource, path for field + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // Key for config map or secret, resource name for resource + Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` +} + +func (x *EnvValueFrom) Reset() { + *x = EnvValueFrom{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl_plugins_ray_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EnvValueFrom) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EnvValueFrom) ProtoMessage() {} + +func (x *EnvValueFrom) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl_plugins_ray_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 EnvValueFrom.ProtoReflect.Descriptor instead. +func (*EnvValueFrom) Descriptor() ([]byte, []int) { + return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{2} +} + +func (x *EnvValueFrom) GetSource() EnvValueFrom_Source { + if x != nil { + return x.Source + } + return EnvValueFrom_CONFIGMAP +} + +func (x *EnvValueFrom) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *EnvValueFrom) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +type EnvVar 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"` + ValuesFrom map[string]*EnvValueFrom `protobuf:"bytes,2,rep,name=valuesFrom,proto3" json:"valuesFrom,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *EnvVar) Reset() { + *x = EnvVar{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl_plugins_ray_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EnvVar) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EnvVar) ProtoMessage() {} + +func (x *EnvVar) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl_plugins_ray_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 EnvVar.ProtoReflect.Descriptor instead. +func (*EnvVar) Descriptor() ([]byte, []int) { + return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{3} +} + +func (x *EnvVar) GetValues() map[string]string { + if x != nil { + return x.Values + } + return nil +} + +func (x *EnvVar) GetValuesFrom() map[string]*EnvValueFrom { + if x != nil { + return x.ValuesFrom + } + return nil +} + +type AutoscalerOptions struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // "Default", "Aggressive", "Conservative" + UpscalingMode string `protobuf:"bytes,1,opt,name=upscaling_mode,json=upscalingMode,proto3" json:"upscaling_mode,omitempty"` + IdleTimeoutSeconds int32 `protobuf:"varint,2,opt,name=idle_timeout_seconds,json=idleTimeoutSeconds,proto3" json:"idle_timeout_seconds,omitempty"` + // autoscaler sidecar env vars + Env []*EnvVar `protobuf:"bytes,3,rep,name=env,proto3" json:"env,omitempty"` + // custom autoscaler image + Image string `protobuf:"bytes,4,opt,name=image,proto3" json:"image,omitempty"` + // autoscaler container resources + Resources *Resources `protobuf:"bytes,5,opt,name=resources,proto3" json:"resources,omitempty"` +} + +func (x *AutoscalerOptions) Reset() { + *x = AutoscalerOptions{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl_plugins_ray_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AutoscalerOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AutoscalerOptions) ProtoMessage() {} + +func (x *AutoscalerOptions) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl_plugins_ray_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 AutoscalerOptions.ProtoReflect.Descriptor instead. +func (*AutoscalerOptions) Descriptor() ([]byte, []int) { + return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{4} +} + +func (x *AutoscalerOptions) GetUpscalingMode() string { + if x != nil { + return x.UpscalingMode + } + return "" +} + +func (x *AutoscalerOptions) GetIdleTimeoutSeconds() int32 { + if x != nil { + return x.IdleTimeoutSeconds + } + return 0 +} + +func (x *AutoscalerOptions) GetEnv() []*EnvVar { + if x != nil { + return x.Env + } + return nil +} + +func (x *AutoscalerOptions) GetImage() string { + if x != nil { + return x.Image + } + return "" +} + +func (x *AutoscalerOptions) GetResources() *Resources { + if x != nil { + return x.Resources + } + return nil +} + // Define Ray cluster defines the desired state of RayCluster type RayCluster struct { state protoimpl.MessageState @@ -122,13 +483,14 @@ type RayCluster struct { // WorkerGroupSpecs are the specs for the worker pods WorkerGroupSpec []*WorkerGroupSpec `protobuf:"bytes,2,rep,name=worker_group_spec,json=workerGroupSpec,proto3" json:"worker_group_spec,omitempty"` // Whether to enable autoscaling. - EnableAutoscaling bool `protobuf:"varint,3,opt,name=enable_autoscaling,json=enableAutoscaling,proto3" json:"enable_autoscaling,omitempty"` + EnableAutoscaling bool `protobuf:"varint,3,opt,name=enable_autoscaling,json=enableAutoscaling,proto3" json:"enable_autoscaling,omitempty"` + AutoscalerOptions *AutoscalerOptions `protobuf:"bytes,4,opt,name=autoscaler_options,json=autoscalerOptions,proto3" json:"autoscaler_options,omitempty"` } func (x *RayCluster) Reset() { *x = RayCluster{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_plugins_ray_proto_msgTypes[1] + mi := &file_flyteidl_plugins_ray_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -141,7 +503,7 @@ func (x *RayCluster) String() string { func (*RayCluster) ProtoMessage() {} func (x *RayCluster) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_plugins_ray_proto_msgTypes[1] + mi := &file_flyteidl_plugins_ray_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -154,7 +516,7 @@ func (x *RayCluster) ProtoReflect() protoreflect.Message { // Deprecated: Use RayCluster.ProtoReflect.Descriptor instead. func (*RayCluster) Descriptor() ([]byte, []int) { - return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{1} + return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{5} } func (x *RayCluster) GetHeadGroupSpec() *HeadGroupSpec { @@ -178,6 +540,13 @@ func (x *RayCluster) GetEnableAutoscaling() bool { return false } +func (x *RayCluster) GetAutoscalerOptions() *AutoscalerOptions { + if x != nil { + return x.AutoscalerOptions + } + return nil +} + // HeadGroupSpec are the spec for the head pod type HeadGroupSpec struct { state protoimpl.MessageState @@ -194,7 +563,7 @@ type HeadGroupSpec struct { func (x *HeadGroupSpec) Reset() { *x = HeadGroupSpec{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_plugins_ray_proto_msgTypes[2] + mi := &file_flyteidl_plugins_ray_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -207,7 +576,7 @@ func (x *HeadGroupSpec) String() string { func (*HeadGroupSpec) ProtoMessage() {} func (x *HeadGroupSpec) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_plugins_ray_proto_msgTypes[2] + mi := &file_flyteidl_plugins_ray_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -220,7 +589,7 @@ func (x *HeadGroupSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use HeadGroupSpec.ProtoReflect.Descriptor instead. func (*HeadGroupSpec) Descriptor() ([]byte, []int) { - return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{2} + return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{6} } func (x *HeadGroupSpec) GetRayStartParams() map[string]string { @@ -261,7 +630,7 @@ type WorkerGroupSpec struct { func (x *WorkerGroupSpec) Reset() { *x = WorkerGroupSpec{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_plugins_ray_proto_msgTypes[3] + mi := &file_flyteidl_plugins_ray_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -274,7 +643,7 @@ func (x *WorkerGroupSpec) String() string { func (*WorkerGroupSpec) ProtoMessage() {} func (x *WorkerGroupSpec) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_plugins_ray_proto_msgTypes[3] + mi := &file_flyteidl_plugins_ray_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -287,7 +656,7 @@ func (x *WorkerGroupSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkerGroupSpec.ProtoReflect.Descriptor instead. func (*WorkerGroupSpec) Descriptor() ([]byte, []int) { - return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{3} + return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{7} } func (x *WorkerGroupSpec) GetGroupName() string { @@ -332,6 +701,65 @@ func (x *WorkerGroupSpec) GetK8SPod() *core.K8SPod { return nil } +// Encapsulates a resource name and value. +type Resources_ResourceEntry struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Resource name. + Name Resources_ResourceName `protobuf:"varint,1,opt,name=name,proto3,enum=flyteidl.plugins.Resources_ResourceName" json:"name,omitempty"` + // Value must be a valid k8s quantity. See + // https://github.com/kubernetes/apimachinery/blob/master/pkg/api/resource/quantity.go#L30-L80 + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *Resources_ResourceEntry) Reset() { + *x = Resources_ResourceEntry{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl_plugins_ray_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Resources_ResourceEntry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Resources_ResourceEntry) ProtoMessage() {} + +func (x *Resources_ResourceEntry) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl_plugins_ray_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 Resources_ResourceEntry.ProtoReflect.Descriptor instead. +func (*Resources_ResourceEntry) Descriptor() ([]byte, []int) { + return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{1, 0} +} + +func (x *Resources_ResourceEntry) GetName() Resources_ResourceName { + if x != nil { + return x.Name + } + return Resources_CPU +} + +func (x *Resources_ResourceEntry) GetValue() string { + if x != nil { + return x.Value + } + return "" +} + var File_flyteidl_plugins_ray_proto protoreflect.FileDescriptor var file_flyteidl_plugins_ray_proto_rawDesc = []byte{ @@ -356,70 +784,139 @@ var file_flyteidl_plugins_ray_proto_rawDesc = []byte{ 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x41, 0x66, 0x74, 0x65, 0x72, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x65, 0x6e, 0x76, 0x5f, 0x79, 0x61, 0x6d, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x76, 0x59, 0x61, 0x6d, 0x6c, 0x22, 0xd3, - 0x01, 0x0a, 0x0a, 0x52, 0x61, 0x79, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x47, 0x0a, - 0x0f, 0x68, 0x65, 0x61, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x70, 0x65, 0x63, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0d, 0x68, 0x65, 0x61, 0x64, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x4d, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, - 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, - 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x53, 0x70, 0x65, 0x63, 0x52, 0x0f, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x2d, 0x0a, 0x12, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, - 0x61, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x11, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, - 0x6c, 0x69, 0x6e, 0x67, 0x22, 0xe1, 0x01, 0x0a, 0x0d, 0x48, 0x65, 0x61, 0x64, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x5d, 0x0a, 0x10, 0x72, 0x61, 0x79, 0x5f, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x33, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, - 0x69, 0x6e, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, - 0x63, 0x2e, 0x52, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2e, 0x0a, 0x07, 0x6b, 0x38, 0x73, 0x5f, 0x70, 0x6f, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4b, 0x38, 0x73, 0x50, 0x6f, 0x64, 0x52, 0x06, 0x6b, - 0x38, 0x73, 0x50, 0x6f, 0x64, 0x1a, 0x41, 0x0a, 0x13, 0x52, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, - 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 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, 0xe6, 0x02, 0x0a, 0x0f, 0x57, 0x6f, 0x72, - 0x6b, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1d, 0x0a, 0x0a, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, - 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, - 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x69, 0x6e, 0x5f, 0x72, - 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, - 0x69, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, - 0x78, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x5f, 0x0a, - 0x10, 0x72, 0x61, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, - 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x52, 0x61, 0x79, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, - 0x72, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2e, - 0x0a, 0x07, 0x6b, 0x38, 0x73, 0x5f, 0x70, 0x6f, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x4b, 0x38, 0x73, 0x50, 0x6f, 0x64, 0x52, 0x06, 0x6b, 0x38, 0x73, 0x50, 0x6f, 0x64, 0x1a, 0x41, - 0x0a, 0x13, 0x52, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 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, 0x42, 0xc0, 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x42, 0x08, 0x52, 0x61, 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, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x73, 0xa2, 0x02, 0x03, 0x46, 0x50, 0x58, 0xaa, 0x02, 0x10, 0x46, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0xca, 0x02, - 0x10, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, - 0x73, 0xe2, 0x02, 0x1c, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x50, 0x6c, 0x75, - 0x67, 0x69, 0x6e, 0x73, 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, 0x50, 0x6c, 0x75, - 0x67, 0x69, 0x6e, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x76, 0x59, 0x61, 0x6d, 0x6c, 0x22, 0x9f, + 0x02, 0x0a, 0x09, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x08, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, + 0x73, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x73, 0x12, 0x41, 0x0a, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, + 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x1a, 0x63, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x3c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x23, 0x0a, 0x0c, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x07, 0x0a, 0x03, 0x43, + 0x50, 0x55, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x45, 0x4d, 0x4f, 0x52, 0x59, 0x10, 0x01, + 0x22, 0xb6, 0x01, 0x0a, 0x0c, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x72, 0x6f, + 0x6d, 0x12, 0x3d, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x25, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, + 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x72, 0x6f, + 0x6d, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x41, 0x0a, 0x06, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x4d, 0x41, 0x50, 0x10, 0x00, 0x12, + 0x0a, 0x0a, 0x06, 0x53, 0x45, 0x43, 0x52, 0x45, 0x54, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x52, + 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x10, 0x02, 0x12, 0x09, + 0x0a, 0x05, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x10, 0x03, 0x22, 0xaa, 0x02, 0x0a, 0x06, 0x45, 0x6e, + 0x76, 0x56, 0x61, 0x72, 0x12, 0x3c, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, + 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x2e, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x12, 0x48, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, + 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, 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, 0x1a, 0x5d, 0x0a, 0x0f, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x46, 0x72, 0x6f, 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, 0x34, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x45, + 0x6e, 0x76, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe9, 0x01, 0x0a, 0x11, 0x41, 0x75, 0x74, 0x6f, 0x73, + 0x63, 0x61, 0x6c, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0e, + 0x75, 0x70, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x75, 0x70, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x4d, + 0x6f, 0x64, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x12, 0x69, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, + 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x2a, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, + 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x52, 0x03, 0x65, 0x6e, + 0x76, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x39, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x22, 0xa7, 0x02, 0x0a, 0x0a, 0x52, 0x61, 0x79, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x12, 0x47, 0x0a, 0x0f, 0x68, 0x65, 0x61, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, + 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x48, 0x65, + 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0d, 0x68, 0x65, 0x61, + 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x4d, 0x0a, 0x11, 0x77, 0x6f, + 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0f, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x2d, 0x0a, 0x12, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x75, 0x74, + 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x52, 0x0a, 0x12, 0x61, 0x75, 0x74, 0x6f, + 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, + 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, + 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x11, 0x61, 0x75, 0x74, 0x6f, 0x73, + 0x63, 0x61, 0x6c, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xe1, 0x01, 0x0a, + 0x0d, 0x48, 0x65, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x5d, + 0x0a, 0x10, 0x72, 0x61, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x52, 0x61, 0x79, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, + 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2e, 0x0a, + 0x07, 0x6b, 0x38, 0x73, 0x5f, 0x70, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4b, + 0x38, 0x73, 0x50, 0x6f, 0x64, 0x52, 0x06, 0x6b, 0x38, 0x73, 0x50, 0x6f, 0x64, 0x1a, 0x41, 0x0a, + 0x13, 0x52, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 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, 0xe6, 0x02, 0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x53, 0x70, 0x65, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, + 0x21, 0x0a, 0x0c, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x5f, 0x0a, 0x10, 0x72, 0x61, 0x79, 0x5f, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x35, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, + 0x6e, 0x73, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, + 0x65, 0x63, 0x2e, 0x52, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2e, 0x0a, 0x07, 0x6b, 0x38, 0x73, 0x5f, 0x70, 0x6f, + 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4b, 0x38, 0x73, 0x50, 0x6f, 0x64, 0x52, 0x06, + 0x6b, 0x38, 0x73, 0x50, 0x6f, 0x64, 0x1a, 0x41, 0x0a, 0x13, 0x52, 0x61, 0x79, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 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, 0x42, 0xc0, 0x01, 0x0a, 0x14, 0x63, 0x6f, + 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, + 0x6e, 0x73, 0x42, 0x08, 0x52, 0x61, 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, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0xa2, 0x02, 0x03, + 0x46, 0x50, 0x58, 0xaa, 0x02, 0x10, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x50, + 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0xca, 0x02, 0x10, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x5c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0xe2, 0x02, 0x1c, 0x46, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 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, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -434,29 +931,49 @@ func file_flyteidl_plugins_ray_proto_rawDescGZIP() []byte { return file_flyteidl_plugins_ray_proto_rawDescData } -var file_flyteidl_plugins_ray_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_flyteidl_plugins_ray_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_flyteidl_plugins_ray_proto_msgTypes = make([]protoimpl.MessageInfo, 13) var file_flyteidl_plugins_ray_proto_goTypes = []interface{}{ - (*RayJob)(nil), // 0: flyteidl.plugins.RayJob - (*RayCluster)(nil), // 1: flyteidl.plugins.RayCluster - (*HeadGroupSpec)(nil), // 2: flyteidl.plugins.HeadGroupSpec - (*WorkerGroupSpec)(nil), // 3: flyteidl.plugins.WorkerGroupSpec - nil, // 4: flyteidl.plugins.HeadGroupSpec.RayStartParamsEntry - nil, // 5: flyteidl.plugins.WorkerGroupSpec.RayStartParamsEntry - (*core.K8SPod)(nil), // 6: flyteidl.core.K8sPod + (Resources_ResourceName)(0), // 0: flyteidl.plugins.Resources.ResourceName + (EnvValueFrom_Source)(0), // 1: flyteidl.plugins.EnvValueFrom.Source + (*RayJob)(nil), // 2: flyteidl.plugins.RayJob + (*Resources)(nil), // 3: flyteidl.plugins.Resources + (*EnvValueFrom)(nil), // 4: flyteidl.plugins.EnvValueFrom + (*EnvVar)(nil), // 5: flyteidl.plugins.EnvVar + (*AutoscalerOptions)(nil), // 6: flyteidl.plugins.AutoscalerOptions + (*RayCluster)(nil), // 7: flyteidl.plugins.RayCluster + (*HeadGroupSpec)(nil), // 8: flyteidl.plugins.HeadGroupSpec + (*WorkerGroupSpec)(nil), // 9: flyteidl.plugins.WorkerGroupSpec + (*Resources_ResourceEntry)(nil), // 10: flyteidl.plugins.Resources.ResourceEntry + nil, // 11: flyteidl.plugins.EnvVar.ValuesEntry + nil, // 12: flyteidl.plugins.EnvVar.ValuesFromEntry + nil, // 13: flyteidl.plugins.HeadGroupSpec.RayStartParamsEntry + nil, // 14: flyteidl.plugins.WorkerGroupSpec.RayStartParamsEntry + (*core.K8SPod)(nil), // 15: flyteidl.core.K8sPod } var file_flyteidl_plugins_ray_proto_depIdxs = []int32{ - 1, // 0: flyteidl.plugins.RayJob.ray_cluster:type_name -> flyteidl.plugins.RayCluster - 2, // 1: flyteidl.plugins.RayCluster.head_group_spec:type_name -> flyteidl.plugins.HeadGroupSpec - 3, // 2: flyteidl.plugins.RayCluster.worker_group_spec:type_name -> flyteidl.plugins.WorkerGroupSpec - 4, // 3: flyteidl.plugins.HeadGroupSpec.ray_start_params:type_name -> flyteidl.plugins.HeadGroupSpec.RayStartParamsEntry - 6, // 4: flyteidl.plugins.HeadGroupSpec.k8s_pod:type_name -> flyteidl.core.K8sPod - 5, // 5: flyteidl.plugins.WorkerGroupSpec.ray_start_params:type_name -> flyteidl.plugins.WorkerGroupSpec.RayStartParamsEntry - 6, // 6: flyteidl.plugins.WorkerGroupSpec.k8s_pod:type_name -> flyteidl.core.K8sPod - 7, // [7:7] is the sub-list for method output_type - 7, // [7:7] is the sub-list for method input_type - 7, // [7:7] is the sub-list for extension type_name - 7, // [7:7] is the sub-list for extension extendee - 0, // [0:7] is the sub-list for field type_name + 7, // 0: flyteidl.plugins.RayJob.ray_cluster:type_name -> flyteidl.plugins.RayCluster + 10, // 1: flyteidl.plugins.Resources.requests:type_name -> flyteidl.plugins.Resources.ResourceEntry + 10, // 2: flyteidl.plugins.Resources.limits:type_name -> flyteidl.plugins.Resources.ResourceEntry + 1, // 3: flyteidl.plugins.EnvValueFrom.source:type_name -> flyteidl.plugins.EnvValueFrom.Source + 11, // 4: flyteidl.plugins.EnvVar.values:type_name -> flyteidl.plugins.EnvVar.ValuesEntry + 12, // 5: flyteidl.plugins.EnvVar.valuesFrom:type_name -> flyteidl.plugins.EnvVar.ValuesFromEntry + 5, // 6: flyteidl.plugins.AutoscalerOptions.env:type_name -> flyteidl.plugins.EnvVar + 3, // 7: flyteidl.plugins.AutoscalerOptions.resources:type_name -> flyteidl.plugins.Resources + 8, // 8: flyteidl.plugins.RayCluster.head_group_spec:type_name -> flyteidl.plugins.HeadGroupSpec + 9, // 9: flyteidl.plugins.RayCluster.worker_group_spec:type_name -> flyteidl.plugins.WorkerGroupSpec + 6, // 10: flyteidl.plugins.RayCluster.autoscaler_options:type_name -> flyteidl.plugins.AutoscalerOptions + 13, // 11: flyteidl.plugins.HeadGroupSpec.ray_start_params:type_name -> flyteidl.plugins.HeadGroupSpec.RayStartParamsEntry + 15, // 12: flyteidl.plugins.HeadGroupSpec.k8s_pod:type_name -> flyteidl.core.K8sPod + 14, // 13: flyteidl.plugins.WorkerGroupSpec.ray_start_params:type_name -> flyteidl.plugins.WorkerGroupSpec.RayStartParamsEntry + 15, // 14: flyteidl.plugins.WorkerGroupSpec.k8s_pod:type_name -> flyteidl.core.K8sPod + 0, // 15: flyteidl.plugins.Resources.ResourceEntry.name:type_name -> flyteidl.plugins.Resources.ResourceName + 4, // 16: flyteidl.plugins.EnvVar.ValuesFromEntry.value:type_name -> flyteidl.plugins.EnvValueFrom + 17, // [17:17] is the sub-list for method output_type + 17, // [17:17] is the sub-list for method input_type + 17, // [17:17] is the sub-list for extension type_name + 17, // [17:17] is the sub-list for extension extendee + 0, // [0:17] is the sub-list for field type_name } func init() { file_flyteidl_plugins_ray_proto_init() } @@ -478,7 +995,7 @@ func file_flyteidl_plugins_ray_proto_init() { } } file_flyteidl_plugins_ray_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RayCluster); i { + switch v := v.(*Resources); i { case 0: return &v.state case 1: @@ -490,7 +1007,7 @@ func file_flyteidl_plugins_ray_proto_init() { } } file_flyteidl_plugins_ray_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HeadGroupSpec); i { + switch v := v.(*EnvValueFrom); i { case 0: return &v.state case 1: @@ -502,6 +1019,54 @@ func file_flyteidl_plugins_ray_proto_init() { } } file_flyteidl_plugins_ray_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EnvVar); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl_plugins_ray_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AutoscalerOptions); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl_plugins_ray_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RayCluster); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl_plugins_ray_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*HeadGroupSpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl_plugins_ray_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkerGroupSpec); i { case 0: return &v.state @@ -513,19 +1078,32 @@ func file_flyteidl_plugins_ray_proto_init() { return nil } } + file_flyteidl_plugins_ray_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Resources_ResourceEntry); 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{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_flyteidl_plugins_ray_proto_rawDesc, - NumEnums: 0, - NumMessages: 6, + NumEnums: 2, + NumMessages: 13, NumExtensions: 0, NumServices: 0, }, GoTypes: file_flyteidl_plugins_ray_proto_goTypes, DependencyIndexes: file_flyteidl_plugins_ray_proto_depIdxs, + EnumInfos: file_flyteidl_plugins_ray_proto_enumTypes, MessageInfos: file_flyteidl_plugins_ray_proto_msgTypes, }.Build() File_flyteidl_plugins_ray_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 4f0b9e77d55..5f192adc3d4 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json @@ -4387,33 +4387,6 @@ "default": "UNDEFINED", "description": " - UNDEFINED: Default: no quality of service specified." }, - "ResourcesResourceEntry": { - "type": "object", - "properties": { - "name": { - "$ref": "#/definitions/ResourcesResourceName", - "description": "Resource name." - }, - "value": { - "type": "string", - "title": "Value must be a valid k8s quantity. See\nhttps://github.com/kubernetes/apimachinery/blob/master/pkg/api/resource/quantity.go#L30-L80" - } - }, - "description": "Encapsulates a resource name and value." - }, - "ResourcesResourceName": { - "type": "string", - "enum": [ - "UNKNOWN", - "CPU", - "GPU", - "MEMORY", - "STORAGE", - "EPHEMERAL_STORAGE" - ], - "default": "UNKNOWN", - "description": "Known resource names.\n\n - EPHEMERAL_STORAGE: For Kubernetes-based deployments, pods use ephemeral local storage for scratch space, caching, and for logs." - }, "RuntimeMetadataRuntimeType": { "type": "string", "enum": [ @@ -7100,7 +7073,7 @@ "description": "These will default to Flyte given paths. If provided, the system will not append known paths. If the task still\nneeds flyte's inputs and outputs path, add $(FLYTE_INPUT_FILE), $(FLYTE_OUTPUT_FILE) wherever makes sense and the\nsystem will populate these before executing the container." }, "resources": { - "$ref": "#/definitions/coreResources", + "$ref": "#/definitions/flyteidlcoreResources", "description": "Container resources requirement as specified by the container engine." }, "env": { @@ -8038,28 +8011,6 @@ "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" }, - "coreResources": { - "type": "object", - "properties": { - "requests": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/ResourcesResourceEntry" - }, - "description": "The desired set of resources requested. ResourceNames must be unique within the list." - }, - "limits": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/ResourcesResourceEntry" - }, - "description": "Defines a set of bounds (e.g. min/max) within which the task can reliably run. ResourceNames must be unique\nwithin the list." - } - }, - "description": "A customizable interface to convey resources requested for a container. This can be interpreted differently for different\ncontainer engines." - }, "coreRetryStrategy": { "type": "object", "properties": { @@ -8494,7 +8445,7 @@ "type": "object", "properties": { "resources": { - "$ref": "#/definitions/coreResources", + "$ref": "#/definitions/flyteidlcoreResources", "description": "A customizable interface to convey resources requested for a task container." }, "extended_resources": { @@ -9314,6 +9265,55 @@ ], "default": "MINUS" }, + "flyteidlcoreResources": { + "type": "object", + "properties": { + "requests": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/flyteidlcoreResourcesResourceEntry" + }, + "description": "The desired set of resources requested. ResourceNames must be unique within the list." + }, + "limits": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/flyteidlcoreResourcesResourceEntry" + }, + "description": "Defines a set of bounds (e.g. min/max) within which the task can reliably run. ResourceNames must be unique\nwithin the list." + } + }, + "description": "A customizable interface to convey resources requested for a container. This can be interpreted differently for different\ncontainer engines." + }, + "flyteidlcoreResourcesResourceEntry": { + "type": "object", + "properties": { + "name": { + "$ref": "#/definitions/flyteidlcoreResourcesResourceName", + "description": "Resource name." + }, + "value": { + "type": "string", + "title": "Value must be a valid k8s quantity. See\nhttps://github.com/kubernetes/apimachinery/blob/master/pkg/api/resource/quantity.go#L30-L80" + } + }, + "description": "Encapsulates a resource name and value." + }, + "flyteidlcoreResourcesResourceName": { + "type": "string", + "enum": [ + "UNKNOWN", + "CPU", + "GPU", + "MEMORY", + "STORAGE", + "EPHEMERAL_STORAGE" + ], + "default": "UNKNOWN", + "description": "Known resource names.\n\n - EPHEMERAL_STORAGE: For Kubernetes-based deployments, pods use ephemeral local storage for scratch space, caching, and for logs." + }, "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 7752341446a..9dba17ddd7f 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.swagger.json @@ -505,33 +505,6 @@ "description": "- UPLOAD_ON_EXIT: All data will be uploaded after the main container exits\n - UPLOAD_EAGER: Data will be uploaded as it appears. Refer to protocol specification for details\n - DO_NOT_UPLOAD: Data will not be uploaded, only references will be written", "title": "Mode to use for uploading" }, - "ResourcesResourceEntry": { - "type": "object", - "properties": { - "name": { - "$ref": "#/definitions/ResourcesResourceName", - "description": "Resource name." - }, - "value": { - "type": "string", - "title": "Value must be a valid k8s quantity. See\nhttps://github.com/kubernetes/apimachinery/blob/master/pkg/api/resource/quantity.go#L30-L80" - } - }, - "description": "Encapsulates a resource name and value." - }, - "ResourcesResourceName": { - "type": "string", - "enum": [ - "UNKNOWN", - "CPU", - "GPU", - "MEMORY", - "STORAGE", - "EPHEMERAL_STORAGE" - ], - "default": "UNKNOWN", - "description": "Known resource names.\n\n - EPHEMERAL_STORAGE: For Kubernetes-based deployments, pods use ephemeral local storage for scratch space, caching, and for logs." - }, "RuntimeMetadataRuntimeType": { "type": "string", "enum": [ @@ -1050,7 +1023,7 @@ "description": "These will default to Flyte given paths. If provided, the system will not append known paths. If the task still\nneeds flyte's inputs and outputs path, add $(FLYTE_INPUT_FILE), $(FLYTE_OUTPUT_FILE) wherever makes sense and the\nsystem will populate these before executing the container." }, "resources": { - "$ref": "#/definitions/coreResources", + "$ref": "#/definitions/flyteidlcoreResources", "description": "Container resources requirement as specified by the container engine." }, "env": { @@ -1572,28 +1545,6 @@ "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" }, - "coreResources": { - "type": "object", - "properties": { - "requests": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/ResourcesResourceEntry" - }, - "description": "The desired set of resources requested. ResourceNames must be unique within the list." - }, - "limits": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/ResourcesResourceEntry" - }, - "description": "Defines a set of bounds (e.g. min/max) within which the task can reliably run. ResourceNames must be unique\nwithin the list." - } - }, - "description": "A customizable interface to convey resources requested for a container. This can be interpreted differently for different\ncontainer engines." - }, "coreRetryStrategy": { "type": "object", "properties": { @@ -1946,7 +1897,7 @@ "type": "object", "properties": { "resources": { - "$ref": "#/definitions/coreResources", + "$ref": "#/definitions/flyteidlcoreResources", "description": "A customizable interface to convey resources requested for a task container." }, "extended_resources": { @@ -2273,6 +2224,55 @@ ], "default": "MINUS" }, + "flyteidlcoreResources": { + "type": "object", + "properties": { + "requests": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/flyteidlcoreResourcesResourceEntry" + }, + "description": "The desired set of resources requested. ResourceNames must be unique within the list." + }, + "limits": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/flyteidlcoreResourcesResourceEntry" + }, + "description": "Defines a set of bounds (e.g. min/max) within which the task can reliably run. ResourceNames must be unique\nwithin the list." + } + }, + "description": "A customizable interface to convey resources requested for a container. This can be interpreted differently for different\ncontainer engines." + }, + "flyteidlcoreResourcesResourceEntry": { + "type": "object", + "properties": { + "name": { + "$ref": "#/definitions/flyteidlcoreResourcesResourceName", + "description": "Resource name." + }, + "value": { + "type": "string", + "title": "Value must be a valid k8s quantity. See\nhttps://github.com/kubernetes/apimachinery/blob/master/pkg/api/resource/quantity.go#L30-L80" + } + }, + "description": "Encapsulates a resource name and value." + }, + "flyteidlcoreResourcesResourceName": { + "type": "string", + "enum": [ + "UNKNOWN", + "CPU", + "GPU", + "MEMORY", + "STORAGE", + "EPHEMERAL_STORAGE" + ], + "default": "UNKNOWN", + "description": "Known resource names.\n\n - EPHEMERAL_STORAGE: For Kubernetes-based deployments, pods use ephemeral local storage for scratch space, caching, and for logs." + }, "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 468030f76d2..6a4d49b95f3 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 @@ -70,33 +70,6 @@ "description": "- UPLOAD_ON_EXIT: All data will be uploaded after the main container exits\n - UPLOAD_EAGER: Data will be uploaded as it appears. Refer to protocol specification for details\n - DO_NOT_UPLOAD: Data will not be uploaded, only references will be written", "title": "Mode to use for uploading" }, - "ResourcesResourceEntry": { - "type": "object", - "properties": { - "name": { - "$ref": "#/definitions/ResourcesResourceName", - "description": "Resource name." - }, - "value": { - "type": "string", - "title": "Value must be a valid k8s quantity. See\nhttps://github.com/kubernetes/apimachinery/blob/master/pkg/api/resource/quantity.go#L30-L80" - } - }, - "description": "Encapsulates a resource name and value." - }, - "ResourcesResourceName": { - "type": "string", - "enum": [ - "UNKNOWN", - "CPU", - "GPU", - "MEMORY", - "STORAGE", - "EPHEMERAL_STORAGE" - ], - "default": "UNKNOWN", - "description": "Known resource names.\n\n - EPHEMERAL_STORAGE: For Kubernetes-based deployments, pods use ephemeral local storage for scratch space, caching, and for logs." - }, "RuntimeMetadataRuntimeType": { "type": "string", "enum": [ @@ -298,7 +271,7 @@ "description": "These will default to Flyte given paths. If provided, the system will not append known paths. If the task still\nneeds flyte's inputs and outputs path, add $(FLYTE_INPUT_FILE), $(FLYTE_OUTPUT_FILE) wherever makes sense and the\nsystem will populate these before executing the container." }, "resources": { - "$ref": "#/definitions/coreResources", + "$ref": "#/definitions/flyteidlcoreResources", "description": "Container resources requirement as specified by the container engine." }, "env": { @@ -794,28 +767,6 @@ "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" }, - "coreResources": { - "type": "object", - "properties": { - "requests": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/ResourcesResourceEntry" - }, - "description": "The desired set of resources requested. ResourceNames must be unique within the list." - }, - "limits": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/ResourcesResourceEntry" - }, - "description": "Defines a set of bounds (e.g. min/max) within which the task can reliably run. ResourceNames must be unique\nwithin the list." - } - }, - "description": "A customizable interface to convey resources requested for a container. This can be interpreted differently for different\ncontainer engines." - }, "coreRetryStrategy": { "type": "object", "properties": { @@ -1323,6 +1274,55 @@ ], "default": "MINUS" }, + "flyteidlcoreResources": { + "type": "object", + "properties": { + "requests": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/flyteidlcoreResourcesResourceEntry" + }, + "description": "The desired set of resources requested. ResourceNames must be unique within the list." + }, + "limits": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/flyteidlcoreResourcesResourceEntry" + }, + "description": "Defines a set of bounds (e.g. min/max) within which the task can reliably run. ResourceNames must be unique\nwithin the list." + } + }, + "description": "A customizable interface to convey resources requested for a container. This can be interpreted differently for different\ncontainer engines." + }, + "flyteidlcoreResourcesResourceEntry": { + "type": "object", + "properties": { + "name": { + "$ref": "#/definitions/flyteidlcoreResourcesResourceName", + "description": "Resource name." + }, + "value": { + "type": "string", + "title": "Value must be a valid k8s quantity. See\nhttps://github.com/kubernetes/apimachinery/blob/master/pkg/api/resource/quantity.go#L30-L80" + } + }, + "description": "Encapsulates a resource name and value." + }, + "flyteidlcoreResourcesResourceName": { + "type": "string", + "enum": [ + "UNKNOWN", + "CPU", + "GPU", + "MEMORY", + "STORAGE", + "EPHEMERAL_STORAGE" + ], + "default": "UNKNOWN", + "description": "Known resource names.\n\n - EPHEMERAL_STORAGE: For Kubernetes-based deployments, pods use ephemeral local storage for scratch space, caching, and for logs." + }, "flyteidlcoreSchema": { "type": "object", "properties": { diff --git a/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.py b/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.py index c625fd957b6..23d172734fb 100644 --- a/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.py @@ -14,7 +14,7 @@ from flyteidl.core import tasks_pb2 as flyteidl_dot_core_dot_tasks__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1a\x66lyteidl/plugins/ray.proto\x12\x10\x66lyteidl.plugins\x1a\x19\x66lyteidl/core/tasks.proto\"\x92\x02\n\x06RayJob\x12=\n\x0bray_cluster\x18\x01 \x01(\x0b\x32\x1c.flyteidl.plugins.RayClusterR\nrayCluster\x12#\n\x0bruntime_env\x18\x02 \x01(\tB\x02\x18\x01R\nruntimeEnv\x12=\n\x1bshutdown_after_job_finishes\x18\x03 \x01(\x08R\x18shutdownAfterJobFinishes\x12;\n\x1attl_seconds_after_finished\x18\x04 \x01(\x05R\x17ttlSecondsAfterFinished\x12(\n\x10runtime_env_yaml\x18\x05 \x01(\tR\x0eruntimeEnvYaml\"\xd3\x01\n\nRayCluster\x12G\n\x0fhead_group_spec\x18\x01 \x01(\x0b\x32\x1f.flyteidl.plugins.HeadGroupSpecR\rheadGroupSpec\x12M\n\x11worker_group_spec\x18\x02 \x03(\x0b\x32!.flyteidl.plugins.WorkerGroupSpecR\x0fworkerGroupSpec\x12-\n\x12\x65nable_autoscaling\x18\x03 \x01(\x08R\x11\x65nableAutoscaling\"\xe1\x01\n\rHeadGroupSpec\x12]\n\x10ray_start_params\x18\x01 \x03(\x0b\x32\x33.flyteidl.plugins.HeadGroupSpec.RayStartParamsEntryR\x0erayStartParams\x12.\n\x07k8s_pod\x18\x02 \x01(\x0b\x32\x15.flyteidl.core.K8sPodR\x06k8sPod\x1a\x41\n\x13RayStartParamsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xe6\x02\n\x0fWorkerGroupSpec\x12\x1d\n\ngroup_name\x18\x01 \x01(\tR\tgroupName\x12\x1a\n\x08replicas\x18\x02 \x01(\x05R\x08replicas\x12!\n\x0cmin_replicas\x18\x03 \x01(\x05R\x0bminReplicas\x12!\n\x0cmax_replicas\x18\x04 \x01(\x05R\x0bmaxReplicas\x12_\n\x10ray_start_params\x18\x05 \x03(\x0b\x32\x35.flyteidl.plugins.WorkerGroupSpec.RayStartParamsEntryR\x0erayStartParams\x12.\n\x07k8s_pod\x18\x06 \x01(\x0b\x32\x15.flyteidl.core.K8sPodR\x06k8sPod\x1a\x41\n\x13RayStartParamsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\xc0\x01\n\x14\x63om.flyteidl.pluginsB\x08RayProtoP\x01Z=github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/plugins\xa2\x02\x03\x46PX\xaa\x02\x10\x46lyteidl.Plugins\xca\x02\x10\x46lyteidl\\Plugins\xe2\x02\x1c\x46lyteidl\\Plugins\\GPBMetadata\xea\x02\x11\x46lyteidl::Pluginsb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1a\x66lyteidl/plugins/ray.proto\x12\x10\x66lyteidl.plugins\x1a\x19\x66lyteidl/core/tasks.proto\"\x92\x02\n\x06RayJob\x12=\n\x0bray_cluster\x18\x01 \x01(\x0b\x32\x1c.flyteidl.plugins.RayClusterR\nrayCluster\x12#\n\x0bruntime_env\x18\x02 \x01(\tB\x02\x18\x01R\nruntimeEnv\x12=\n\x1bshutdown_after_job_finishes\x18\x03 \x01(\x08R\x18shutdownAfterJobFinishes\x12;\n\x1attl_seconds_after_finished\x18\x04 \x01(\x05R\x17ttlSecondsAfterFinished\x12(\n\x10runtime_env_yaml\x18\x05 \x01(\tR\x0eruntimeEnvYaml\"\x9f\x02\n\tResources\x12\x45\n\x08requests\x18\x01 \x03(\x0b\x32).flyteidl.plugins.Resources.ResourceEntryR\x08requests\x12\x41\n\x06limits\x18\x02 \x03(\x0b\x32).flyteidl.plugins.Resources.ResourceEntryR\x06limits\x1a\x63\n\rResourceEntry\x12<\n\x04name\x18\x01 \x01(\x0e\x32(.flyteidl.plugins.Resources.ResourceNameR\x04name\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value\"#\n\x0cResourceName\x12\x07\n\x03\x43PU\x10\x00\x12\n\n\x06MEMORY\x10\x01\"\xb6\x01\n\x0c\x45nvValueFrom\x12=\n\x06source\x18\x01 \x01(\x0e\x32%.flyteidl.plugins.EnvValueFrom.SourceR\x06source\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x10\n\x03key\x18\x03 \x01(\tR\x03key\"A\n\x06Source\x12\r\n\tCONFIGMAP\x10\x00\x12\n\n\x06SECRET\x10\x01\x12\x11\n\rRESOURCEFIELD\x10\x02\x12\t\n\x05\x46IELD\x10\x03\"\xaa\x02\n\x06\x45nvVar\x12<\n\x06values\x18\x01 \x03(\x0b\x32$.flyteidl.plugins.EnvVar.ValuesEntryR\x06values\x12H\n\nvaluesFrom\x18\x02 \x03(\x0b\x32(.flyteidl.plugins.EnvVar.ValuesFromEntryR\nvaluesFrom\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\x1a]\n\x0fValuesFromEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x34\n\x05value\x18\x02 \x01(\x0b\x32\x1e.flyteidl.plugins.EnvValueFromR\x05value:\x02\x38\x01\"\xe9\x01\n\x11\x41utoscalerOptions\x12%\n\x0eupscaling_mode\x18\x01 \x01(\tR\rupscalingMode\x12\x30\n\x14idle_timeout_seconds\x18\x02 \x01(\x05R\x12idleTimeoutSeconds\x12*\n\x03\x65nv\x18\x03 \x03(\x0b\x32\x18.flyteidl.plugins.EnvVarR\x03\x65nv\x12\x14\n\x05image\x18\x04 \x01(\tR\x05image\x12\x39\n\tresources\x18\x05 \x01(\x0b\x32\x1b.flyteidl.plugins.ResourcesR\tresources\"\xa7\x02\n\nRayCluster\x12G\n\x0fhead_group_spec\x18\x01 \x01(\x0b\x32\x1f.flyteidl.plugins.HeadGroupSpecR\rheadGroupSpec\x12M\n\x11worker_group_spec\x18\x02 \x03(\x0b\x32!.flyteidl.plugins.WorkerGroupSpecR\x0fworkerGroupSpec\x12-\n\x12\x65nable_autoscaling\x18\x03 \x01(\x08R\x11\x65nableAutoscaling\x12R\n\x12\x61utoscaler_options\x18\x04 \x01(\x0b\x32#.flyteidl.plugins.AutoscalerOptionsR\x11\x61utoscalerOptions\"\xe1\x01\n\rHeadGroupSpec\x12]\n\x10ray_start_params\x18\x01 \x03(\x0b\x32\x33.flyteidl.plugins.HeadGroupSpec.RayStartParamsEntryR\x0erayStartParams\x12.\n\x07k8s_pod\x18\x02 \x01(\x0b\x32\x15.flyteidl.core.K8sPodR\x06k8sPod\x1a\x41\n\x13RayStartParamsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xe6\x02\n\x0fWorkerGroupSpec\x12\x1d\n\ngroup_name\x18\x01 \x01(\tR\tgroupName\x12\x1a\n\x08replicas\x18\x02 \x01(\x05R\x08replicas\x12!\n\x0cmin_replicas\x18\x03 \x01(\x05R\x0bminReplicas\x12!\n\x0cmax_replicas\x18\x04 \x01(\x05R\x0bmaxReplicas\x12_\n\x10ray_start_params\x18\x05 \x03(\x0b\x32\x35.flyteidl.plugins.WorkerGroupSpec.RayStartParamsEntryR\x0erayStartParams\x12.\n\x07k8s_pod\x18\x06 \x01(\x0b\x32\x15.flyteidl.core.K8sPodR\x06k8sPod\x1a\x41\n\x13RayStartParamsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\xc0\x01\n\x14\x63om.flyteidl.pluginsB\x08RayProtoP\x01Z=github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/plugins\xa2\x02\x03\x46PX\xaa\x02\x10\x46lyteidl.Plugins\xca\x02\x10\x46lyteidl\\Plugins\xe2\x02\x1c\x46lyteidl\\Plugins\\GPBMetadata\xea\x02\x11\x46lyteidl::Pluginsb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -25,20 +25,42 @@ DESCRIPTOR._serialized_options = b'\n\024com.flyteidl.pluginsB\010RayProtoP\001Z=github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/plugins\242\002\003FPX\252\002\020Flyteidl.Plugins\312\002\020Flyteidl\\Plugins\342\002\034Flyteidl\\Plugins\\GPBMetadata\352\002\021Flyteidl::Plugins' _RAYJOB.fields_by_name['runtime_env']._options = None _RAYJOB.fields_by_name['runtime_env']._serialized_options = b'\030\001' + _ENVVAR_VALUESENTRY._options = None + _ENVVAR_VALUESENTRY._serialized_options = b'8\001' + _ENVVAR_VALUESFROMENTRY._options = None + _ENVVAR_VALUESFROMENTRY._serialized_options = b'8\001' _HEADGROUPSPEC_RAYSTARTPARAMSENTRY._options = None _HEADGROUPSPEC_RAYSTARTPARAMSENTRY._serialized_options = b'8\001' _WORKERGROUPSPEC_RAYSTARTPARAMSENTRY._options = None _WORKERGROUPSPEC_RAYSTARTPARAMSENTRY._serialized_options = b'8\001' _globals['_RAYJOB']._serialized_start=76 _globals['_RAYJOB']._serialized_end=350 - _globals['_RAYCLUSTER']._serialized_start=353 - _globals['_RAYCLUSTER']._serialized_end=564 - _globals['_HEADGROUPSPEC']._serialized_start=567 - _globals['_HEADGROUPSPEC']._serialized_end=792 - _globals['_HEADGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_start=727 - _globals['_HEADGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_end=792 - _globals['_WORKERGROUPSPEC']._serialized_start=795 - _globals['_WORKERGROUPSPEC']._serialized_end=1153 - _globals['_WORKERGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_start=727 - _globals['_WORKERGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_end=792 + _globals['_RESOURCES']._serialized_start=353 + _globals['_RESOURCES']._serialized_end=640 + _globals['_RESOURCES_RESOURCEENTRY']._serialized_start=504 + _globals['_RESOURCES_RESOURCEENTRY']._serialized_end=603 + _globals['_RESOURCES_RESOURCENAME']._serialized_start=605 + _globals['_RESOURCES_RESOURCENAME']._serialized_end=640 + _globals['_ENVVALUEFROM']._serialized_start=643 + _globals['_ENVVALUEFROM']._serialized_end=825 + _globals['_ENVVALUEFROM_SOURCE']._serialized_start=760 + _globals['_ENVVALUEFROM_SOURCE']._serialized_end=825 + _globals['_ENVVAR']._serialized_start=828 + _globals['_ENVVAR']._serialized_end=1126 + _globals['_ENVVAR_VALUESENTRY']._serialized_start=974 + _globals['_ENVVAR_VALUESENTRY']._serialized_end=1031 + _globals['_ENVVAR_VALUESFROMENTRY']._serialized_start=1033 + _globals['_ENVVAR_VALUESFROMENTRY']._serialized_end=1126 + _globals['_AUTOSCALEROPTIONS']._serialized_start=1129 + _globals['_AUTOSCALEROPTIONS']._serialized_end=1362 + _globals['_RAYCLUSTER']._serialized_start=1365 + _globals['_RAYCLUSTER']._serialized_end=1660 + _globals['_HEADGROUPSPEC']._serialized_start=1663 + _globals['_HEADGROUPSPEC']._serialized_end=1888 + _globals['_HEADGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_start=1823 + _globals['_HEADGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_end=1888 + _globals['_WORKERGROUPSPEC']._serialized_start=1891 + _globals['_WORKERGROUPSPEC']._serialized_end=2249 + _globals['_WORKERGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_start=1823 + _globals['_WORKERGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_end=1888 # @@protoc_insertion_point(module_scope) diff --git a/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.pyi b/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.pyi index 239e2fbc1ac..7606b996a99 100644 --- a/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.pyi +++ b/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.pyi @@ -1,5 +1,6 @@ from flyteidl.core import tasks_pb2 as _tasks_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, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union @@ -20,15 +21,94 @@ class RayJob(_message.Message): runtime_env_yaml: str def __init__(self, ray_cluster: _Optional[_Union[RayCluster, _Mapping]] = ..., runtime_env: _Optional[str] = ..., shutdown_after_job_finishes: bool = ..., ttl_seconds_after_finished: _Optional[int] = ..., runtime_env_yaml: _Optional[str] = ...) -> None: ... +class Resources(_message.Message): + __slots__ = ["requests", "limits"] + class ResourceName(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + CPU: _ClassVar[Resources.ResourceName] + MEMORY: _ClassVar[Resources.ResourceName] + CPU: Resources.ResourceName + MEMORY: Resources.ResourceName + class ResourceEntry(_message.Message): + __slots__ = ["name", "value"] + NAME_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + name: Resources.ResourceName + value: str + def __init__(self, name: _Optional[_Union[Resources.ResourceName, str]] = ..., value: _Optional[str] = ...) -> None: ... + REQUESTS_FIELD_NUMBER: _ClassVar[int] + LIMITS_FIELD_NUMBER: _ClassVar[int] + requests: _containers.RepeatedCompositeFieldContainer[Resources.ResourceEntry] + limits: _containers.RepeatedCompositeFieldContainer[Resources.ResourceEntry] + def __init__(self, requests: _Optional[_Iterable[_Union[Resources.ResourceEntry, _Mapping]]] = ..., limits: _Optional[_Iterable[_Union[Resources.ResourceEntry, _Mapping]]] = ...) -> None: ... + +class EnvValueFrom(_message.Message): + __slots__ = ["source", "name", "key"] + class Source(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + CONFIGMAP: _ClassVar[EnvValueFrom.Source] + SECRET: _ClassVar[EnvValueFrom.Source] + RESOURCEFIELD: _ClassVar[EnvValueFrom.Source] + FIELD: _ClassVar[EnvValueFrom.Source] + CONFIGMAP: EnvValueFrom.Source + SECRET: EnvValueFrom.Source + RESOURCEFIELD: EnvValueFrom.Source + FIELD: EnvValueFrom.Source + SOURCE_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + KEY_FIELD_NUMBER: _ClassVar[int] + source: EnvValueFrom.Source + name: str + key: str + def __init__(self, source: _Optional[_Union[EnvValueFrom.Source, str]] = ..., name: _Optional[str] = ..., key: _Optional[str] = ...) -> None: ... + +class EnvVar(_message.Message): + __slots__ = ["values", "valuesFrom"] + 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: ... + class ValuesFromEntry(_message.Message): + __slots__ = ["key", "value"] + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: EnvValueFrom + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[EnvValueFrom, _Mapping]] = ...) -> None: ... + VALUES_FIELD_NUMBER: _ClassVar[int] + VALUESFROM_FIELD_NUMBER: _ClassVar[int] + values: _containers.ScalarMap[str, str] + valuesFrom: _containers.MessageMap[str, EnvValueFrom] + def __init__(self, values: _Optional[_Mapping[str, str]] = ..., valuesFrom: _Optional[_Mapping[str, EnvValueFrom]] = ...) -> None: ... + +class AutoscalerOptions(_message.Message): + __slots__ = ["upscaling_mode", "idle_timeout_seconds", "env", "image", "resources"] + UPSCALING_MODE_FIELD_NUMBER: _ClassVar[int] + IDLE_TIMEOUT_SECONDS_FIELD_NUMBER: _ClassVar[int] + ENV_FIELD_NUMBER: _ClassVar[int] + IMAGE_FIELD_NUMBER: _ClassVar[int] + RESOURCES_FIELD_NUMBER: _ClassVar[int] + upscaling_mode: str + idle_timeout_seconds: int + env: _containers.RepeatedCompositeFieldContainer[EnvVar] + image: str + resources: Resources + def __init__(self, upscaling_mode: _Optional[str] = ..., idle_timeout_seconds: _Optional[int] = ..., env: _Optional[_Iterable[_Union[EnvVar, _Mapping]]] = ..., image: _Optional[str] = ..., resources: _Optional[_Union[Resources, _Mapping]] = ...) -> None: ... + class RayCluster(_message.Message): - __slots__ = ["head_group_spec", "worker_group_spec", "enable_autoscaling"] + __slots__ = ["head_group_spec", "worker_group_spec", "enable_autoscaling", "autoscaler_options"] HEAD_GROUP_SPEC_FIELD_NUMBER: _ClassVar[int] WORKER_GROUP_SPEC_FIELD_NUMBER: _ClassVar[int] ENABLE_AUTOSCALING_FIELD_NUMBER: _ClassVar[int] + AUTOSCALER_OPTIONS_FIELD_NUMBER: _ClassVar[int] head_group_spec: HeadGroupSpec worker_group_spec: _containers.RepeatedCompositeFieldContainer[WorkerGroupSpec] enable_autoscaling: bool - def __init__(self, head_group_spec: _Optional[_Union[HeadGroupSpec, _Mapping]] = ..., worker_group_spec: _Optional[_Iterable[_Union[WorkerGroupSpec, _Mapping]]] = ..., enable_autoscaling: bool = ...) -> None: ... + autoscaler_options: AutoscalerOptions + def __init__(self, head_group_spec: _Optional[_Union[HeadGroupSpec, _Mapping]] = ..., worker_group_spec: _Optional[_Iterable[_Union[WorkerGroupSpec, _Mapping]]] = ..., enable_autoscaling: bool = ..., autoscaler_options: _Optional[_Union[AutoscalerOptions, _Mapping]] = ...) -> None: ... class HeadGroupSpec(_message.Message): __slots__ = ["ray_start_params", "k8s_pod"] diff --git a/flyteidl/gen/pb_rust/flyteidl.plugins.rs b/flyteidl/gen/pb_rust/flyteidl.plugins.rs index 16589b3e60c..5f59f07b595 100644 --- a/flyteidl/gen/pb_rust/flyteidl.plugins.rs +++ b/flyteidl/gen/pb_rust/flyteidl.plugins.rs @@ -233,6 +233,133 @@ pub struct RayJob { #[prost(string, tag="5")] pub runtime_env_yaml: ::prost::alloc::string::String, } +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Resources { + /// The desired set of resources requested. ResourceNames must be unique within the list. + #[prost(message, repeated, tag="1")] + pub requests: ::prost::alloc::vec::Vec, + /// Defines a set of bounds (e.g. min/max) within which the task can reliably run. ResourceNames must be unique + /// within the list. + #[prost(message, repeated, tag="2")] + pub limits: ::prost::alloc::vec::Vec, +} +/// Nested message and enum types in `Resources`. +pub mod resources { + /// Encapsulates a resource name and value. + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] + pub struct ResourceEntry { + /// Resource name. + #[prost(enumeration="ResourceName", tag="1")] + pub name: i32, + /// Value must be a valid k8s quantity. See + /// + #[prost(string, tag="2")] + pub value: ::prost::alloc::string::String, + } + /// Known resource names. + #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] + #[repr(i32)] + pub enum ResourceName { + Cpu = 0, + Memory = 1, + } + impl ResourceName { + /// 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 { + ResourceName::Cpu => "CPU", + ResourceName::Memory => "MEMORY", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "CPU" => Some(Self::Cpu), + "MEMORY" => Some(Self::Memory), + _ => None, + } + } + } +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct EnvValueFrom { + #[prost(enumeration="env_value_from::Source", tag="1")] + pub source: i32, + /// Name for config map or secret, container name for resource, path for field + #[prost(string, tag="2")] + pub name: ::prost::alloc::string::String, + /// Key for config map or secret, resource name for resource + #[prost(string, tag="3")] + pub key: ::prost::alloc::string::String, +} +/// Nested message and enum types in `EnvValueFrom`. +pub mod env_value_from { + /// Source of environment variable + #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] + #[repr(i32)] + pub enum Source { + Configmap = 0, + Secret = 1, + Resourcefield = 2, + Field = 3, + } + impl Source { + /// 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 { + Source::Configmap => "CONFIGMAP", + Source::Secret => "SECRET", + Source::Resourcefield => "RESOURCEFIELD", + Source::Field => "FIELD", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "CONFIGMAP" => Some(Self::Configmap), + "SECRET" => Some(Self::Secret), + "RESOURCEFIELD" => Some(Self::Resourcefield), + "FIELD" => Some(Self::Field), + _ => None, + } + } + } +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct EnvVar { + #[prost(map="string, string", tag="1")] + pub values: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, + #[prost(map="string, message", tag="2")] + pub values_from: ::std::collections::HashMap<::prost::alloc::string::String, EnvValueFrom>, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct AutoscalerOptions { + /// "Default", "Aggressive", "Conservative" + #[prost(string, tag="1")] + pub upscaling_mode: ::prost::alloc::string::String, + #[prost(int32, tag="2")] + pub idle_timeout_seconds: i32, + /// autoscaler sidecar env vars + #[prost(message, repeated, tag="3")] + pub env: ::prost::alloc::vec::Vec, + /// custom autoscaler image + #[prost(string, tag="4")] + pub image: ::prost::alloc::string::String, + /// autoscaler container resources + #[prost(message, optional, tag="5")] + pub resources: ::core::option::Option, +} /// Define Ray cluster defines the desired state of RayCluster #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -246,6 +373,8 @@ pub struct RayCluster { /// Whether to enable autoscaling. #[prost(bool, tag="3")] pub enable_autoscaling: bool, + #[prost(message, optional, tag="4")] + pub autoscaler_options: ::core::option::Option, } /// HeadGroupSpec are the spec for the head pod #[allow(clippy::derive_partial_eq_without_eq)] From 7ed77867596b79c85830d7d716a2847a8f019e77 Mon Sep 17 00:00:00 2001 From: Yuteng Chen Date: Sun, 29 Mar 2026 10:36:16 +0800 Subject: [PATCH 05/15] Add options to ray cluster request Signed-off-by: Yuteng Chen --- flyteidl/gen/pb-go/flyteidl/plugins/ray.pb.go | 5 ++-- flyteplugins/go/tasks/plugins/k8s/ray/ray.go | 23 +++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/flyteidl/gen/pb-go/flyteidl/plugins/ray.pb.go b/flyteidl/gen/pb-go/flyteidl/plugins/ray.pb.go index 14d3a9d0c8a..b077278fdcf 100644 --- a/flyteidl/gen/pb-go/flyteidl/plugins/ray.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/plugins/ray.pb.go @@ -7,11 +7,12 @@ package plugins import ( + reflect "reflect" + sync "sync" + 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" - reflect "reflect" - sync "sync" ) const ( diff --git a/flyteplugins/go/tasks/plugins/k8s/ray/ray.go b/flyteplugins/go/tasks/plugins/k8s/ray/ray.go index 1494d6463f8..b5768c9e500 100644 --- a/flyteplugins/go/tasks/plugins/k8s/ray/ray.go +++ b/flyteplugins/go/tasks/plugins/k8s/ray/ray.go @@ -146,6 +146,28 @@ func constructRayJob(taskCtx pluginsCore.TaskExecutionContext, rayJob *plugins.R return nil, err } + var autoScalarOptions *rayv1.AutoscalerOptions + if c := rayJob.GetRayCluster(); c != nil { + if options := c.GetAutoscalerOptions(); options != nil { + autoScalarOptions = &rayv1.AutoscalerOptions{} + idleTimeoutTime := options.GetIdleTimeoutSeconds() + autoScalarOptions.IdleTimeoutSeconds = &idleTimeoutTime + if upScalingMode := options.GetUpscalingMode(); upScalingMode == "" { + mode := rayv1.UpscalingMode(upScalingMode) + autoScalarOptions.UpscalingMode = &mode + } + if image := options.GetImage(); image != "" { + autoScalarOptions.Image = &image + } + if res := options.GetResources(); res != nil { + autoScalarOptions.Resources = nil + } + if envs := options.GetEnv(); len(envs) > 0 { + autoScalarOptions.Env = nil + } + } + } + rayClusterSpec := rayv1.RayClusterSpec{ HeadGroupSpec: rayv1.HeadGroupSpec{ Template: headPodTemplate, @@ -155,6 +177,7 @@ func constructRayJob(taskCtx pluginsCore.TaskExecutionContext, rayJob *plugins.R }, WorkerGroupSpecs: []rayv1.WorkerGroupSpec{}, EnableInTreeAutoscaling: &rayJob.RayCluster.EnableAutoscaling, + AutoscalerOptions: autoScalarOptions, } for _, spec := range rayJob.GetRayCluster().GetWorkerGroupSpec() { From 4faca422d204c2a24afc067e7b629dc0fc0a9a70 Mon Sep 17 00:00:00 2001 From: Yuteng Chen Date: Sun, 29 Mar 2026 19:17:59 +0800 Subject: [PATCH 06/15] update proto Signed-off-by: Yuteng Chen --- flyteidl/gen/pb-es/flyteidl/plugins/ray_pb.ts | 16 +- flyteidl/gen/pb-go/flyteidl/plugins/ray.pb.go | 272 +++++++++--------- .../gen/pb_python/flyteidl/plugins/ray_pb2.py | 36 ++- .../pb_python/flyteidl/plugins/ray_pb2.pyi | 17 +- flyteidl/gen/pb_rust/flyteidl.plugins.rs | 8 +- flyteidl/protos/flyteidl/plugins/ray.proto | 5 +- 6 files changed, 177 insertions(+), 177 deletions(-) diff --git a/flyteidl/gen/pb-es/flyteidl/plugins/ray_pb.ts b/flyteidl/gen/pb-es/flyteidl/plugins/ray_pb.ts index da964fc8da2..58050bbe931 100644 --- a/flyteidl/gen/pb-es/flyteidl/plugins/ray_pb.ts +++ b/flyteidl/gen/pb-es/flyteidl/plugins/ray_pb.ts @@ -295,12 +295,17 @@ proto3.util.setEnumType(EnvValueFrom_Source, "flyteidl.plugins.EnvValueFrom.Sour */ export class EnvVar extends Message { /** - * @generated from field: map values = 1; + * @generated from field: string name = 1; */ - values: { [key: string]: string } = {}; + name = ""; /** - * @generated from field: map valuesFrom = 2; + * @generated from field: string value = 2; + */ + value = ""; + + /** + * @generated from field: map valuesFrom = 3; */ valuesFrom: { [key: string]: EnvValueFrom } = {}; @@ -312,8 +317,9 @@ export class EnvVar extends Message { static readonly runtime: typeof proto3 = proto3; static readonly typeName = "flyteidl.plugins.EnvVar"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "values", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "scalar", T: 9 /* ScalarType.STRING */} }, - { no: 2, name: "valuesFrom", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "message", T: EnvValueFrom} }, + { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "value", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "valuesFrom", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "message", T: EnvValueFrom} }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): EnvVar { diff --git a/flyteidl/gen/pb-go/flyteidl/plugins/ray.pb.go b/flyteidl/gen/pb-go/flyteidl/plugins/ray.pb.go index b077278fdcf..6c805a49329 100644 --- a/flyteidl/gen/pb-go/flyteidl/plugins/ray.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/plugins/ray.pb.go @@ -7,12 +7,11 @@ package plugins import ( - reflect "reflect" - sync "sync" - 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" + reflect "reflect" + sync "sync" ) const ( @@ -340,8 +339,9 @@ type EnvVar struct { 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"` - ValuesFrom map[string]*EnvValueFrom `protobuf:"bytes,2,rep,name=valuesFrom,proto3" json:"valuesFrom,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + ValuesFrom map[string]*EnvValueFrom `protobuf:"bytes,3,rep,name=valuesFrom,proto3" json:"valuesFrom,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *EnvVar) Reset() { @@ -376,11 +376,18 @@ func (*EnvVar) Descriptor() ([]byte, []int) { return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{3} } -func (x *EnvVar) GetValues() map[string]string { +func (x *EnvVar) GetName() string { if x != nil { - return x.Values + return x.Name } - return nil + return "" +} + +func (x *EnvVar) GetValue() string { + if x != nil { + return x.Value + } + return "" } func (x *EnvVar) GetValuesFrom() map[string]*EnvValueFrom { @@ -815,109 +822,104 @@ var file_flyteidl_plugins_ray_proto_rawDesc = []byte{ 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x4d, 0x41, 0x50, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x45, 0x43, 0x52, 0x45, 0x54, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x10, 0x02, 0x12, 0x09, - 0x0a, 0x05, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x10, 0x03, 0x22, 0xaa, 0x02, 0x0a, 0x06, 0x45, 0x6e, - 0x76, 0x56, 0x61, 0x72, 0x12, 0x3c, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, - 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x2e, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x12, 0x48, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, - 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, 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, 0x1a, 0x5d, 0x0a, 0x0f, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x46, 0x72, 0x6f, 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, 0x34, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x45, - 0x6e, 0x76, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe9, 0x01, 0x0a, 0x11, 0x41, 0x75, 0x74, 0x6f, 0x73, - 0x63, 0x61, 0x6c, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0e, - 0x75, 0x70, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x75, 0x70, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x4d, - 0x6f, 0x64, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x12, 0x69, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, - 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x2a, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x52, 0x03, 0x65, 0x6e, - 0x76, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x39, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x22, 0xa7, 0x02, 0x0a, 0x0a, 0x52, 0x61, 0x79, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x12, 0x47, 0x0a, 0x0f, 0x68, 0x65, 0x61, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, - 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x48, 0x65, - 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0d, 0x68, 0x65, 0x61, - 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x4d, 0x0a, 0x11, 0x77, 0x6f, - 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0f, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x2d, 0x0a, 0x12, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x75, 0x74, - 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x52, 0x0a, 0x12, 0x61, 0x75, 0x74, 0x6f, - 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, - 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, - 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x11, 0x61, 0x75, 0x74, 0x6f, 0x73, - 0x63, 0x61, 0x6c, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xe1, 0x01, 0x0a, - 0x0d, 0x48, 0x65, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x5d, - 0x0a, 0x10, 0x72, 0x61, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x52, 0x61, 0x79, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, - 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2e, 0x0a, - 0x07, 0x6b, 0x38, 0x73, 0x5f, 0x70, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4b, - 0x38, 0x73, 0x50, 0x6f, 0x64, 0x52, 0x06, 0x6b, 0x38, 0x73, 0x50, 0x6f, 0x64, 0x1a, 0x41, 0x0a, - 0x13, 0x52, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 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, 0xe6, 0x02, 0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x53, 0x70, 0x65, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, - 0x21, 0x0a, 0x0c, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x5f, 0x0a, 0x10, 0x72, 0x61, 0x79, 0x5f, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x35, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, - 0x6e, 0x73, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, - 0x65, 0x63, 0x2e, 0x52, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2e, 0x0a, 0x07, 0x6b, 0x38, 0x73, 0x5f, 0x70, 0x6f, - 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4b, 0x38, 0x73, 0x50, 0x6f, 0x64, 0x52, 0x06, - 0x6b, 0x38, 0x73, 0x50, 0x6f, 0x64, 0x1a, 0x41, 0x0a, 0x13, 0x52, 0x61, 0x79, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 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, 0x42, 0xc0, 0x01, 0x0a, 0x14, 0x63, 0x6f, - 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, - 0x6e, 0x73, 0x42, 0x08, 0x52, 0x61, 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, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0xa2, 0x02, 0x03, - 0x46, 0x50, 0x58, 0xaa, 0x02, 0x10, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x50, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0xca, 0x02, 0x10, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x5c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0xe2, 0x02, 0x1c, 0x46, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 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, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x0a, 0x05, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x10, 0x03, 0x22, 0xdb, 0x01, 0x0a, 0x06, 0x45, 0x6e, + 0x76, 0x56, 0x61, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x48, + 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, + 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x2e, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x1a, 0x5d, 0x0a, 0x0f, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x46, 0x72, 0x6f, 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, 0x34, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, + 0x45, 0x6e, 0x76, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe9, 0x01, 0x0a, 0x11, 0x41, 0x75, 0x74, 0x6f, + 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x0a, + 0x0e, 0x75, 0x70, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x75, 0x70, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, + 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x12, 0x69, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, + 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x2a, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, + 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x52, 0x03, 0x65, + 0x6e, 0x76, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x39, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x22, 0xa7, 0x02, 0x0a, 0x0a, 0x52, 0x61, 0x79, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x12, 0x47, 0x0a, 0x0f, 0x68, 0x65, 0x61, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x48, + 0x65, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0d, 0x68, 0x65, + 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x4d, 0x0a, 0x11, 0x77, + 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x70, 0x65, 0x63, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0f, 0x77, 0x6f, 0x72, 0x6b, 0x65, + 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x2d, 0x0a, 0x12, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x75, + 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x52, 0x0a, 0x12, 0x61, 0x75, 0x74, + 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, + 0x6c, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x11, 0x61, 0x75, 0x74, 0x6f, + 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xe1, 0x01, + 0x0a, 0x0d, 0x48, 0x65, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, + 0x5d, 0x0a, 0x10, 0x72, 0x61, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x48, 0x65, 0x61, + 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x52, 0x61, 0x79, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, + 0x72, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2e, + 0x0a, 0x07, 0x6b, 0x38, 0x73, 0x5f, 0x70, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x4b, 0x38, 0x73, 0x50, 0x6f, 0x64, 0x52, 0x06, 0x6b, 0x38, 0x73, 0x50, 0x6f, 0x64, 0x1a, 0x41, + 0x0a, 0x13, 0x52, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 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, 0xe6, 0x02, 0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, + 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x52, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x5f, 0x0a, 0x10, 0x72, 0x61, 0x79, 0x5f, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x35, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, + 0x69, 0x6e, 0x73, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, + 0x70, 0x65, 0x63, 0x2e, 0x52, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2e, 0x0a, 0x07, 0x6b, 0x38, 0x73, 0x5f, 0x70, + 0x6f, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4b, 0x38, 0x73, 0x50, 0x6f, 0x64, 0x52, + 0x06, 0x6b, 0x38, 0x73, 0x50, 0x6f, 0x64, 0x1a, 0x41, 0x0a, 0x13, 0x52, 0x61, 0x79, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 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, 0x42, 0xc0, 0x01, 0x0a, 0x14, 0x63, + 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, + 0x69, 0x6e, 0x73, 0x42, 0x08, 0x52, 0x61, 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, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0xa2, 0x02, + 0x03, 0x46, 0x50, 0x58, 0xaa, 0x02, 0x10, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, + 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0xca, 0x02, 0x10, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x5c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0xe2, 0x02, 0x1c, 0x46, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 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, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -933,7 +935,7 @@ func file_flyteidl_plugins_ray_proto_rawDescGZIP() []byte { } var file_flyteidl_plugins_ray_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_flyteidl_plugins_ray_proto_msgTypes = make([]protoimpl.MessageInfo, 13) +var file_flyteidl_plugins_ray_proto_msgTypes = make([]protoimpl.MessageInfo, 12) var file_flyteidl_plugins_ray_proto_goTypes = []interface{}{ (Resources_ResourceName)(0), // 0: flyteidl.plugins.Resources.ResourceName (EnvValueFrom_Source)(0), // 1: flyteidl.plugins.EnvValueFrom.Source @@ -946,35 +948,33 @@ var file_flyteidl_plugins_ray_proto_goTypes = []interface{}{ (*HeadGroupSpec)(nil), // 8: flyteidl.plugins.HeadGroupSpec (*WorkerGroupSpec)(nil), // 9: flyteidl.plugins.WorkerGroupSpec (*Resources_ResourceEntry)(nil), // 10: flyteidl.plugins.Resources.ResourceEntry - nil, // 11: flyteidl.plugins.EnvVar.ValuesEntry - nil, // 12: flyteidl.plugins.EnvVar.ValuesFromEntry - nil, // 13: flyteidl.plugins.HeadGroupSpec.RayStartParamsEntry - nil, // 14: flyteidl.plugins.WorkerGroupSpec.RayStartParamsEntry - (*core.K8SPod)(nil), // 15: flyteidl.core.K8sPod + nil, // 11: flyteidl.plugins.EnvVar.ValuesFromEntry + nil, // 12: flyteidl.plugins.HeadGroupSpec.RayStartParamsEntry + nil, // 13: flyteidl.plugins.WorkerGroupSpec.RayStartParamsEntry + (*core.K8SPod)(nil), // 14: flyteidl.core.K8sPod } var file_flyteidl_plugins_ray_proto_depIdxs = []int32{ 7, // 0: flyteidl.plugins.RayJob.ray_cluster:type_name -> flyteidl.plugins.RayCluster 10, // 1: flyteidl.plugins.Resources.requests:type_name -> flyteidl.plugins.Resources.ResourceEntry 10, // 2: flyteidl.plugins.Resources.limits:type_name -> flyteidl.plugins.Resources.ResourceEntry 1, // 3: flyteidl.plugins.EnvValueFrom.source:type_name -> flyteidl.plugins.EnvValueFrom.Source - 11, // 4: flyteidl.plugins.EnvVar.values:type_name -> flyteidl.plugins.EnvVar.ValuesEntry - 12, // 5: flyteidl.plugins.EnvVar.valuesFrom:type_name -> flyteidl.plugins.EnvVar.ValuesFromEntry - 5, // 6: flyteidl.plugins.AutoscalerOptions.env:type_name -> flyteidl.plugins.EnvVar - 3, // 7: flyteidl.plugins.AutoscalerOptions.resources:type_name -> flyteidl.plugins.Resources - 8, // 8: flyteidl.plugins.RayCluster.head_group_spec:type_name -> flyteidl.plugins.HeadGroupSpec - 9, // 9: flyteidl.plugins.RayCluster.worker_group_spec:type_name -> flyteidl.plugins.WorkerGroupSpec - 6, // 10: flyteidl.plugins.RayCluster.autoscaler_options:type_name -> flyteidl.plugins.AutoscalerOptions - 13, // 11: flyteidl.plugins.HeadGroupSpec.ray_start_params:type_name -> flyteidl.plugins.HeadGroupSpec.RayStartParamsEntry - 15, // 12: flyteidl.plugins.HeadGroupSpec.k8s_pod:type_name -> flyteidl.core.K8sPod - 14, // 13: flyteidl.plugins.WorkerGroupSpec.ray_start_params:type_name -> flyteidl.plugins.WorkerGroupSpec.RayStartParamsEntry - 15, // 14: flyteidl.plugins.WorkerGroupSpec.k8s_pod:type_name -> flyteidl.core.K8sPod - 0, // 15: flyteidl.plugins.Resources.ResourceEntry.name:type_name -> flyteidl.plugins.Resources.ResourceName - 4, // 16: flyteidl.plugins.EnvVar.ValuesFromEntry.value:type_name -> flyteidl.plugins.EnvValueFrom - 17, // [17:17] is the sub-list for method output_type - 17, // [17:17] is the sub-list for method input_type - 17, // [17:17] is the sub-list for extension type_name - 17, // [17:17] is the sub-list for extension extendee - 0, // [0:17] is the sub-list for field type_name + 11, // 4: flyteidl.plugins.EnvVar.valuesFrom:type_name -> flyteidl.plugins.EnvVar.ValuesFromEntry + 5, // 5: flyteidl.plugins.AutoscalerOptions.env:type_name -> flyteidl.plugins.EnvVar + 3, // 6: flyteidl.plugins.AutoscalerOptions.resources:type_name -> flyteidl.plugins.Resources + 8, // 7: flyteidl.plugins.RayCluster.head_group_spec:type_name -> flyteidl.plugins.HeadGroupSpec + 9, // 8: flyteidl.plugins.RayCluster.worker_group_spec:type_name -> flyteidl.plugins.WorkerGroupSpec + 6, // 9: flyteidl.plugins.RayCluster.autoscaler_options:type_name -> flyteidl.plugins.AutoscalerOptions + 12, // 10: flyteidl.plugins.HeadGroupSpec.ray_start_params:type_name -> flyteidl.plugins.HeadGroupSpec.RayStartParamsEntry + 14, // 11: flyteidl.plugins.HeadGroupSpec.k8s_pod:type_name -> flyteidl.core.K8sPod + 13, // 12: flyteidl.plugins.WorkerGroupSpec.ray_start_params:type_name -> flyteidl.plugins.WorkerGroupSpec.RayStartParamsEntry + 14, // 13: flyteidl.plugins.WorkerGroupSpec.k8s_pod:type_name -> flyteidl.core.K8sPod + 0, // 14: flyteidl.plugins.Resources.ResourceEntry.name:type_name -> flyteidl.plugins.Resources.ResourceName + 4, // 15: flyteidl.plugins.EnvVar.ValuesFromEntry.value:type_name -> flyteidl.plugins.EnvValueFrom + 16, // [16:16] is the sub-list for method output_type + 16, // [16:16] is the sub-list for method input_type + 16, // [16:16] is the sub-list for extension type_name + 16, // [16:16] is the sub-list for extension extendee + 0, // [0:16] is the sub-list for field type_name } func init() { file_flyteidl_plugins_ray_proto_init() } @@ -1098,7 +1098,7 @@ func file_flyteidl_plugins_ray_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_flyteidl_plugins_ray_proto_rawDesc, NumEnums: 2, - NumMessages: 13, + NumMessages: 12, NumExtensions: 0, NumServices: 0, }, diff --git a/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.py b/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.py index 23d172734fb..0ad54305c57 100644 --- a/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.py @@ -14,7 +14,7 @@ from flyteidl.core import tasks_pb2 as flyteidl_dot_core_dot_tasks__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1a\x66lyteidl/plugins/ray.proto\x12\x10\x66lyteidl.plugins\x1a\x19\x66lyteidl/core/tasks.proto\"\x92\x02\n\x06RayJob\x12=\n\x0bray_cluster\x18\x01 \x01(\x0b\x32\x1c.flyteidl.plugins.RayClusterR\nrayCluster\x12#\n\x0bruntime_env\x18\x02 \x01(\tB\x02\x18\x01R\nruntimeEnv\x12=\n\x1bshutdown_after_job_finishes\x18\x03 \x01(\x08R\x18shutdownAfterJobFinishes\x12;\n\x1attl_seconds_after_finished\x18\x04 \x01(\x05R\x17ttlSecondsAfterFinished\x12(\n\x10runtime_env_yaml\x18\x05 \x01(\tR\x0eruntimeEnvYaml\"\x9f\x02\n\tResources\x12\x45\n\x08requests\x18\x01 \x03(\x0b\x32).flyteidl.plugins.Resources.ResourceEntryR\x08requests\x12\x41\n\x06limits\x18\x02 \x03(\x0b\x32).flyteidl.plugins.Resources.ResourceEntryR\x06limits\x1a\x63\n\rResourceEntry\x12<\n\x04name\x18\x01 \x01(\x0e\x32(.flyteidl.plugins.Resources.ResourceNameR\x04name\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value\"#\n\x0cResourceName\x12\x07\n\x03\x43PU\x10\x00\x12\n\n\x06MEMORY\x10\x01\"\xb6\x01\n\x0c\x45nvValueFrom\x12=\n\x06source\x18\x01 \x01(\x0e\x32%.flyteidl.plugins.EnvValueFrom.SourceR\x06source\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x10\n\x03key\x18\x03 \x01(\tR\x03key\"A\n\x06Source\x12\r\n\tCONFIGMAP\x10\x00\x12\n\n\x06SECRET\x10\x01\x12\x11\n\rRESOURCEFIELD\x10\x02\x12\t\n\x05\x46IELD\x10\x03\"\xaa\x02\n\x06\x45nvVar\x12<\n\x06values\x18\x01 \x03(\x0b\x32$.flyteidl.plugins.EnvVar.ValuesEntryR\x06values\x12H\n\nvaluesFrom\x18\x02 \x03(\x0b\x32(.flyteidl.plugins.EnvVar.ValuesFromEntryR\nvaluesFrom\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\x1a]\n\x0fValuesFromEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x34\n\x05value\x18\x02 \x01(\x0b\x32\x1e.flyteidl.plugins.EnvValueFromR\x05value:\x02\x38\x01\"\xe9\x01\n\x11\x41utoscalerOptions\x12%\n\x0eupscaling_mode\x18\x01 \x01(\tR\rupscalingMode\x12\x30\n\x14idle_timeout_seconds\x18\x02 \x01(\x05R\x12idleTimeoutSeconds\x12*\n\x03\x65nv\x18\x03 \x03(\x0b\x32\x18.flyteidl.plugins.EnvVarR\x03\x65nv\x12\x14\n\x05image\x18\x04 \x01(\tR\x05image\x12\x39\n\tresources\x18\x05 \x01(\x0b\x32\x1b.flyteidl.plugins.ResourcesR\tresources\"\xa7\x02\n\nRayCluster\x12G\n\x0fhead_group_spec\x18\x01 \x01(\x0b\x32\x1f.flyteidl.plugins.HeadGroupSpecR\rheadGroupSpec\x12M\n\x11worker_group_spec\x18\x02 \x03(\x0b\x32!.flyteidl.plugins.WorkerGroupSpecR\x0fworkerGroupSpec\x12-\n\x12\x65nable_autoscaling\x18\x03 \x01(\x08R\x11\x65nableAutoscaling\x12R\n\x12\x61utoscaler_options\x18\x04 \x01(\x0b\x32#.flyteidl.plugins.AutoscalerOptionsR\x11\x61utoscalerOptions\"\xe1\x01\n\rHeadGroupSpec\x12]\n\x10ray_start_params\x18\x01 \x03(\x0b\x32\x33.flyteidl.plugins.HeadGroupSpec.RayStartParamsEntryR\x0erayStartParams\x12.\n\x07k8s_pod\x18\x02 \x01(\x0b\x32\x15.flyteidl.core.K8sPodR\x06k8sPod\x1a\x41\n\x13RayStartParamsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xe6\x02\n\x0fWorkerGroupSpec\x12\x1d\n\ngroup_name\x18\x01 \x01(\tR\tgroupName\x12\x1a\n\x08replicas\x18\x02 \x01(\x05R\x08replicas\x12!\n\x0cmin_replicas\x18\x03 \x01(\x05R\x0bminReplicas\x12!\n\x0cmax_replicas\x18\x04 \x01(\x05R\x0bmaxReplicas\x12_\n\x10ray_start_params\x18\x05 \x03(\x0b\x32\x35.flyteidl.plugins.WorkerGroupSpec.RayStartParamsEntryR\x0erayStartParams\x12.\n\x07k8s_pod\x18\x06 \x01(\x0b\x32\x15.flyteidl.core.K8sPodR\x06k8sPod\x1a\x41\n\x13RayStartParamsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\xc0\x01\n\x14\x63om.flyteidl.pluginsB\x08RayProtoP\x01Z=github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/plugins\xa2\x02\x03\x46PX\xaa\x02\x10\x46lyteidl.Plugins\xca\x02\x10\x46lyteidl\\Plugins\xe2\x02\x1c\x46lyteidl\\Plugins\\GPBMetadata\xea\x02\x11\x46lyteidl::Pluginsb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1a\x66lyteidl/plugins/ray.proto\x12\x10\x66lyteidl.plugins\x1a\x19\x66lyteidl/core/tasks.proto\"\x92\x02\n\x06RayJob\x12=\n\x0bray_cluster\x18\x01 \x01(\x0b\x32\x1c.flyteidl.plugins.RayClusterR\nrayCluster\x12#\n\x0bruntime_env\x18\x02 \x01(\tB\x02\x18\x01R\nruntimeEnv\x12=\n\x1bshutdown_after_job_finishes\x18\x03 \x01(\x08R\x18shutdownAfterJobFinishes\x12;\n\x1attl_seconds_after_finished\x18\x04 \x01(\x05R\x17ttlSecondsAfterFinished\x12(\n\x10runtime_env_yaml\x18\x05 \x01(\tR\x0eruntimeEnvYaml\"\x9f\x02\n\tResources\x12\x45\n\x08requests\x18\x01 \x03(\x0b\x32).flyteidl.plugins.Resources.ResourceEntryR\x08requests\x12\x41\n\x06limits\x18\x02 \x03(\x0b\x32).flyteidl.plugins.Resources.ResourceEntryR\x06limits\x1a\x63\n\rResourceEntry\x12<\n\x04name\x18\x01 \x01(\x0e\x32(.flyteidl.plugins.Resources.ResourceNameR\x04name\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value\"#\n\x0cResourceName\x12\x07\n\x03\x43PU\x10\x00\x12\n\n\x06MEMORY\x10\x01\"\xb6\x01\n\x0c\x45nvValueFrom\x12=\n\x06source\x18\x01 \x01(\x0e\x32%.flyteidl.plugins.EnvValueFrom.SourceR\x06source\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x10\n\x03key\x18\x03 \x01(\tR\x03key\"A\n\x06Source\x12\r\n\tCONFIGMAP\x10\x00\x12\n\n\x06SECRET\x10\x01\x12\x11\n\rRESOURCEFIELD\x10\x02\x12\t\n\x05\x46IELD\x10\x03\"\xdb\x01\n\x06\x45nvVar\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value\x12H\n\nvaluesFrom\x18\x03 \x03(\x0b\x32(.flyteidl.plugins.EnvVar.ValuesFromEntryR\nvaluesFrom\x1a]\n\x0fValuesFromEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x34\n\x05value\x18\x02 \x01(\x0b\x32\x1e.flyteidl.plugins.EnvValueFromR\x05value:\x02\x38\x01\"\xe9\x01\n\x11\x41utoscalerOptions\x12%\n\x0eupscaling_mode\x18\x01 \x01(\tR\rupscalingMode\x12\x30\n\x14idle_timeout_seconds\x18\x02 \x01(\x05R\x12idleTimeoutSeconds\x12*\n\x03\x65nv\x18\x03 \x03(\x0b\x32\x18.flyteidl.plugins.EnvVarR\x03\x65nv\x12\x14\n\x05image\x18\x04 \x01(\tR\x05image\x12\x39\n\tresources\x18\x05 \x01(\x0b\x32\x1b.flyteidl.plugins.ResourcesR\tresources\"\xa7\x02\n\nRayCluster\x12G\n\x0fhead_group_spec\x18\x01 \x01(\x0b\x32\x1f.flyteidl.plugins.HeadGroupSpecR\rheadGroupSpec\x12M\n\x11worker_group_spec\x18\x02 \x03(\x0b\x32!.flyteidl.plugins.WorkerGroupSpecR\x0fworkerGroupSpec\x12-\n\x12\x65nable_autoscaling\x18\x03 \x01(\x08R\x11\x65nableAutoscaling\x12R\n\x12\x61utoscaler_options\x18\x04 \x01(\x0b\x32#.flyteidl.plugins.AutoscalerOptionsR\x11\x61utoscalerOptions\"\xe1\x01\n\rHeadGroupSpec\x12]\n\x10ray_start_params\x18\x01 \x03(\x0b\x32\x33.flyteidl.plugins.HeadGroupSpec.RayStartParamsEntryR\x0erayStartParams\x12.\n\x07k8s_pod\x18\x02 \x01(\x0b\x32\x15.flyteidl.core.K8sPodR\x06k8sPod\x1a\x41\n\x13RayStartParamsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xe6\x02\n\x0fWorkerGroupSpec\x12\x1d\n\ngroup_name\x18\x01 \x01(\tR\tgroupName\x12\x1a\n\x08replicas\x18\x02 \x01(\x05R\x08replicas\x12!\n\x0cmin_replicas\x18\x03 \x01(\x05R\x0bminReplicas\x12!\n\x0cmax_replicas\x18\x04 \x01(\x05R\x0bmaxReplicas\x12_\n\x10ray_start_params\x18\x05 \x03(\x0b\x32\x35.flyteidl.plugins.WorkerGroupSpec.RayStartParamsEntryR\x0erayStartParams\x12.\n\x07k8s_pod\x18\x06 \x01(\x0b\x32\x15.flyteidl.core.K8sPodR\x06k8sPod\x1a\x41\n\x13RayStartParamsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\xc0\x01\n\x14\x63om.flyteidl.pluginsB\x08RayProtoP\x01Z=github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/plugins\xa2\x02\x03\x46PX\xaa\x02\x10\x46lyteidl.Plugins\xca\x02\x10\x46lyteidl\\Plugins\xe2\x02\x1c\x46lyteidl\\Plugins\\GPBMetadata\xea\x02\x11\x46lyteidl::Pluginsb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -25,8 +25,6 @@ DESCRIPTOR._serialized_options = b'\n\024com.flyteidl.pluginsB\010RayProtoP\001Z=github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/plugins\242\002\003FPX\252\002\020Flyteidl.Plugins\312\002\020Flyteidl\\Plugins\342\002\034Flyteidl\\Plugins\\GPBMetadata\352\002\021Flyteidl::Plugins' _RAYJOB.fields_by_name['runtime_env']._options = None _RAYJOB.fields_by_name['runtime_env']._serialized_options = b'\030\001' - _ENVVAR_VALUESENTRY._options = None - _ENVVAR_VALUESENTRY._serialized_options = b'8\001' _ENVVAR_VALUESFROMENTRY._options = None _ENVVAR_VALUESFROMENTRY._serialized_options = b'8\001' _HEADGROUPSPEC_RAYSTARTPARAMSENTRY._options = None @@ -46,21 +44,19 @@ _globals['_ENVVALUEFROM_SOURCE']._serialized_start=760 _globals['_ENVVALUEFROM_SOURCE']._serialized_end=825 _globals['_ENVVAR']._serialized_start=828 - _globals['_ENVVAR']._serialized_end=1126 - _globals['_ENVVAR_VALUESENTRY']._serialized_start=974 - _globals['_ENVVAR_VALUESENTRY']._serialized_end=1031 - _globals['_ENVVAR_VALUESFROMENTRY']._serialized_start=1033 - _globals['_ENVVAR_VALUESFROMENTRY']._serialized_end=1126 - _globals['_AUTOSCALEROPTIONS']._serialized_start=1129 - _globals['_AUTOSCALEROPTIONS']._serialized_end=1362 - _globals['_RAYCLUSTER']._serialized_start=1365 - _globals['_RAYCLUSTER']._serialized_end=1660 - _globals['_HEADGROUPSPEC']._serialized_start=1663 - _globals['_HEADGROUPSPEC']._serialized_end=1888 - _globals['_HEADGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_start=1823 - _globals['_HEADGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_end=1888 - _globals['_WORKERGROUPSPEC']._serialized_start=1891 - _globals['_WORKERGROUPSPEC']._serialized_end=2249 - _globals['_WORKERGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_start=1823 - _globals['_WORKERGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_end=1888 + _globals['_ENVVAR']._serialized_end=1047 + _globals['_ENVVAR_VALUESFROMENTRY']._serialized_start=954 + _globals['_ENVVAR_VALUESFROMENTRY']._serialized_end=1047 + _globals['_AUTOSCALEROPTIONS']._serialized_start=1050 + _globals['_AUTOSCALEROPTIONS']._serialized_end=1283 + _globals['_RAYCLUSTER']._serialized_start=1286 + _globals['_RAYCLUSTER']._serialized_end=1581 + _globals['_HEADGROUPSPEC']._serialized_start=1584 + _globals['_HEADGROUPSPEC']._serialized_end=1809 + _globals['_HEADGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_start=1744 + _globals['_HEADGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_end=1809 + _globals['_WORKERGROUPSPEC']._serialized_start=1812 + _globals['_WORKERGROUPSPEC']._serialized_end=2170 + _globals['_WORKERGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_start=1744 + _globals['_WORKERGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_end=1809 # @@protoc_insertion_point(module_scope) diff --git a/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.pyi b/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.pyi index 7606b996a99..283e7bcaf25 100644 --- a/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.pyi +++ b/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.pyi @@ -63,14 +63,7 @@ class EnvValueFrom(_message.Message): def __init__(self, source: _Optional[_Union[EnvValueFrom.Source, str]] = ..., name: _Optional[str] = ..., key: _Optional[str] = ...) -> None: ... class EnvVar(_message.Message): - __slots__ = ["values", "valuesFrom"] - 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: ... + __slots__ = ["name", "value", "valuesFrom"] class ValuesFromEntry(_message.Message): __slots__ = ["key", "value"] KEY_FIELD_NUMBER: _ClassVar[int] @@ -78,11 +71,13 @@ class EnvVar(_message.Message): key: str value: EnvValueFrom def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[EnvValueFrom, _Mapping]] = ...) -> None: ... - VALUES_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] VALUESFROM_FIELD_NUMBER: _ClassVar[int] - values: _containers.ScalarMap[str, str] + name: str + value: str valuesFrom: _containers.MessageMap[str, EnvValueFrom] - def __init__(self, values: _Optional[_Mapping[str, str]] = ..., valuesFrom: _Optional[_Mapping[str, EnvValueFrom]] = ...) -> None: ... + def __init__(self, name: _Optional[str] = ..., value: _Optional[str] = ..., valuesFrom: _Optional[_Mapping[str, EnvValueFrom]] = ...) -> None: ... class AutoscalerOptions(_message.Message): __slots__ = ["upscaling_mode", "idle_timeout_seconds", "env", "image", "resources"] diff --git a/flyteidl/gen/pb_rust/flyteidl.plugins.rs b/flyteidl/gen/pb_rust/flyteidl.plugins.rs index 5f59f07b595..47346edb2d4 100644 --- a/flyteidl/gen/pb_rust/flyteidl.plugins.rs +++ b/flyteidl/gen/pb_rust/flyteidl.plugins.rs @@ -337,9 +337,11 @@ pub mod env_value_from { #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct EnvVar { - #[prost(map="string, string", tag="1")] - pub values: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, - #[prost(map="string, message", tag="2")] + #[prost(string, tag="1")] + pub name: ::prost::alloc::string::String, + #[prost(string, tag="2")] + pub value: ::prost::alloc::string::String, + #[prost(map="string, message", tag="3")] pub values_from: ::std::collections::HashMap<::prost::alloc::string::String, EnvValueFrom>, } #[allow(clippy::derive_partial_eq_without_eq)] diff --git a/flyteidl/protos/flyteidl/plugins/ray.proto b/flyteidl/protos/flyteidl/plugins/ray.proto index 12f806b0488..5c7c55016f4 100644 --- a/flyteidl/protos/flyteidl/plugins/ray.proto +++ b/flyteidl/protos/flyteidl/plugins/ray.proto @@ -63,8 +63,9 @@ message EnvValueFrom { } message EnvVar { - map values = 1; - map valuesFrom = 2; + string name = 1; + string value = 2; + map valuesFrom = 3; } message AutoscalerOptions { From 15163b5eee720de74e9762bec60bee363e02a609 Mon Sep 17 00:00:00 2001 From: Yuteng Chen Date: Sun, 29 Mar 2026 20:39:05 +0800 Subject: [PATCH 07/15] envvar added Signed-off-by: Yuteng Chen --- flyteidl/gen/pb-es/flyteidl/plugins/ray_pb.ts | 6 +- flyteidl/gen/pb-go/flyteidl/plugins/ray.pb.go | 231 +++++++++--------- .../gen/pb_python/flyteidl/plugins/ray_pb2.py | 34 ++- .../pb_python/flyteidl/plugins/ray_pb2.pyi | 15 +- flyteidl/gen/pb_rust/flyteidl.plugins.rs | 4 +- flyteidl/protos/flyteidl/plugins/ray.proto | 2 +- flyteplugins/go/tasks/plugins/k8s/ray/ray.go | 90 +++++-- 7 files changed, 208 insertions(+), 174 deletions(-) diff --git a/flyteidl/gen/pb-es/flyteidl/plugins/ray_pb.ts b/flyteidl/gen/pb-es/flyteidl/plugins/ray_pb.ts index 58050bbe931..0109d6213e3 100644 --- a/flyteidl/gen/pb-es/flyteidl/plugins/ray_pb.ts +++ b/flyteidl/gen/pb-es/flyteidl/plugins/ray_pb.ts @@ -305,9 +305,9 @@ export class EnvVar extends Message { value = ""; /** - * @generated from field: map valuesFrom = 3; + * @generated from field: flyteidl.plugins.EnvValueFrom valueFrom = 3; */ - valuesFrom: { [key: string]: EnvValueFrom } = {}; + valueFrom?: EnvValueFrom; constructor(data?: PartialMessage) { super(); @@ -319,7 +319,7 @@ export class EnvVar extends Message { static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, { no: 2, name: "value", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 3, name: "valuesFrom", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "message", T: EnvValueFrom} }, + { no: 3, name: "valueFrom", kind: "message", T: EnvValueFrom }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): EnvVar { diff --git a/flyteidl/gen/pb-go/flyteidl/plugins/ray.pb.go b/flyteidl/gen/pb-go/flyteidl/plugins/ray.pb.go index 6c805a49329..646244b9b20 100644 --- a/flyteidl/gen/pb-go/flyteidl/plugins/ray.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/plugins/ray.pb.go @@ -339,9 +339,9 @@ type EnvVar struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` - ValuesFrom map[string]*EnvValueFrom `protobuf:"bytes,3,rep,name=valuesFrom,proto3" json:"valuesFrom,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + ValueFrom *EnvValueFrom `protobuf:"bytes,3,opt,name=valueFrom,proto3" json:"valueFrom,omitempty"` } func (x *EnvVar) Reset() { @@ -390,9 +390,9 @@ func (x *EnvVar) GetValue() string { return "" } -func (x *EnvVar) GetValuesFrom() map[string]*EnvValueFrom { +func (x *EnvVar) GetValueFrom() *EnvValueFrom { if x != nil { - return x.ValuesFrom + return x.ValueFrom } return nil } @@ -822,104 +822,97 @@ var file_flyteidl_plugins_ray_proto_rawDesc = []byte{ 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x4d, 0x41, 0x50, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x45, 0x43, 0x52, 0x45, 0x54, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x10, 0x02, 0x12, 0x09, - 0x0a, 0x05, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x10, 0x03, 0x22, 0xdb, 0x01, 0x0a, 0x06, 0x45, 0x6e, - 0x76, 0x56, 0x61, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x48, - 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x2e, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x1a, 0x5d, 0x0a, 0x0f, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x46, 0x72, 0x6f, 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, 0x34, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, - 0x45, 0x6e, 0x76, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe9, 0x01, 0x0a, 0x11, 0x41, 0x75, 0x74, 0x6f, - 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x0a, - 0x0e, 0x75, 0x70, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x75, 0x70, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, - 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x12, 0x69, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, - 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x2a, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x52, 0x03, 0x65, - 0x6e, 0x76, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x39, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x22, 0xa7, 0x02, 0x0a, 0x0a, 0x52, 0x61, 0x79, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x12, 0x47, 0x0a, 0x0f, 0x68, 0x65, 0x61, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x48, - 0x65, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0d, 0x68, 0x65, - 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x4d, 0x0a, 0x11, 0x77, - 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x70, 0x65, 0x63, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0f, 0x77, 0x6f, 0x72, 0x6b, 0x65, - 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x2d, 0x0a, 0x12, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x75, - 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x52, 0x0a, 0x12, 0x61, 0x75, 0x74, - 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, - 0x6c, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x11, 0x61, 0x75, 0x74, 0x6f, - 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xe1, 0x01, - 0x0a, 0x0d, 0x48, 0x65, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, - 0x5d, 0x0a, 0x10, 0x72, 0x61, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x70, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x48, 0x65, 0x61, - 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x52, 0x61, 0x79, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, - 0x72, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2e, - 0x0a, 0x07, 0x6b, 0x38, 0x73, 0x5f, 0x70, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x4b, 0x38, 0x73, 0x50, 0x6f, 0x64, 0x52, 0x06, 0x6b, 0x38, 0x73, 0x50, 0x6f, 0x64, 0x1a, 0x41, - 0x0a, 0x13, 0x52, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 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, 0xe6, 0x02, 0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, - 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x52, 0x65, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x5f, 0x0a, 0x10, 0x72, 0x61, 0x79, 0x5f, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x35, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, - 0x69, 0x6e, 0x73, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, - 0x70, 0x65, 0x63, 0x2e, 0x52, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, - 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2e, 0x0a, 0x07, 0x6b, 0x38, 0x73, 0x5f, 0x70, - 0x6f, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4b, 0x38, 0x73, 0x50, 0x6f, 0x64, 0x52, - 0x06, 0x6b, 0x38, 0x73, 0x50, 0x6f, 0x64, 0x1a, 0x41, 0x0a, 0x13, 0x52, 0x61, 0x79, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 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, 0x42, 0xc0, 0x01, 0x0a, 0x14, 0x63, - 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, - 0x69, 0x6e, 0x73, 0x42, 0x08, 0x52, 0x61, 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, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0xa2, 0x02, - 0x03, 0x46, 0x50, 0x58, 0xaa, 0x02, 0x10, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, - 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0xca, 0x02, 0x10, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x5c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0xe2, 0x02, 0x1c, 0x46, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 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, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x0a, 0x05, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x10, 0x03, 0x22, 0x70, 0x0a, 0x06, 0x45, 0x6e, 0x76, + 0x56, 0x61, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3c, 0x0a, + 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, + 0x69, 0x6e, 0x73, 0x2e, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x72, 0x6f, 0x6d, + 0x52, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x22, 0xe9, 0x01, 0x0a, 0x11, + 0x41, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x75, 0x70, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x75, 0x70, 0x73, 0x63, 0x61, + 0x6c, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x64, 0x6c, 0x65, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x69, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x2a, 0x0a, 0x03, 0x65, 0x6e, + 0x76, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x45, 0x6e, 0x76, 0x56, 0x61, + 0x72, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x39, 0x0a, 0x09, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, + 0x6e, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0xa7, 0x02, 0x0a, 0x0a, 0x52, 0x61, 0x79, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x47, 0x0a, 0x0f, 0x68, 0x65, 0x61, 0x64, 0x5f, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, + 0x6e, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, + 0x52, 0x0d, 0x68, 0x65, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, + 0x4d, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, + 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x57, 0x6f, + 0x72, 0x6b, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0f, 0x77, + 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x2d, + 0x0a, 0x12, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, + 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x52, 0x0a, + 0x12, 0x61, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x41, 0x75, 0x74, + 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x11, + 0x61, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x22, 0xe1, 0x01, 0x0a, 0x0d, 0x48, 0x65, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, + 0x70, 0x65, 0x63, 0x12, 0x5d, 0x0a, 0x10, 0x72, 0x61, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, + 0x2e, 0x48, 0x65, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x52, + 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x0e, 0x72, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x12, 0x2e, 0x0a, 0x07, 0x6b, 0x38, 0x73, 0x5f, 0x70, 0x6f, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x4b, 0x38, 0x73, 0x50, 0x6f, 0x64, 0x52, 0x06, 0x6b, 0x38, 0x73, 0x50, + 0x6f, 0x64, 0x1a, 0x41, 0x0a, 0x13, 0x52, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, + 0x72, 0x61, 0x6d, 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, 0xe6, 0x02, 0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x69, 0x6e, 0x52, + 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x72, + 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, + 0x61, 0x78, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x5f, 0x0a, 0x10, 0x72, 0x61, + 0x79, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, + 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x52, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x61, 0x79, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2e, 0x0a, 0x07, 0x6b, + 0x38, 0x73, 0x5f, 0x70, 0x6f, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4b, 0x38, 0x73, + 0x50, 0x6f, 0x64, 0x52, 0x06, 0x6b, 0x38, 0x73, 0x50, 0x6f, 0x64, 0x1a, 0x41, 0x0a, 0x13, 0x52, + 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 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, 0x42, 0xc0, + 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, + 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x42, 0x08, 0x52, 0x61, 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, 0x70, 0x6c, 0x75, 0x67, 0x69, + 0x6e, 0x73, 0xa2, 0x02, 0x03, 0x46, 0x50, 0x58, 0xaa, 0x02, 0x10, 0x46, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0xca, 0x02, 0x10, 0x46, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0xe2, 0x02, + 0x1c, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, + 0x73, 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, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, + 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -935,7 +928,7 @@ func file_flyteidl_plugins_ray_proto_rawDescGZIP() []byte { } var file_flyteidl_plugins_ray_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_flyteidl_plugins_ray_proto_msgTypes = make([]protoimpl.MessageInfo, 12) +var file_flyteidl_plugins_ray_proto_msgTypes = make([]protoimpl.MessageInfo, 11) var file_flyteidl_plugins_ray_proto_goTypes = []interface{}{ (Resources_ResourceName)(0), // 0: flyteidl.plugins.Resources.ResourceName (EnvValueFrom_Source)(0), // 1: flyteidl.plugins.EnvValueFrom.Source @@ -948,33 +941,31 @@ var file_flyteidl_plugins_ray_proto_goTypes = []interface{}{ (*HeadGroupSpec)(nil), // 8: flyteidl.plugins.HeadGroupSpec (*WorkerGroupSpec)(nil), // 9: flyteidl.plugins.WorkerGroupSpec (*Resources_ResourceEntry)(nil), // 10: flyteidl.plugins.Resources.ResourceEntry - nil, // 11: flyteidl.plugins.EnvVar.ValuesFromEntry - nil, // 12: flyteidl.plugins.HeadGroupSpec.RayStartParamsEntry - nil, // 13: flyteidl.plugins.WorkerGroupSpec.RayStartParamsEntry - (*core.K8SPod)(nil), // 14: flyteidl.core.K8sPod + nil, // 11: flyteidl.plugins.HeadGroupSpec.RayStartParamsEntry + nil, // 12: flyteidl.plugins.WorkerGroupSpec.RayStartParamsEntry + (*core.K8SPod)(nil), // 13: flyteidl.core.K8sPod } var file_flyteidl_plugins_ray_proto_depIdxs = []int32{ 7, // 0: flyteidl.plugins.RayJob.ray_cluster:type_name -> flyteidl.plugins.RayCluster 10, // 1: flyteidl.plugins.Resources.requests:type_name -> flyteidl.plugins.Resources.ResourceEntry 10, // 2: flyteidl.plugins.Resources.limits:type_name -> flyteidl.plugins.Resources.ResourceEntry 1, // 3: flyteidl.plugins.EnvValueFrom.source:type_name -> flyteidl.plugins.EnvValueFrom.Source - 11, // 4: flyteidl.plugins.EnvVar.valuesFrom:type_name -> flyteidl.plugins.EnvVar.ValuesFromEntry + 4, // 4: flyteidl.plugins.EnvVar.valueFrom:type_name -> flyteidl.plugins.EnvValueFrom 5, // 5: flyteidl.plugins.AutoscalerOptions.env:type_name -> flyteidl.plugins.EnvVar 3, // 6: flyteidl.plugins.AutoscalerOptions.resources:type_name -> flyteidl.plugins.Resources 8, // 7: flyteidl.plugins.RayCluster.head_group_spec:type_name -> flyteidl.plugins.HeadGroupSpec 9, // 8: flyteidl.plugins.RayCluster.worker_group_spec:type_name -> flyteidl.plugins.WorkerGroupSpec 6, // 9: flyteidl.plugins.RayCluster.autoscaler_options:type_name -> flyteidl.plugins.AutoscalerOptions - 12, // 10: flyteidl.plugins.HeadGroupSpec.ray_start_params:type_name -> flyteidl.plugins.HeadGroupSpec.RayStartParamsEntry - 14, // 11: flyteidl.plugins.HeadGroupSpec.k8s_pod:type_name -> flyteidl.core.K8sPod - 13, // 12: flyteidl.plugins.WorkerGroupSpec.ray_start_params:type_name -> flyteidl.plugins.WorkerGroupSpec.RayStartParamsEntry - 14, // 13: flyteidl.plugins.WorkerGroupSpec.k8s_pod:type_name -> flyteidl.core.K8sPod + 11, // 10: flyteidl.plugins.HeadGroupSpec.ray_start_params:type_name -> flyteidl.plugins.HeadGroupSpec.RayStartParamsEntry + 13, // 11: flyteidl.plugins.HeadGroupSpec.k8s_pod:type_name -> flyteidl.core.K8sPod + 12, // 12: flyteidl.plugins.WorkerGroupSpec.ray_start_params:type_name -> flyteidl.plugins.WorkerGroupSpec.RayStartParamsEntry + 13, // 13: flyteidl.plugins.WorkerGroupSpec.k8s_pod:type_name -> flyteidl.core.K8sPod 0, // 14: flyteidl.plugins.Resources.ResourceEntry.name:type_name -> flyteidl.plugins.Resources.ResourceName - 4, // 15: flyteidl.plugins.EnvVar.ValuesFromEntry.value:type_name -> flyteidl.plugins.EnvValueFrom - 16, // [16:16] is the sub-list for method output_type - 16, // [16:16] is the sub-list for method input_type - 16, // [16:16] is the sub-list for extension type_name - 16, // [16:16] is the sub-list for extension extendee - 0, // [0:16] is the sub-list for field type_name + 15, // [15:15] is the sub-list for method output_type + 15, // [15:15] is the sub-list for method input_type + 15, // [15:15] is the sub-list for extension type_name + 15, // [15:15] is the sub-list for extension extendee + 0, // [0:15] is the sub-list for field type_name } func init() { file_flyteidl_plugins_ray_proto_init() } @@ -1098,7 +1089,7 @@ func file_flyteidl_plugins_ray_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_flyteidl_plugins_ray_proto_rawDesc, NumEnums: 2, - NumMessages: 12, + NumMessages: 11, NumExtensions: 0, NumServices: 0, }, diff --git a/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.py b/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.py index 0ad54305c57..115a5ddeb44 100644 --- a/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.py @@ -14,7 +14,7 @@ from flyteidl.core import tasks_pb2 as flyteidl_dot_core_dot_tasks__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1a\x66lyteidl/plugins/ray.proto\x12\x10\x66lyteidl.plugins\x1a\x19\x66lyteidl/core/tasks.proto\"\x92\x02\n\x06RayJob\x12=\n\x0bray_cluster\x18\x01 \x01(\x0b\x32\x1c.flyteidl.plugins.RayClusterR\nrayCluster\x12#\n\x0bruntime_env\x18\x02 \x01(\tB\x02\x18\x01R\nruntimeEnv\x12=\n\x1bshutdown_after_job_finishes\x18\x03 \x01(\x08R\x18shutdownAfterJobFinishes\x12;\n\x1attl_seconds_after_finished\x18\x04 \x01(\x05R\x17ttlSecondsAfterFinished\x12(\n\x10runtime_env_yaml\x18\x05 \x01(\tR\x0eruntimeEnvYaml\"\x9f\x02\n\tResources\x12\x45\n\x08requests\x18\x01 \x03(\x0b\x32).flyteidl.plugins.Resources.ResourceEntryR\x08requests\x12\x41\n\x06limits\x18\x02 \x03(\x0b\x32).flyteidl.plugins.Resources.ResourceEntryR\x06limits\x1a\x63\n\rResourceEntry\x12<\n\x04name\x18\x01 \x01(\x0e\x32(.flyteidl.plugins.Resources.ResourceNameR\x04name\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value\"#\n\x0cResourceName\x12\x07\n\x03\x43PU\x10\x00\x12\n\n\x06MEMORY\x10\x01\"\xb6\x01\n\x0c\x45nvValueFrom\x12=\n\x06source\x18\x01 \x01(\x0e\x32%.flyteidl.plugins.EnvValueFrom.SourceR\x06source\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x10\n\x03key\x18\x03 \x01(\tR\x03key\"A\n\x06Source\x12\r\n\tCONFIGMAP\x10\x00\x12\n\n\x06SECRET\x10\x01\x12\x11\n\rRESOURCEFIELD\x10\x02\x12\t\n\x05\x46IELD\x10\x03\"\xdb\x01\n\x06\x45nvVar\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value\x12H\n\nvaluesFrom\x18\x03 \x03(\x0b\x32(.flyteidl.plugins.EnvVar.ValuesFromEntryR\nvaluesFrom\x1a]\n\x0fValuesFromEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x34\n\x05value\x18\x02 \x01(\x0b\x32\x1e.flyteidl.plugins.EnvValueFromR\x05value:\x02\x38\x01\"\xe9\x01\n\x11\x41utoscalerOptions\x12%\n\x0eupscaling_mode\x18\x01 \x01(\tR\rupscalingMode\x12\x30\n\x14idle_timeout_seconds\x18\x02 \x01(\x05R\x12idleTimeoutSeconds\x12*\n\x03\x65nv\x18\x03 \x03(\x0b\x32\x18.flyteidl.plugins.EnvVarR\x03\x65nv\x12\x14\n\x05image\x18\x04 \x01(\tR\x05image\x12\x39\n\tresources\x18\x05 \x01(\x0b\x32\x1b.flyteidl.plugins.ResourcesR\tresources\"\xa7\x02\n\nRayCluster\x12G\n\x0fhead_group_spec\x18\x01 \x01(\x0b\x32\x1f.flyteidl.plugins.HeadGroupSpecR\rheadGroupSpec\x12M\n\x11worker_group_spec\x18\x02 \x03(\x0b\x32!.flyteidl.plugins.WorkerGroupSpecR\x0fworkerGroupSpec\x12-\n\x12\x65nable_autoscaling\x18\x03 \x01(\x08R\x11\x65nableAutoscaling\x12R\n\x12\x61utoscaler_options\x18\x04 \x01(\x0b\x32#.flyteidl.plugins.AutoscalerOptionsR\x11\x61utoscalerOptions\"\xe1\x01\n\rHeadGroupSpec\x12]\n\x10ray_start_params\x18\x01 \x03(\x0b\x32\x33.flyteidl.plugins.HeadGroupSpec.RayStartParamsEntryR\x0erayStartParams\x12.\n\x07k8s_pod\x18\x02 \x01(\x0b\x32\x15.flyteidl.core.K8sPodR\x06k8sPod\x1a\x41\n\x13RayStartParamsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xe6\x02\n\x0fWorkerGroupSpec\x12\x1d\n\ngroup_name\x18\x01 \x01(\tR\tgroupName\x12\x1a\n\x08replicas\x18\x02 \x01(\x05R\x08replicas\x12!\n\x0cmin_replicas\x18\x03 \x01(\x05R\x0bminReplicas\x12!\n\x0cmax_replicas\x18\x04 \x01(\x05R\x0bmaxReplicas\x12_\n\x10ray_start_params\x18\x05 \x03(\x0b\x32\x35.flyteidl.plugins.WorkerGroupSpec.RayStartParamsEntryR\x0erayStartParams\x12.\n\x07k8s_pod\x18\x06 \x01(\x0b\x32\x15.flyteidl.core.K8sPodR\x06k8sPod\x1a\x41\n\x13RayStartParamsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\xc0\x01\n\x14\x63om.flyteidl.pluginsB\x08RayProtoP\x01Z=github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/plugins\xa2\x02\x03\x46PX\xaa\x02\x10\x46lyteidl.Plugins\xca\x02\x10\x46lyteidl\\Plugins\xe2\x02\x1c\x46lyteidl\\Plugins\\GPBMetadata\xea\x02\x11\x46lyteidl::Pluginsb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1a\x66lyteidl/plugins/ray.proto\x12\x10\x66lyteidl.plugins\x1a\x19\x66lyteidl/core/tasks.proto\"\x92\x02\n\x06RayJob\x12=\n\x0bray_cluster\x18\x01 \x01(\x0b\x32\x1c.flyteidl.plugins.RayClusterR\nrayCluster\x12#\n\x0bruntime_env\x18\x02 \x01(\tB\x02\x18\x01R\nruntimeEnv\x12=\n\x1bshutdown_after_job_finishes\x18\x03 \x01(\x08R\x18shutdownAfterJobFinishes\x12;\n\x1attl_seconds_after_finished\x18\x04 \x01(\x05R\x17ttlSecondsAfterFinished\x12(\n\x10runtime_env_yaml\x18\x05 \x01(\tR\x0eruntimeEnvYaml\"\x9f\x02\n\tResources\x12\x45\n\x08requests\x18\x01 \x03(\x0b\x32).flyteidl.plugins.Resources.ResourceEntryR\x08requests\x12\x41\n\x06limits\x18\x02 \x03(\x0b\x32).flyteidl.plugins.Resources.ResourceEntryR\x06limits\x1a\x63\n\rResourceEntry\x12<\n\x04name\x18\x01 \x01(\x0e\x32(.flyteidl.plugins.Resources.ResourceNameR\x04name\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value\"#\n\x0cResourceName\x12\x07\n\x03\x43PU\x10\x00\x12\n\n\x06MEMORY\x10\x01\"\xb6\x01\n\x0c\x45nvValueFrom\x12=\n\x06source\x18\x01 \x01(\x0e\x32%.flyteidl.plugins.EnvValueFrom.SourceR\x06source\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x10\n\x03key\x18\x03 \x01(\tR\x03key\"A\n\x06Source\x12\r\n\tCONFIGMAP\x10\x00\x12\n\n\x06SECRET\x10\x01\x12\x11\n\rRESOURCEFIELD\x10\x02\x12\t\n\x05\x46IELD\x10\x03\"p\n\x06\x45nvVar\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value\x12<\n\tvalueFrom\x18\x03 \x01(\x0b\x32\x1e.flyteidl.plugins.EnvValueFromR\tvalueFrom\"\xe9\x01\n\x11\x41utoscalerOptions\x12%\n\x0eupscaling_mode\x18\x01 \x01(\tR\rupscalingMode\x12\x30\n\x14idle_timeout_seconds\x18\x02 \x01(\x05R\x12idleTimeoutSeconds\x12*\n\x03\x65nv\x18\x03 \x03(\x0b\x32\x18.flyteidl.plugins.EnvVarR\x03\x65nv\x12\x14\n\x05image\x18\x04 \x01(\tR\x05image\x12\x39\n\tresources\x18\x05 \x01(\x0b\x32\x1b.flyteidl.plugins.ResourcesR\tresources\"\xa7\x02\n\nRayCluster\x12G\n\x0fhead_group_spec\x18\x01 \x01(\x0b\x32\x1f.flyteidl.plugins.HeadGroupSpecR\rheadGroupSpec\x12M\n\x11worker_group_spec\x18\x02 \x03(\x0b\x32!.flyteidl.plugins.WorkerGroupSpecR\x0fworkerGroupSpec\x12-\n\x12\x65nable_autoscaling\x18\x03 \x01(\x08R\x11\x65nableAutoscaling\x12R\n\x12\x61utoscaler_options\x18\x04 \x01(\x0b\x32#.flyteidl.plugins.AutoscalerOptionsR\x11\x61utoscalerOptions\"\xe1\x01\n\rHeadGroupSpec\x12]\n\x10ray_start_params\x18\x01 \x03(\x0b\x32\x33.flyteidl.plugins.HeadGroupSpec.RayStartParamsEntryR\x0erayStartParams\x12.\n\x07k8s_pod\x18\x02 \x01(\x0b\x32\x15.flyteidl.core.K8sPodR\x06k8sPod\x1a\x41\n\x13RayStartParamsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xe6\x02\n\x0fWorkerGroupSpec\x12\x1d\n\ngroup_name\x18\x01 \x01(\tR\tgroupName\x12\x1a\n\x08replicas\x18\x02 \x01(\x05R\x08replicas\x12!\n\x0cmin_replicas\x18\x03 \x01(\x05R\x0bminReplicas\x12!\n\x0cmax_replicas\x18\x04 \x01(\x05R\x0bmaxReplicas\x12_\n\x10ray_start_params\x18\x05 \x03(\x0b\x32\x35.flyteidl.plugins.WorkerGroupSpec.RayStartParamsEntryR\x0erayStartParams\x12.\n\x07k8s_pod\x18\x06 \x01(\x0b\x32\x15.flyteidl.core.K8sPodR\x06k8sPod\x1a\x41\n\x13RayStartParamsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\xc0\x01\n\x14\x63om.flyteidl.pluginsB\x08RayProtoP\x01Z=github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/plugins\xa2\x02\x03\x46PX\xaa\x02\x10\x46lyteidl.Plugins\xca\x02\x10\x46lyteidl\\Plugins\xe2\x02\x1c\x46lyteidl\\Plugins\\GPBMetadata\xea\x02\x11\x46lyteidl::Pluginsb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -25,8 +25,6 @@ DESCRIPTOR._serialized_options = b'\n\024com.flyteidl.pluginsB\010RayProtoP\001Z=github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/plugins\242\002\003FPX\252\002\020Flyteidl.Plugins\312\002\020Flyteidl\\Plugins\342\002\034Flyteidl\\Plugins\\GPBMetadata\352\002\021Flyteidl::Plugins' _RAYJOB.fields_by_name['runtime_env']._options = None _RAYJOB.fields_by_name['runtime_env']._serialized_options = b'\030\001' - _ENVVAR_VALUESFROMENTRY._options = None - _ENVVAR_VALUESFROMENTRY._serialized_options = b'8\001' _HEADGROUPSPEC_RAYSTARTPARAMSENTRY._options = None _HEADGROUPSPEC_RAYSTARTPARAMSENTRY._serialized_options = b'8\001' _WORKERGROUPSPEC_RAYSTARTPARAMSENTRY._options = None @@ -43,20 +41,18 @@ _globals['_ENVVALUEFROM']._serialized_end=825 _globals['_ENVVALUEFROM_SOURCE']._serialized_start=760 _globals['_ENVVALUEFROM_SOURCE']._serialized_end=825 - _globals['_ENVVAR']._serialized_start=828 - _globals['_ENVVAR']._serialized_end=1047 - _globals['_ENVVAR_VALUESFROMENTRY']._serialized_start=954 - _globals['_ENVVAR_VALUESFROMENTRY']._serialized_end=1047 - _globals['_AUTOSCALEROPTIONS']._serialized_start=1050 - _globals['_AUTOSCALEROPTIONS']._serialized_end=1283 - _globals['_RAYCLUSTER']._serialized_start=1286 - _globals['_RAYCLUSTER']._serialized_end=1581 - _globals['_HEADGROUPSPEC']._serialized_start=1584 - _globals['_HEADGROUPSPEC']._serialized_end=1809 - _globals['_HEADGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_start=1744 - _globals['_HEADGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_end=1809 - _globals['_WORKERGROUPSPEC']._serialized_start=1812 - _globals['_WORKERGROUPSPEC']._serialized_end=2170 - _globals['_WORKERGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_start=1744 - _globals['_WORKERGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_end=1809 + _globals['_ENVVAR']._serialized_start=827 + _globals['_ENVVAR']._serialized_end=939 + _globals['_AUTOSCALEROPTIONS']._serialized_start=942 + _globals['_AUTOSCALEROPTIONS']._serialized_end=1175 + _globals['_RAYCLUSTER']._serialized_start=1178 + _globals['_RAYCLUSTER']._serialized_end=1473 + _globals['_HEADGROUPSPEC']._serialized_start=1476 + _globals['_HEADGROUPSPEC']._serialized_end=1701 + _globals['_HEADGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_start=1636 + _globals['_HEADGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_end=1701 + _globals['_WORKERGROUPSPEC']._serialized_start=1704 + _globals['_WORKERGROUPSPEC']._serialized_end=2062 + _globals['_WORKERGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_start=1636 + _globals['_WORKERGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_end=1701 # @@protoc_insertion_point(module_scope) diff --git a/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.pyi b/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.pyi index 283e7bcaf25..21af87086fe 100644 --- a/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.pyi +++ b/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.pyi @@ -63,21 +63,14 @@ class EnvValueFrom(_message.Message): def __init__(self, source: _Optional[_Union[EnvValueFrom.Source, str]] = ..., name: _Optional[str] = ..., key: _Optional[str] = ...) -> None: ... class EnvVar(_message.Message): - __slots__ = ["name", "value", "valuesFrom"] - class ValuesFromEntry(_message.Message): - __slots__ = ["key", "value"] - KEY_FIELD_NUMBER: _ClassVar[int] - VALUE_FIELD_NUMBER: _ClassVar[int] - key: str - value: EnvValueFrom - def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[EnvValueFrom, _Mapping]] = ...) -> None: ... + __slots__ = ["name", "value", "valueFrom"] NAME_FIELD_NUMBER: _ClassVar[int] VALUE_FIELD_NUMBER: _ClassVar[int] - VALUESFROM_FIELD_NUMBER: _ClassVar[int] + VALUEFROM_FIELD_NUMBER: _ClassVar[int] name: str value: str - valuesFrom: _containers.MessageMap[str, EnvValueFrom] - def __init__(self, name: _Optional[str] = ..., value: _Optional[str] = ..., valuesFrom: _Optional[_Mapping[str, EnvValueFrom]] = ...) -> None: ... + valueFrom: EnvValueFrom + def __init__(self, name: _Optional[str] = ..., value: _Optional[str] = ..., valueFrom: _Optional[_Union[EnvValueFrom, _Mapping]] = ...) -> None: ... class AutoscalerOptions(_message.Message): __slots__ = ["upscaling_mode", "idle_timeout_seconds", "env", "image", "resources"] diff --git a/flyteidl/gen/pb_rust/flyteidl.plugins.rs b/flyteidl/gen/pb_rust/flyteidl.plugins.rs index 47346edb2d4..5af71a7567e 100644 --- a/flyteidl/gen/pb_rust/flyteidl.plugins.rs +++ b/flyteidl/gen/pb_rust/flyteidl.plugins.rs @@ -341,8 +341,8 @@ pub struct EnvVar { pub name: ::prost::alloc::string::String, #[prost(string, tag="2")] pub value: ::prost::alloc::string::String, - #[prost(map="string, message", tag="3")] - pub values_from: ::std::collections::HashMap<::prost::alloc::string::String, EnvValueFrom>, + #[prost(message, optional, tag="3")] + pub value_from: ::core::option::Option, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] diff --git a/flyteidl/protos/flyteidl/plugins/ray.proto b/flyteidl/protos/flyteidl/plugins/ray.proto index 5c7c55016f4..7ab72a21fab 100644 --- a/flyteidl/protos/flyteidl/plugins/ray.proto +++ b/flyteidl/protos/flyteidl/plugins/ray.proto @@ -65,7 +65,7 @@ message EnvValueFrom { message EnvVar { string name = 1; string value = 2; - map valuesFrom = 3; + EnvValueFrom valueFrom = 3; } message AutoscalerOptions { diff --git a/flyteplugins/go/tasks/plugins/k8s/ray/ray.go b/flyteplugins/go/tasks/plugins/k8s/ray/ray.go index b5768c9e500..84af7f36060 100644 --- a/flyteplugins/go/tasks/plugins/k8s/ray/ray.go +++ b/flyteplugins/go/tasks/plugins/k8s/ray/ray.go @@ -129,6 +129,77 @@ func (rayJobResourceHandler) BuildResource(ctx context.Context, taskCtx pluginsC return rayjob, err } +func NewAutoscalerOptions(options *plugins.AutoscalerOptions) *rayv1.AutoscalerOptions { + var autoScalarOptions *rayv1.AutoscalerOptions + if options != nil { + autoScalarOptions = &rayv1.AutoscalerOptions{} + idleTimeoutTime := options.GetIdleTimeoutSeconds() + autoScalarOptions.IdleTimeoutSeconds = &idleTimeoutTime + if upScalingMode := options.GetUpscalingMode(); upScalingMode == "" { + mode := rayv1.UpscalingMode(upScalingMode) + autoScalarOptions.UpscalingMode = &mode + } + if image := options.GetImage(); image != "" { + autoScalarOptions.Image = &image + } + if res := options.GetResources(); res != nil { + autoScalarOptions.Resources = nil + } + if envs := options.GetEnv(); len(envs) > 0 { + autoScalarOptions.Env = []v1.EnvVar{} + for _, env := range envs { + name := env.GetName() + if val := env.GetValue(); val != "" { + autoScalarOptions.Env = append(autoScalarOptions.Env, v1.EnvVar{ + Name: name, + Value: val, + }) + } else if valueFrom := env.GetValueFrom(); valueFrom != nil { + var envValueSource *v1.EnvVarSource + switch valueFrom.Source { + case plugins.EnvValueFrom_CONFIGMAP: + envValueSource = &v1.EnvVarSource{ + ConfigMapKeyRef: &v1.ConfigMapKeySelector{ + LocalObjectReference: v1.LocalObjectReference{ + Name: valueFrom.Name, + }, + Key: valueFrom.Key, + }, + } + case plugins.EnvValueFrom_SECRET: + envValueSource = &v1.EnvVarSource{ + SecretKeyRef: &v1.SecretKeySelector{ + LocalObjectReference: v1.LocalObjectReference{ + Name: valueFrom.Name, + }, + Key: valueFrom.Key, + }, + } + case plugins.EnvValueFrom_RESOURCEFIELD: + envValueSource = &v1.EnvVarSource{ + ResourceFieldRef: &v1.ResourceFieldSelector{ + ContainerName: valueFrom.Name, + Resource: valueFrom.Key, + }, + } + default: + envValueSource = &v1.EnvVarSource{ + FieldRef: &v1.ObjectFieldSelector{ + FieldPath: valueFrom.Key, + }, + } + } + autoScalarOptions.Env = append(autoScalarOptions.Env, v1.EnvVar{ + Name: name, + ValueFrom: envValueSource, + }) + } + } + } + } + return autoScalarOptions +} + func constructRayJob(taskCtx pluginsCore.TaskExecutionContext, rayJob *plugins.RayJob, objectMeta *metav1.ObjectMeta, taskPodSpec v1.PodSpec, headNodeRayStartParams map[string]string, primaryContainerIdx int, primaryContainer v1.Container) (*rayv1.RayJob, error) { cfg := GetConfig() @@ -148,24 +219,7 @@ func constructRayJob(taskCtx pluginsCore.TaskExecutionContext, rayJob *plugins.R var autoScalarOptions *rayv1.AutoscalerOptions if c := rayJob.GetRayCluster(); c != nil { - if options := c.GetAutoscalerOptions(); options != nil { - autoScalarOptions = &rayv1.AutoscalerOptions{} - idleTimeoutTime := options.GetIdleTimeoutSeconds() - autoScalarOptions.IdleTimeoutSeconds = &idleTimeoutTime - if upScalingMode := options.GetUpscalingMode(); upScalingMode == "" { - mode := rayv1.UpscalingMode(upScalingMode) - autoScalarOptions.UpscalingMode = &mode - } - if image := options.GetImage(); image != "" { - autoScalarOptions.Image = &image - } - if res := options.GetResources(); res != nil { - autoScalarOptions.Resources = nil - } - if envs := options.GetEnv(); len(envs) > 0 { - autoScalarOptions.Env = nil - } - } + autoScalarOptions = NewAutoscalerOptions(c.GetAutoscalerOptions()) } rayClusterSpec := rayv1.RayClusterSpec{ From 5679b2bf21590dc5ad3875011cac369fbacd082c Mon Sep 17 00:00:00 2001 From: Yuteng Chen Date: Tue, 31 Mar 2026 21:02:26 +0800 Subject: [PATCH 08/15] add resource Signed-off-by: Yuteng Chen --- flyteplugins/go/tasks/plugins/k8s/ray/ray.go | 31 ++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/flyteplugins/go/tasks/plugins/k8s/ray/ray.go b/flyteplugins/go/tasks/plugins/k8s/ray/ray.go index 84af7f36060..1b7f08bc486 100644 --- a/flyteplugins/go/tasks/plugins/k8s/ray/ray.go +++ b/flyteplugins/go/tasks/plugins/k8s/ray/ray.go @@ -13,6 +13,7 @@ import ( rayv1 "github.com/ray-project/kuberay/ray-operator/apis/ray/v1" "gopkg.in/yaml.v2" v1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes/scheme" "k8s.io/utils/ptr" @@ -135,7 +136,7 @@ func NewAutoscalerOptions(options *plugins.AutoscalerOptions) *rayv1.AutoscalerO autoScalarOptions = &rayv1.AutoscalerOptions{} idleTimeoutTime := options.GetIdleTimeoutSeconds() autoScalarOptions.IdleTimeoutSeconds = &idleTimeoutTime - if upScalingMode := options.GetUpscalingMode(); upScalingMode == "" { + if upScalingMode := options.GetUpscalingMode(); upScalingMode != "" { mode := rayv1.UpscalingMode(upScalingMode) autoScalarOptions.UpscalingMode = &mode } @@ -143,7 +144,14 @@ func NewAutoscalerOptions(options *plugins.AutoscalerOptions) *rayv1.AutoscalerO autoScalarOptions.Image = &image } if res := options.GetResources(); res != nil { - autoScalarOptions.Resources = nil + resourceRequirements := v1.ResourceRequirements{} + if requests := res.GetRequests(); len(requests) > 0 { + resourceRequirements.Requests = convertResourceEntriesToResourceList(requests) + } + if limits := res.GetLimits(); len(limits) > 0 { + resourceRequirements.Limits = convertResourceEntriesToResourceList(limits) + } + autoScalarOptions.Resources = &resourceRequirements } if envs := options.GetEnv(); len(envs) > 0 { autoScalarOptions.Env = []v1.EnvVar{} @@ -200,6 +208,25 @@ func NewAutoscalerOptions(options *plugins.AutoscalerOptions) *rayv1.AutoscalerO return autoScalarOptions } +func convertResourceEntriesToResourceList(entries []*plugins.Resources_ResourceEntry) v1.ResourceList { + resourceList := v1.ResourceList{} + for _, entry := range entries { + var name v1.ResourceName + switch entry.GetName() { + case plugins.Resources_CPU: + name = v1.ResourceCPU + case plugins.Resources_MEMORY: + name = v1.ResourceMemory + default: + continue + } + if q, err := resource.ParseQuantity(entry.GetValue()); err == nil { + resourceList[name] = q + } + } + return resourceList +} + func constructRayJob(taskCtx pluginsCore.TaskExecutionContext, rayJob *plugins.RayJob, objectMeta *metav1.ObjectMeta, taskPodSpec v1.PodSpec, headNodeRayStartParams map[string]string, primaryContainerIdx int, primaryContainer v1.Container) (*rayv1.RayJob, error) { cfg := GetConfig() From 326715222b0fab273191ac11efdd972355bb6375 Mon Sep 17 00:00:00 2001 From: Yuteng Chen Date: Tue, 31 Mar 2026 21:44:35 +0800 Subject: [PATCH 09/15] meeting lint Signed-off-by: Yuteng Chen --- flyteplugins/go/tasks/plugins/k8s/ray/ray.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/flyteplugins/go/tasks/plugins/k8s/ray/ray.go b/flyteplugins/go/tasks/plugins/k8s/ray/ray.go index 1b7f08bc486..c12af845362 100644 --- a/flyteplugins/go/tasks/plugins/k8s/ray/ray.go +++ b/flyteplugins/go/tasks/plugins/k8s/ray/ray.go @@ -164,36 +164,36 @@ func NewAutoscalerOptions(options *plugins.AutoscalerOptions) *rayv1.AutoscalerO }) } else if valueFrom := env.GetValueFrom(); valueFrom != nil { var envValueSource *v1.EnvVarSource - switch valueFrom.Source { + switch valueFrom.GetSource() { case plugins.EnvValueFrom_CONFIGMAP: envValueSource = &v1.EnvVarSource{ ConfigMapKeyRef: &v1.ConfigMapKeySelector{ LocalObjectReference: v1.LocalObjectReference{ - Name: valueFrom.Name, + Name: valueFrom.GetName(), }, - Key: valueFrom.Key, + Key: valueFrom.GetKey(), }, } case plugins.EnvValueFrom_SECRET: envValueSource = &v1.EnvVarSource{ SecretKeyRef: &v1.SecretKeySelector{ LocalObjectReference: v1.LocalObjectReference{ - Name: valueFrom.Name, + Name: valueFrom.GetName(), }, - Key: valueFrom.Key, + Key: valueFrom.GetKey(), }, } case plugins.EnvValueFrom_RESOURCEFIELD: envValueSource = &v1.EnvVarSource{ ResourceFieldRef: &v1.ResourceFieldSelector{ - ContainerName: valueFrom.Name, - Resource: valueFrom.Key, + ContainerName: valueFrom.GetName(), + Resource: valueFrom.GetKey(), }, } default: envValueSource = &v1.EnvVarSource{ FieldRef: &v1.ObjectFieldSelector{ - FieldPath: valueFrom.Key, + FieldPath: valueFrom.GetKey(), }, } } From 92526f3ecc8296cebf0da951eaa44519dacec69f Mon Sep 17 00:00:00 2001 From: Yuteng Chen Date: Tue, 31 Mar 2026 22:41:14 +0800 Subject: [PATCH 10/15] add unit test of new functions Signed-off-by: Yuteng Chen --- .../go/tasks/plugins/k8s/ray/ray_test.go | 209 ++++++++++++++++++ 1 file changed, 209 insertions(+) diff --git a/flyteplugins/go/tasks/plugins/k8s/ray/ray_test.go b/flyteplugins/go/tasks/plugins/k8s/ray/ray_test.go index 1a268fc0e2e..399c2869558 100644 --- a/flyteplugins/go/tasks/plugins/k8s/ray/ray_test.go +++ b/flyteplugins/go/tasks/plugins/k8s/ray/ray_test.go @@ -1592,3 +1592,212 @@ func transformStructToStructPB(t *testing.T, obj interface{}) *structpb.Struct { assert.Nil(t, err) return s } + +func TestConvertResourceEntriesToResourceList(t *testing.T) { + tests := []struct { + name string + entries []*plugins.Resources_ResourceEntry + wantKeys []corev1.ResourceName + wantLen int + }{ + { + name: "cpu entry", + entries: []*plugins.Resources_ResourceEntry{ + {Name: plugins.Resources_CPU, Value: "500m"}, + }, + wantKeys: []corev1.ResourceName{corev1.ResourceCPU}, + wantLen: 1, + }, + { + name: "memory entry", + entries: []*plugins.Resources_ResourceEntry{ + {Name: plugins.Resources_MEMORY, Value: "1Gi"}, + }, + wantKeys: []corev1.ResourceName{corev1.ResourceMemory}, + wantLen: 1, + }, + { + name: "unknown resource skipped", + entries: []*plugins.Resources_ResourceEntry{ + {Name: plugins.Resources_ResourceName(99), Value: "1"}, + }, + wantLen: 0, + }, + { + name: "invalid quantity skipped", + entries: []*plugins.Resources_ResourceEntry{ + {Name: plugins.Resources_CPU, Value: "not-a-quantity"}, + }, + wantLen: 0, + }, + { + name: "empty input", + entries: []*plugins.Resources_ResourceEntry{}, + wantLen: 0, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result := convertResourceEntriesToResourceList(tt.entries) + require.NotNil(t, result) + assert.Len(t, result, tt.wantLen) + for _, key := range tt.wantKeys { + _, ok := result[key] + assert.True(t, ok, "expected key %s in result", key) + } + }) + } +} + +func TestNewAutoscalerOptions(t *testing.T) { + t.Run("nil input returns nil", func(t *testing.T) { + assert.Nil(t, NewAutoscalerOptions(nil)) + }) + + t.Run("idle timeout propagated", func(t *testing.T) { + result := NewAutoscalerOptions(&plugins.AutoscalerOptions{IdleTimeoutSeconds: 30}) + require.NotNil(t, result) + require.NotNil(t, result.IdleTimeoutSeconds) + assert.Equal(t, int32(30), *result.IdleTimeoutSeconds) + }) + + t.Run("upscaling mode set when non-empty", func(t *testing.T) { + result := NewAutoscalerOptions(&plugins.AutoscalerOptions{UpscalingMode: "Conservative"}) + require.NotNil(t, result) + require.NotNil(t, result.UpscalingMode) + assert.Equal(t, rayv1.UpscalingMode("Conservative"), *result.UpscalingMode) + }) + + t.Run("upscaling mode nil when empty", func(t *testing.T) { + result := NewAutoscalerOptions(&plugins.AutoscalerOptions{UpscalingMode: ""}) + require.NotNil(t, result) + assert.Nil(t, result.UpscalingMode) + }) + + t.Run("image set when non-empty", func(t *testing.T) { + result := NewAutoscalerOptions(&plugins.AutoscalerOptions{Image: "my-image:latest"}) + require.NotNil(t, result) + require.NotNil(t, result.Image) + assert.Equal(t, "my-image:latest", *result.Image) + }) + + t.Run("image nil when empty", func(t *testing.T) { + result := NewAutoscalerOptions(&plugins.AutoscalerOptions{Image: ""}) + require.NotNil(t, result) + assert.Nil(t, result.Image) + }) + + t.Run("resources requests and limits converted", func(t *testing.T) { + result := NewAutoscalerOptions(&plugins.AutoscalerOptions{ + Resources: &plugins.Resources{ + Requests: []*plugins.Resources_ResourceEntry{ + {Name: plugins.Resources_CPU, Value: "250m"}, + {Name: plugins.Resources_MEMORY, Value: "512Mi"}, + }, + Limits: []*plugins.Resources_ResourceEntry{ + {Name: plugins.Resources_CPU, Value: "1"}, + {Name: plugins.Resources_MEMORY, Value: "1Gi"}, + }, + }, + }) + require.NotNil(t, result) + require.NotNil(t, result.Resources) + assert.Equal(t, resource.MustParse("250m"), result.Resources.Requests[corev1.ResourceCPU]) + assert.Equal(t, resource.MustParse("512Mi"), result.Resources.Requests[corev1.ResourceMemory]) + assert.Equal(t, resource.MustParse("1"), result.Resources.Limits[corev1.ResourceCPU]) + assert.Equal(t, resource.MustParse("1Gi"), result.Resources.Limits[corev1.ResourceMemory]) + }) + + t.Run("env literal value", func(t *testing.T) { + result := NewAutoscalerOptions(&plugins.AutoscalerOptions{ + Env: []*plugins.EnvVar{{Name: "FOO", Value: "bar"}}, + }) + require.NotNil(t, result) + require.Len(t, result.Env, 1) + assert.Equal(t, "FOO", result.Env[0].Name) + assert.Equal(t, "bar", result.Env[0].Value) + }) + + envValueFromTests := []struct { + name string + envVar *plugins.EnvVar + check func(t *testing.T, env corev1.EnvVar) + }{ + { + name: "configmap source", + envVar: &plugins.EnvVar{ + Name: "CM_VAR", + ValueFrom: &plugins.EnvValueFrom{ + Source: plugins.EnvValueFrom_CONFIGMAP, + Name: "my-cm", + Key: "key1", + }, + }, + check: func(t *testing.T, env corev1.EnvVar) { + require.NotNil(t, env.ValueFrom) + require.NotNil(t, env.ValueFrom.ConfigMapKeyRef) + assert.Equal(t, "my-cm", env.ValueFrom.ConfigMapKeyRef.Name) + assert.Equal(t, "key1", env.ValueFrom.ConfigMapKeyRef.Key) + }, + }, + { + name: "secret source", + envVar: &plugins.EnvVar{ + Name: "SECRET_VAR", + ValueFrom: &plugins.EnvValueFrom{ + Source: plugins.EnvValueFrom_SECRET, + Name: "my-secret", + Key: "token", + }, + }, + check: func(t *testing.T, env corev1.EnvVar) { + require.NotNil(t, env.ValueFrom) + require.NotNil(t, env.ValueFrom.SecretKeyRef) + assert.Equal(t, "my-secret", env.ValueFrom.SecretKeyRef.Name) + assert.Equal(t, "token", env.ValueFrom.SecretKeyRef.Key) + }, + }, + { + name: "resourcefield source", + envVar: &plugins.EnvVar{ + Name: "RESOURCE_VAR", + ValueFrom: &plugins.EnvValueFrom{ + Source: plugins.EnvValueFrom_RESOURCEFIELD, + Name: "ray-head", + Key: "limits.cpu", + }, + }, + check: func(t *testing.T, env corev1.EnvVar) { + require.NotNil(t, env.ValueFrom) + require.NotNil(t, env.ValueFrom.ResourceFieldRef) + assert.Equal(t, "ray-head", env.ValueFrom.ResourceFieldRef.ContainerName) + assert.Equal(t, "limits.cpu", env.ValueFrom.ResourceFieldRef.Resource) + }, + }, + { + name: "fieldref source (default)", + envVar: &plugins.EnvVar{ + Name: "FIELD_VAR", + ValueFrom: &plugins.EnvValueFrom{ + Source: plugins.EnvValueFrom_FIELD, + Key: "metadata.name", + }, + }, + check: func(t *testing.T, env corev1.EnvVar) { + require.NotNil(t, env.ValueFrom) + require.NotNil(t, env.ValueFrom.FieldRef) + assert.Equal(t, "metadata.name", env.ValueFrom.FieldRef.FieldPath) + }, + }, + } + for _, tt := range envValueFromTests { + t.Run("env valueFrom "+tt.name, func(t *testing.T) { + result := NewAutoscalerOptions(&plugins.AutoscalerOptions{ + Env: []*plugins.EnvVar{tt.envVar}, + }) + require.NotNil(t, result) + require.Len(t, result.Env, 1) + tt.check(t, result.Env[0]) + }) + } +} From ce0fceb0e1362a8cd259d45f39e06d2b306e1453 Mon Sep 17 00:00:00 2001 From: Yuteng Chen Date: Thu, 2 Apr 2026 10:02:43 +0800 Subject: [PATCH 11/15] remvoe envfrom Signed-off-by: Yuteng Chen --- flyteidl/gen/pb-es/flyteidl/plugins/ray_pb.ts | 93 ---- flyteidl/gen/pb-go/flyteidl/plugins/ray.pb.go | 429 ++++++------------ .../gen/pb_python/flyteidl/plugins/ray_pb2.py | 34 +- .../pb_python/flyteidl/plugins/ray_pb2.pyi | 26 +- flyteidl/gen/pb_rust/flyteidl.plugins.rs | 50 -- flyteidl/protos/flyteidl/plugins/ray.proto | 16 - 6 files changed, 153 insertions(+), 495 deletions(-) diff --git a/flyteidl/gen/pb-es/flyteidl/plugins/ray_pb.ts b/flyteidl/gen/pb-es/flyteidl/plugins/ray_pb.ts index 0109d6213e3..ca491d6ef26 100644 --- a/flyteidl/gen/pb-es/flyteidl/plugins/ray_pb.ts +++ b/flyteidl/gen/pb-es/flyteidl/plugins/ray_pb.ts @@ -203,93 +203,6 @@ export class Resources_ResourceEntry extends Message { } } -/** - * @generated from message flyteidl.plugins.EnvValueFrom - */ -export class EnvValueFrom extends Message { - /** - * @generated from field: flyteidl.plugins.EnvValueFrom.Source source = 1; - */ - source = EnvValueFrom_Source.CONFIGMAP; - - /** - * Name for config map or secret, container name for resource, path for field - * - * @generated from field: string name = 2; - */ - name = ""; - - /** - * Key for config map or secret, resource name for resource - * - * @generated from field: string key = 3; - */ - key = ""; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "flyteidl.plugins.EnvValueFrom"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "source", kind: "enum", T: proto3.getEnumType(EnvValueFrom_Source) }, - { no: 2, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 3, name: "key", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): EnvValueFrom { - return new EnvValueFrom().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): EnvValueFrom { - return new EnvValueFrom().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): EnvValueFrom { - return new EnvValueFrom().fromJsonString(jsonString, options); - } - - static equals(a: EnvValueFrom | PlainMessage | undefined, b: EnvValueFrom | PlainMessage | undefined): boolean { - return proto3.util.equals(EnvValueFrom, a, b); - } -} - -/** - * Source of environment variable - * - * @generated from enum flyteidl.plugins.EnvValueFrom.Source - */ -export enum EnvValueFrom_Source { - /** - * @generated from enum value: CONFIGMAP = 0; - */ - CONFIGMAP = 0, - - /** - * @generated from enum value: SECRET = 1; - */ - SECRET = 1, - - /** - * @generated from enum value: RESOURCEFIELD = 2; - */ - RESOURCEFIELD = 2, - - /** - * @generated from enum value: FIELD = 3; - */ - FIELD = 3, -} -// Retrieve enum metadata with: proto3.getEnumType(EnvValueFrom_Source) -proto3.util.setEnumType(EnvValueFrom_Source, "flyteidl.plugins.EnvValueFrom.Source", [ - { no: 0, name: "CONFIGMAP" }, - { no: 1, name: "SECRET" }, - { no: 2, name: "RESOURCEFIELD" }, - { no: 3, name: "FIELD" }, -]); - /** * @generated from message flyteidl.plugins.EnvVar */ @@ -304,11 +217,6 @@ export class EnvVar extends Message { */ value = ""; - /** - * @generated from field: flyteidl.plugins.EnvValueFrom valueFrom = 3; - */ - valueFrom?: EnvValueFrom; - constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -319,7 +227,6 @@ export class EnvVar extends Message { static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, { no: 2, name: "value", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 3, name: "valueFrom", kind: "message", T: EnvValueFrom }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): EnvVar { diff --git a/flyteidl/gen/pb-go/flyteidl/plugins/ray.pb.go b/flyteidl/gen/pb-go/flyteidl/plugins/ray.pb.go index 646244b9b20..51f8db67b4f 100644 --- a/flyteidl/gen/pb-go/flyteidl/plugins/ray.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/plugins/ray.pb.go @@ -68,59 +68,6 @@ func (Resources_ResourceName) EnumDescriptor() ([]byte, []int) { return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{1, 0} } -// Source of environment variable -type EnvValueFrom_Source int32 - -const ( - EnvValueFrom_CONFIGMAP EnvValueFrom_Source = 0 - EnvValueFrom_SECRET EnvValueFrom_Source = 1 - EnvValueFrom_RESOURCEFIELD EnvValueFrom_Source = 2 - EnvValueFrom_FIELD EnvValueFrom_Source = 3 -) - -// Enum value maps for EnvValueFrom_Source. -var ( - EnvValueFrom_Source_name = map[int32]string{ - 0: "CONFIGMAP", - 1: "SECRET", - 2: "RESOURCEFIELD", - 3: "FIELD", - } - EnvValueFrom_Source_value = map[string]int32{ - "CONFIGMAP": 0, - "SECRET": 1, - "RESOURCEFIELD": 2, - "FIELD": 3, - } -) - -func (x EnvValueFrom_Source) Enum() *EnvValueFrom_Source { - p := new(EnvValueFrom_Source) - *p = x - return p -} - -func (x EnvValueFrom_Source) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (EnvValueFrom_Source) Descriptor() protoreflect.EnumDescriptor { - return file_flyteidl_plugins_ray_proto_enumTypes[1].Descriptor() -} - -func (EnvValueFrom_Source) Type() protoreflect.EnumType { - return &file_flyteidl_plugins_ray_proto_enumTypes[1] -} - -func (x EnvValueFrom_Source) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use EnvValueFrom_Source.Descriptor instead. -func (EnvValueFrom_Source) EnumDescriptor() ([]byte, []int) { - return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{2, 0} -} - // RayJobSpec defines the desired state of RayJob type RayJob struct { state protoimpl.MessageState @@ -269,85 +216,19 @@ func (x *Resources) GetLimits() []*Resources_ResourceEntry { return nil } -type EnvValueFrom struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Source EnvValueFrom_Source `protobuf:"varint,1,opt,name=source,proto3,enum=flyteidl.plugins.EnvValueFrom_Source" json:"source,omitempty"` - // Name for config map or secret, container name for resource, path for field - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // Key for config map or secret, resource name for resource - Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` -} - -func (x *EnvValueFrom) Reset() { - *x = EnvValueFrom{} - if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_plugins_ray_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *EnvValueFrom) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*EnvValueFrom) ProtoMessage() {} - -func (x *EnvValueFrom) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_plugins_ray_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 EnvValueFrom.ProtoReflect.Descriptor instead. -func (*EnvValueFrom) Descriptor() ([]byte, []int) { - return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{2} -} - -func (x *EnvValueFrom) GetSource() EnvValueFrom_Source { - if x != nil { - return x.Source - } - return EnvValueFrom_CONFIGMAP -} - -func (x *EnvValueFrom) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *EnvValueFrom) GetKey() string { - if x != nil { - return x.Key - } - return "" -} - type EnvVar struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` - ValueFrom *EnvValueFrom `protobuf:"bytes,3,opt,name=valueFrom,proto3" json:"valueFrom,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` } func (x *EnvVar) Reset() { *x = EnvVar{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_plugins_ray_proto_msgTypes[3] + mi := &file_flyteidl_plugins_ray_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -360,7 +241,7 @@ func (x *EnvVar) String() string { func (*EnvVar) ProtoMessage() {} func (x *EnvVar) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_plugins_ray_proto_msgTypes[3] + mi := &file_flyteidl_plugins_ray_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -373,7 +254,7 @@ func (x *EnvVar) ProtoReflect() protoreflect.Message { // Deprecated: Use EnvVar.ProtoReflect.Descriptor instead. func (*EnvVar) Descriptor() ([]byte, []int) { - return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{3} + return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{2} } func (x *EnvVar) GetName() string { @@ -390,13 +271,6 @@ func (x *EnvVar) GetValue() string { return "" } -func (x *EnvVar) GetValueFrom() *EnvValueFrom { - if x != nil { - return x.ValueFrom - } - return nil -} - type AutoscalerOptions struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -416,7 +290,7 @@ type AutoscalerOptions struct { func (x *AutoscalerOptions) Reset() { *x = AutoscalerOptions{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_plugins_ray_proto_msgTypes[4] + mi := &file_flyteidl_plugins_ray_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -429,7 +303,7 @@ func (x *AutoscalerOptions) String() string { func (*AutoscalerOptions) ProtoMessage() {} func (x *AutoscalerOptions) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_plugins_ray_proto_msgTypes[4] + mi := &file_flyteidl_plugins_ray_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -442,7 +316,7 @@ func (x *AutoscalerOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use AutoscalerOptions.ProtoReflect.Descriptor instead. func (*AutoscalerOptions) Descriptor() ([]byte, []int) { - return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{4} + return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{3} } func (x *AutoscalerOptions) GetUpscalingMode() string { @@ -498,7 +372,7 @@ type RayCluster struct { func (x *RayCluster) Reset() { *x = RayCluster{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_plugins_ray_proto_msgTypes[5] + mi := &file_flyteidl_plugins_ray_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -511,7 +385,7 @@ func (x *RayCluster) String() string { func (*RayCluster) ProtoMessage() {} func (x *RayCluster) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_plugins_ray_proto_msgTypes[5] + mi := &file_flyteidl_plugins_ray_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -524,7 +398,7 @@ func (x *RayCluster) ProtoReflect() protoreflect.Message { // Deprecated: Use RayCluster.ProtoReflect.Descriptor instead. func (*RayCluster) Descriptor() ([]byte, []int) { - return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{5} + return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{4} } func (x *RayCluster) GetHeadGroupSpec() *HeadGroupSpec { @@ -571,7 +445,7 @@ type HeadGroupSpec struct { func (x *HeadGroupSpec) Reset() { *x = HeadGroupSpec{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_plugins_ray_proto_msgTypes[6] + mi := &file_flyteidl_plugins_ray_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -584,7 +458,7 @@ func (x *HeadGroupSpec) String() string { func (*HeadGroupSpec) ProtoMessage() {} func (x *HeadGroupSpec) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_plugins_ray_proto_msgTypes[6] + mi := &file_flyteidl_plugins_ray_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -597,7 +471,7 @@ func (x *HeadGroupSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use HeadGroupSpec.ProtoReflect.Descriptor instead. func (*HeadGroupSpec) Descriptor() ([]byte, []int) { - return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{6} + return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{5} } func (x *HeadGroupSpec) GetRayStartParams() map[string]string { @@ -638,7 +512,7 @@ type WorkerGroupSpec struct { func (x *WorkerGroupSpec) Reset() { *x = WorkerGroupSpec{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_plugins_ray_proto_msgTypes[7] + mi := &file_flyteidl_plugins_ray_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -651,7 +525,7 @@ func (x *WorkerGroupSpec) String() string { func (*WorkerGroupSpec) ProtoMessage() {} func (x *WorkerGroupSpec) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_plugins_ray_proto_msgTypes[7] + mi := &file_flyteidl_plugins_ray_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -664,7 +538,7 @@ func (x *WorkerGroupSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkerGroupSpec.ProtoReflect.Descriptor instead. func (*WorkerGroupSpec) Descriptor() ([]byte, []int) { - return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{7} + return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{6} } func (x *WorkerGroupSpec) GetGroupName() string { @@ -725,7 +599,7 @@ type Resources_ResourceEntry struct { func (x *Resources_ResourceEntry) Reset() { *x = Resources_ResourceEntry{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_plugins_ray_proto_msgTypes[8] + mi := &file_flyteidl_plugins_ray_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -738,7 +612,7 @@ func (x *Resources_ResourceEntry) String() string { func (*Resources_ResourceEntry) ProtoMessage() {} func (x *Resources_ResourceEntry) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_plugins_ray_proto_msgTypes[8] + mi := &file_flyteidl_plugins_ray_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -811,108 +685,93 @@ var file_flyteidl_plugins_ray_proto_rawDesc = []byte{ 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x23, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x07, 0x0a, 0x03, 0x43, 0x50, 0x55, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x45, 0x4d, 0x4f, 0x52, 0x59, 0x10, 0x01, - 0x22, 0xb6, 0x01, 0x0a, 0x0c, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x72, 0x6f, - 0x6d, 0x12, 0x3d, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x25, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, - 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x72, 0x6f, - 0x6d, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x41, 0x0a, 0x06, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x4d, 0x41, 0x50, 0x10, 0x00, 0x12, - 0x0a, 0x0a, 0x06, 0x53, 0x45, 0x43, 0x52, 0x45, 0x54, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x52, - 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x10, 0x02, 0x12, 0x09, - 0x0a, 0x05, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x10, 0x03, 0x22, 0x70, 0x0a, 0x06, 0x45, 0x6e, 0x76, - 0x56, 0x61, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3c, 0x0a, - 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, - 0x69, 0x6e, 0x73, 0x2e, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x72, 0x6f, 0x6d, - 0x52, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x22, 0xe9, 0x01, 0x0a, 0x11, - 0x41, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x75, 0x70, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x6d, - 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x75, 0x70, 0x73, 0x63, 0x61, - 0x6c, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x64, 0x6c, 0x65, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x69, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x6f, 0x75, 0x74, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x2a, 0x0a, 0x03, 0x65, 0x6e, - 0x76, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x45, 0x6e, 0x76, 0x56, 0x61, - 0x72, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x39, 0x0a, 0x09, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, - 0x6e, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0xa7, 0x02, 0x0a, 0x0a, 0x52, 0x61, 0x79, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x47, 0x0a, 0x0f, 0x68, 0x65, 0x61, 0x64, 0x5f, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, - 0x6e, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, - 0x52, 0x0d, 0x68, 0x65, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, - 0x4d, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, - 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x57, 0x6f, - 0x72, 0x6b, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0f, 0x77, - 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x2d, - 0x0a, 0x12, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, - 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x52, 0x0a, - 0x12, 0x61, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x41, 0x75, 0x74, - 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x11, - 0x61, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x22, 0xe1, 0x01, 0x0a, 0x0d, 0x48, 0x65, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, - 0x70, 0x65, 0x63, 0x12, 0x5d, 0x0a, 0x10, 0x72, 0x61, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, - 0x2e, 0x48, 0x65, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x52, - 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x0e, 0x72, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x12, 0x2e, 0x0a, 0x07, 0x6b, 0x38, 0x73, 0x5f, 0x70, 0x6f, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x4b, 0x38, 0x73, 0x50, 0x6f, 0x64, 0x52, 0x06, 0x6b, 0x38, 0x73, 0x50, - 0x6f, 0x64, 0x1a, 0x41, 0x0a, 0x13, 0x52, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, - 0x72, 0x61, 0x6d, 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, 0xe6, 0x02, 0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x69, 0x6e, 0x52, - 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x72, - 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, - 0x61, 0x78, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x5f, 0x0a, 0x10, 0x72, 0x61, - 0x79, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, - 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x47, 0x72, + 0x22, 0x32, 0x0a, 0x06, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x22, 0xe9, 0x01, 0x0a, 0x11, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, + 0x6c, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x75, 0x70, + 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x75, 0x70, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, + 0x65, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, + 0x74, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x12, 0x69, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x63, 0x6f, + 0x6e, 0x64, 0x73, 0x12, 0x2a, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, + 0x69, 0x6e, 0x73, 0x2e, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x12, + 0x14, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x39, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x22, 0xa7, 0x02, 0x0a, 0x0a, 0x52, 0x61, 0x79, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, + 0x47, 0x0a, 0x0f, 0x68, 0x65, 0x61, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x70, + 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0d, 0x68, 0x65, 0x61, 0x64, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x4d, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, + 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, + 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0f, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x2d, 0x0a, 0x12, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x11, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x73, + 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x52, 0x0a, 0x12, 0x61, 0x75, 0x74, 0x6f, 0x73, 0x63, + 0x61, 0x6c, 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, + 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x11, 0x61, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, + 0x6c, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xe1, 0x01, 0x0a, 0x0d, 0x48, + 0x65, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x5d, 0x0a, 0x10, + 0x72, 0x61, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x52, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2e, 0x0a, 0x07, 0x6b, - 0x38, 0x73, 0x5f, 0x70, 0x6f, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, + 0x38, 0x73, 0x5f, 0x70, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4b, 0x38, 0x73, 0x50, 0x6f, 0x64, 0x52, 0x06, 0x6b, 0x38, 0x73, 0x50, 0x6f, 0x64, 0x1a, 0x41, 0x0a, 0x13, 0x52, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 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, 0x42, 0xc0, - 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, - 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x42, 0x08, 0x52, 0x61, 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, 0x70, 0x6c, 0x75, 0x67, 0x69, - 0x6e, 0x73, 0xa2, 0x02, 0x03, 0x46, 0x50, 0x58, 0xaa, 0x02, 0x10, 0x46, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0xca, 0x02, 0x10, 0x46, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0xe2, 0x02, - 0x1c, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, - 0x73, 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, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, - 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe6, + 0x02, 0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, + 0x65, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x21, 0x0a, + 0x0c, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, + 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x73, 0x12, 0x5f, 0x0a, 0x10, 0x72, 0x61, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, + 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, + 0x2e, 0x52, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2e, 0x0a, 0x07, 0x6b, 0x38, 0x73, 0x5f, 0x70, 0x6f, 0x64, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4b, 0x38, 0x73, 0x50, 0x6f, 0x64, 0x52, 0x06, 0x6b, 0x38, + 0x73, 0x50, 0x6f, 0x64, 0x1a, 0x41, 0x0a, 0x13, 0x52, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x50, 0x61, 0x72, 0x61, 0x6d, 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, 0x42, 0xc0, 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, + 0x42, 0x08, 0x52, 0x61, 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, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0xa2, 0x02, 0x03, 0x46, 0x50, + 0x58, 0xaa, 0x02, 0x10, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x50, 0x6c, 0x75, + 0x67, 0x69, 0x6e, 0x73, 0xca, 0x02, 0x10, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, + 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0xe2, 0x02, 0x1c, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x5c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 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, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -927,45 +786,41 @@ func file_flyteidl_plugins_ray_proto_rawDescGZIP() []byte { return file_flyteidl_plugins_ray_proto_rawDescData } -var file_flyteidl_plugins_ray_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_flyteidl_plugins_ray_proto_msgTypes = make([]protoimpl.MessageInfo, 11) +var file_flyteidl_plugins_ray_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_flyteidl_plugins_ray_proto_msgTypes = make([]protoimpl.MessageInfo, 10) var file_flyteidl_plugins_ray_proto_goTypes = []interface{}{ (Resources_ResourceName)(0), // 0: flyteidl.plugins.Resources.ResourceName - (EnvValueFrom_Source)(0), // 1: flyteidl.plugins.EnvValueFrom.Source - (*RayJob)(nil), // 2: flyteidl.plugins.RayJob - (*Resources)(nil), // 3: flyteidl.plugins.Resources - (*EnvValueFrom)(nil), // 4: flyteidl.plugins.EnvValueFrom - (*EnvVar)(nil), // 5: flyteidl.plugins.EnvVar - (*AutoscalerOptions)(nil), // 6: flyteidl.plugins.AutoscalerOptions - (*RayCluster)(nil), // 7: flyteidl.plugins.RayCluster - (*HeadGroupSpec)(nil), // 8: flyteidl.plugins.HeadGroupSpec - (*WorkerGroupSpec)(nil), // 9: flyteidl.plugins.WorkerGroupSpec - (*Resources_ResourceEntry)(nil), // 10: flyteidl.plugins.Resources.ResourceEntry - nil, // 11: flyteidl.plugins.HeadGroupSpec.RayStartParamsEntry - nil, // 12: flyteidl.plugins.WorkerGroupSpec.RayStartParamsEntry - (*core.K8SPod)(nil), // 13: flyteidl.core.K8sPod + (*RayJob)(nil), // 1: flyteidl.plugins.RayJob + (*Resources)(nil), // 2: flyteidl.plugins.Resources + (*EnvVar)(nil), // 3: flyteidl.plugins.EnvVar + (*AutoscalerOptions)(nil), // 4: flyteidl.plugins.AutoscalerOptions + (*RayCluster)(nil), // 5: flyteidl.plugins.RayCluster + (*HeadGroupSpec)(nil), // 6: flyteidl.plugins.HeadGroupSpec + (*WorkerGroupSpec)(nil), // 7: flyteidl.plugins.WorkerGroupSpec + (*Resources_ResourceEntry)(nil), // 8: flyteidl.plugins.Resources.ResourceEntry + nil, // 9: flyteidl.plugins.HeadGroupSpec.RayStartParamsEntry + nil, // 10: flyteidl.plugins.WorkerGroupSpec.RayStartParamsEntry + (*core.K8SPod)(nil), // 11: flyteidl.core.K8sPod } var file_flyteidl_plugins_ray_proto_depIdxs = []int32{ - 7, // 0: flyteidl.plugins.RayJob.ray_cluster:type_name -> flyteidl.plugins.RayCluster - 10, // 1: flyteidl.plugins.Resources.requests:type_name -> flyteidl.plugins.Resources.ResourceEntry - 10, // 2: flyteidl.plugins.Resources.limits:type_name -> flyteidl.plugins.Resources.ResourceEntry - 1, // 3: flyteidl.plugins.EnvValueFrom.source:type_name -> flyteidl.plugins.EnvValueFrom.Source - 4, // 4: flyteidl.plugins.EnvVar.valueFrom:type_name -> flyteidl.plugins.EnvValueFrom - 5, // 5: flyteidl.plugins.AutoscalerOptions.env:type_name -> flyteidl.plugins.EnvVar - 3, // 6: flyteidl.plugins.AutoscalerOptions.resources:type_name -> flyteidl.plugins.Resources - 8, // 7: flyteidl.plugins.RayCluster.head_group_spec:type_name -> flyteidl.plugins.HeadGroupSpec - 9, // 8: flyteidl.plugins.RayCluster.worker_group_spec:type_name -> flyteidl.plugins.WorkerGroupSpec - 6, // 9: flyteidl.plugins.RayCluster.autoscaler_options:type_name -> flyteidl.plugins.AutoscalerOptions - 11, // 10: flyteidl.plugins.HeadGroupSpec.ray_start_params:type_name -> flyteidl.plugins.HeadGroupSpec.RayStartParamsEntry - 13, // 11: flyteidl.plugins.HeadGroupSpec.k8s_pod:type_name -> flyteidl.core.K8sPod - 12, // 12: flyteidl.plugins.WorkerGroupSpec.ray_start_params:type_name -> flyteidl.plugins.WorkerGroupSpec.RayStartParamsEntry - 13, // 13: flyteidl.plugins.WorkerGroupSpec.k8s_pod:type_name -> flyteidl.core.K8sPod - 0, // 14: flyteidl.plugins.Resources.ResourceEntry.name:type_name -> flyteidl.plugins.Resources.ResourceName - 15, // [15:15] is the sub-list for method output_type - 15, // [15:15] is the sub-list for method input_type - 15, // [15:15] is the sub-list for extension type_name - 15, // [15:15] is the sub-list for extension extendee - 0, // [0:15] is the sub-list for field type_name + 5, // 0: flyteidl.plugins.RayJob.ray_cluster:type_name -> flyteidl.plugins.RayCluster + 8, // 1: flyteidl.plugins.Resources.requests:type_name -> flyteidl.plugins.Resources.ResourceEntry + 8, // 2: flyteidl.plugins.Resources.limits:type_name -> flyteidl.plugins.Resources.ResourceEntry + 3, // 3: flyteidl.plugins.AutoscalerOptions.env:type_name -> flyteidl.plugins.EnvVar + 2, // 4: flyteidl.plugins.AutoscalerOptions.resources:type_name -> flyteidl.plugins.Resources + 6, // 5: flyteidl.plugins.RayCluster.head_group_spec:type_name -> flyteidl.plugins.HeadGroupSpec + 7, // 6: flyteidl.plugins.RayCluster.worker_group_spec:type_name -> flyteidl.plugins.WorkerGroupSpec + 4, // 7: flyteidl.plugins.RayCluster.autoscaler_options:type_name -> flyteidl.plugins.AutoscalerOptions + 9, // 8: flyteidl.plugins.HeadGroupSpec.ray_start_params:type_name -> flyteidl.plugins.HeadGroupSpec.RayStartParamsEntry + 11, // 9: flyteidl.plugins.HeadGroupSpec.k8s_pod:type_name -> flyteidl.core.K8sPod + 10, // 10: flyteidl.plugins.WorkerGroupSpec.ray_start_params:type_name -> flyteidl.plugins.WorkerGroupSpec.RayStartParamsEntry + 11, // 11: flyteidl.plugins.WorkerGroupSpec.k8s_pod:type_name -> flyteidl.core.K8sPod + 0, // 12: flyteidl.plugins.Resources.ResourceEntry.name:type_name -> flyteidl.plugins.Resources.ResourceName + 13, // [13:13] is the sub-list for method output_type + 13, // [13:13] 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_plugins_ray_proto_init() } @@ -999,18 +854,6 @@ func file_flyteidl_plugins_ray_proto_init() { } } file_flyteidl_plugins_ray_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EnvValueFrom); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_flyteidl_plugins_ray_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EnvVar); i { case 0: return &v.state @@ -1022,7 +865,7 @@ func file_flyteidl_plugins_ray_proto_init() { return nil } } - file_flyteidl_plugins_ray_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_flyteidl_plugins_ray_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AutoscalerOptions); i { case 0: return &v.state @@ -1034,7 +877,7 @@ func file_flyteidl_plugins_ray_proto_init() { return nil } } - file_flyteidl_plugins_ray_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_flyteidl_plugins_ray_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RayCluster); i { case 0: return &v.state @@ -1046,7 +889,7 @@ func file_flyteidl_plugins_ray_proto_init() { return nil } } - file_flyteidl_plugins_ray_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_flyteidl_plugins_ray_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HeadGroupSpec); i { case 0: return &v.state @@ -1058,7 +901,7 @@ func file_flyteidl_plugins_ray_proto_init() { return nil } } - file_flyteidl_plugins_ray_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_flyteidl_plugins_ray_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkerGroupSpec); i { case 0: return &v.state @@ -1070,7 +913,7 @@ func file_flyteidl_plugins_ray_proto_init() { return nil } } - file_flyteidl_plugins_ray_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_flyteidl_plugins_ray_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Resources_ResourceEntry); i { case 0: return &v.state @@ -1088,8 +931,8 @@ func file_flyteidl_plugins_ray_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_flyteidl_plugins_ray_proto_rawDesc, - NumEnums: 2, - NumMessages: 11, + NumEnums: 1, + NumMessages: 10, NumExtensions: 0, NumServices: 0, }, diff --git a/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.py b/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.py index 115a5ddeb44..168152ea817 100644 --- a/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.py @@ -14,7 +14,7 @@ from flyteidl.core import tasks_pb2 as flyteidl_dot_core_dot_tasks__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1a\x66lyteidl/plugins/ray.proto\x12\x10\x66lyteidl.plugins\x1a\x19\x66lyteidl/core/tasks.proto\"\x92\x02\n\x06RayJob\x12=\n\x0bray_cluster\x18\x01 \x01(\x0b\x32\x1c.flyteidl.plugins.RayClusterR\nrayCluster\x12#\n\x0bruntime_env\x18\x02 \x01(\tB\x02\x18\x01R\nruntimeEnv\x12=\n\x1bshutdown_after_job_finishes\x18\x03 \x01(\x08R\x18shutdownAfterJobFinishes\x12;\n\x1attl_seconds_after_finished\x18\x04 \x01(\x05R\x17ttlSecondsAfterFinished\x12(\n\x10runtime_env_yaml\x18\x05 \x01(\tR\x0eruntimeEnvYaml\"\x9f\x02\n\tResources\x12\x45\n\x08requests\x18\x01 \x03(\x0b\x32).flyteidl.plugins.Resources.ResourceEntryR\x08requests\x12\x41\n\x06limits\x18\x02 \x03(\x0b\x32).flyteidl.plugins.Resources.ResourceEntryR\x06limits\x1a\x63\n\rResourceEntry\x12<\n\x04name\x18\x01 \x01(\x0e\x32(.flyteidl.plugins.Resources.ResourceNameR\x04name\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value\"#\n\x0cResourceName\x12\x07\n\x03\x43PU\x10\x00\x12\n\n\x06MEMORY\x10\x01\"\xb6\x01\n\x0c\x45nvValueFrom\x12=\n\x06source\x18\x01 \x01(\x0e\x32%.flyteidl.plugins.EnvValueFrom.SourceR\x06source\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x10\n\x03key\x18\x03 \x01(\tR\x03key\"A\n\x06Source\x12\r\n\tCONFIGMAP\x10\x00\x12\n\n\x06SECRET\x10\x01\x12\x11\n\rRESOURCEFIELD\x10\x02\x12\t\n\x05\x46IELD\x10\x03\"p\n\x06\x45nvVar\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value\x12<\n\tvalueFrom\x18\x03 \x01(\x0b\x32\x1e.flyteidl.plugins.EnvValueFromR\tvalueFrom\"\xe9\x01\n\x11\x41utoscalerOptions\x12%\n\x0eupscaling_mode\x18\x01 \x01(\tR\rupscalingMode\x12\x30\n\x14idle_timeout_seconds\x18\x02 \x01(\x05R\x12idleTimeoutSeconds\x12*\n\x03\x65nv\x18\x03 \x03(\x0b\x32\x18.flyteidl.plugins.EnvVarR\x03\x65nv\x12\x14\n\x05image\x18\x04 \x01(\tR\x05image\x12\x39\n\tresources\x18\x05 \x01(\x0b\x32\x1b.flyteidl.plugins.ResourcesR\tresources\"\xa7\x02\n\nRayCluster\x12G\n\x0fhead_group_spec\x18\x01 \x01(\x0b\x32\x1f.flyteidl.plugins.HeadGroupSpecR\rheadGroupSpec\x12M\n\x11worker_group_spec\x18\x02 \x03(\x0b\x32!.flyteidl.plugins.WorkerGroupSpecR\x0fworkerGroupSpec\x12-\n\x12\x65nable_autoscaling\x18\x03 \x01(\x08R\x11\x65nableAutoscaling\x12R\n\x12\x61utoscaler_options\x18\x04 \x01(\x0b\x32#.flyteidl.plugins.AutoscalerOptionsR\x11\x61utoscalerOptions\"\xe1\x01\n\rHeadGroupSpec\x12]\n\x10ray_start_params\x18\x01 \x03(\x0b\x32\x33.flyteidl.plugins.HeadGroupSpec.RayStartParamsEntryR\x0erayStartParams\x12.\n\x07k8s_pod\x18\x02 \x01(\x0b\x32\x15.flyteidl.core.K8sPodR\x06k8sPod\x1a\x41\n\x13RayStartParamsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xe6\x02\n\x0fWorkerGroupSpec\x12\x1d\n\ngroup_name\x18\x01 \x01(\tR\tgroupName\x12\x1a\n\x08replicas\x18\x02 \x01(\x05R\x08replicas\x12!\n\x0cmin_replicas\x18\x03 \x01(\x05R\x0bminReplicas\x12!\n\x0cmax_replicas\x18\x04 \x01(\x05R\x0bmaxReplicas\x12_\n\x10ray_start_params\x18\x05 \x03(\x0b\x32\x35.flyteidl.plugins.WorkerGroupSpec.RayStartParamsEntryR\x0erayStartParams\x12.\n\x07k8s_pod\x18\x06 \x01(\x0b\x32\x15.flyteidl.core.K8sPodR\x06k8sPod\x1a\x41\n\x13RayStartParamsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\xc0\x01\n\x14\x63om.flyteidl.pluginsB\x08RayProtoP\x01Z=github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/plugins\xa2\x02\x03\x46PX\xaa\x02\x10\x46lyteidl.Plugins\xca\x02\x10\x46lyteidl\\Plugins\xe2\x02\x1c\x46lyteidl\\Plugins\\GPBMetadata\xea\x02\x11\x46lyteidl::Pluginsb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1a\x66lyteidl/plugins/ray.proto\x12\x10\x66lyteidl.plugins\x1a\x19\x66lyteidl/core/tasks.proto\"\x92\x02\n\x06RayJob\x12=\n\x0bray_cluster\x18\x01 \x01(\x0b\x32\x1c.flyteidl.plugins.RayClusterR\nrayCluster\x12#\n\x0bruntime_env\x18\x02 \x01(\tB\x02\x18\x01R\nruntimeEnv\x12=\n\x1bshutdown_after_job_finishes\x18\x03 \x01(\x08R\x18shutdownAfterJobFinishes\x12;\n\x1attl_seconds_after_finished\x18\x04 \x01(\x05R\x17ttlSecondsAfterFinished\x12(\n\x10runtime_env_yaml\x18\x05 \x01(\tR\x0eruntimeEnvYaml\"\x9f\x02\n\tResources\x12\x45\n\x08requests\x18\x01 \x03(\x0b\x32).flyteidl.plugins.Resources.ResourceEntryR\x08requests\x12\x41\n\x06limits\x18\x02 \x03(\x0b\x32).flyteidl.plugins.Resources.ResourceEntryR\x06limits\x1a\x63\n\rResourceEntry\x12<\n\x04name\x18\x01 \x01(\x0e\x32(.flyteidl.plugins.Resources.ResourceNameR\x04name\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value\"#\n\x0cResourceName\x12\x07\n\x03\x43PU\x10\x00\x12\n\n\x06MEMORY\x10\x01\"2\n\x06\x45nvVar\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value\"\xe9\x01\n\x11\x41utoscalerOptions\x12%\n\x0eupscaling_mode\x18\x01 \x01(\tR\rupscalingMode\x12\x30\n\x14idle_timeout_seconds\x18\x02 \x01(\x05R\x12idleTimeoutSeconds\x12*\n\x03\x65nv\x18\x03 \x03(\x0b\x32\x18.flyteidl.plugins.EnvVarR\x03\x65nv\x12\x14\n\x05image\x18\x04 \x01(\tR\x05image\x12\x39\n\tresources\x18\x05 \x01(\x0b\x32\x1b.flyteidl.plugins.ResourcesR\tresources\"\xa7\x02\n\nRayCluster\x12G\n\x0fhead_group_spec\x18\x01 \x01(\x0b\x32\x1f.flyteidl.plugins.HeadGroupSpecR\rheadGroupSpec\x12M\n\x11worker_group_spec\x18\x02 \x03(\x0b\x32!.flyteidl.plugins.WorkerGroupSpecR\x0fworkerGroupSpec\x12-\n\x12\x65nable_autoscaling\x18\x03 \x01(\x08R\x11\x65nableAutoscaling\x12R\n\x12\x61utoscaler_options\x18\x04 \x01(\x0b\x32#.flyteidl.plugins.AutoscalerOptionsR\x11\x61utoscalerOptions\"\xe1\x01\n\rHeadGroupSpec\x12]\n\x10ray_start_params\x18\x01 \x03(\x0b\x32\x33.flyteidl.plugins.HeadGroupSpec.RayStartParamsEntryR\x0erayStartParams\x12.\n\x07k8s_pod\x18\x02 \x01(\x0b\x32\x15.flyteidl.core.K8sPodR\x06k8sPod\x1a\x41\n\x13RayStartParamsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xe6\x02\n\x0fWorkerGroupSpec\x12\x1d\n\ngroup_name\x18\x01 \x01(\tR\tgroupName\x12\x1a\n\x08replicas\x18\x02 \x01(\x05R\x08replicas\x12!\n\x0cmin_replicas\x18\x03 \x01(\x05R\x0bminReplicas\x12!\n\x0cmax_replicas\x18\x04 \x01(\x05R\x0bmaxReplicas\x12_\n\x10ray_start_params\x18\x05 \x03(\x0b\x32\x35.flyteidl.plugins.WorkerGroupSpec.RayStartParamsEntryR\x0erayStartParams\x12.\n\x07k8s_pod\x18\x06 \x01(\x0b\x32\x15.flyteidl.core.K8sPodR\x06k8sPod\x1a\x41\n\x13RayStartParamsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\xc0\x01\n\x14\x63om.flyteidl.pluginsB\x08RayProtoP\x01Z=github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/plugins\xa2\x02\x03\x46PX\xaa\x02\x10\x46lyteidl.Plugins\xca\x02\x10\x46lyteidl\\Plugins\xe2\x02\x1c\x46lyteidl\\Plugins\\GPBMetadata\xea\x02\x11\x46lyteidl::Pluginsb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -37,22 +37,18 @@ _globals['_RESOURCES_RESOURCEENTRY']._serialized_end=603 _globals['_RESOURCES_RESOURCENAME']._serialized_start=605 _globals['_RESOURCES_RESOURCENAME']._serialized_end=640 - _globals['_ENVVALUEFROM']._serialized_start=643 - _globals['_ENVVALUEFROM']._serialized_end=825 - _globals['_ENVVALUEFROM_SOURCE']._serialized_start=760 - _globals['_ENVVALUEFROM_SOURCE']._serialized_end=825 - _globals['_ENVVAR']._serialized_start=827 - _globals['_ENVVAR']._serialized_end=939 - _globals['_AUTOSCALEROPTIONS']._serialized_start=942 - _globals['_AUTOSCALEROPTIONS']._serialized_end=1175 - _globals['_RAYCLUSTER']._serialized_start=1178 - _globals['_RAYCLUSTER']._serialized_end=1473 - _globals['_HEADGROUPSPEC']._serialized_start=1476 - _globals['_HEADGROUPSPEC']._serialized_end=1701 - _globals['_HEADGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_start=1636 - _globals['_HEADGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_end=1701 - _globals['_WORKERGROUPSPEC']._serialized_start=1704 - _globals['_WORKERGROUPSPEC']._serialized_end=2062 - _globals['_WORKERGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_start=1636 - _globals['_WORKERGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_end=1701 + _globals['_ENVVAR']._serialized_start=642 + _globals['_ENVVAR']._serialized_end=692 + _globals['_AUTOSCALEROPTIONS']._serialized_start=695 + _globals['_AUTOSCALEROPTIONS']._serialized_end=928 + _globals['_RAYCLUSTER']._serialized_start=931 + _globals['_RAYCLUSTER']._serialized_end=1226 + _globals['_HEADGROUPSPEC']._serialized_start=1229 + _globals['_HEADGROUPSPEC']._serialized_end=1454 + _globals['_HEADGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_start=1389 + _globals['_HEADGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_end=1454 + _globals['_WORKERGROUPSPEC']._serialized_start=1457 + _globals['_WORKERGROUPSPEC']._serialized_end=1815 + _globals['_WORKERGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_start=1389 + _globals['_WORKERGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_end=1454 # @@protoc_insertion_point(module_scope) diff --git a/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.pyi b/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.pyi index 21af87086fe..5747ecc1767 100644 --- a/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.pyi +++ b/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.pyi @@ -42,35 +42,13 @@ class Resources(_message.Message): limits: _containers.RepeatedCompositeFieldContainer[Resources.ResourceEntry] def __init__(self, requests: _Optional[_Iterable[_Union[Resources.ResourceEntry, _Mapping]]] = ..., limits: _Optional[_Iterable[_Union[Resources.ResourceEntry, _Mapping]]] = ...) -> None: ... -class EnvValueFrom(_message.Message): - __slots__ = ["source", "name", "key"] - class Source(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] - CONFIGMAP: _ClassVar[EnvValueFrom.Source] - SECRET: _ClassVar[EnvValueFrom.Source] - RESOURCEFIELD: _ClassVar[EnvValueFrom.Source] - FIELD: _ClassVar[EnvValueFrom.Source] - CONFIGMAP: EnvValueFrom.Source - SECRET: EnvValueFrom.Source - RESOURCEFIELD: EnvValueFrom.Source - FIELD: EnvValueFrom.Source - SOURCE_FIELD_NUMBER: _ClassVar[int] - NAME_FIELD_NUMBER: _ClassVar[int] - KEY_FIELD_NUMBER: _ClassVar[int] - source: EnvValueFrom.Source - name: str - key: str - def __init__(self, source: _Optional[_Union[EnvValueFrom.Source, str]] = ..., name: _Optional[str] = ..., key: _Optional[str] = ...) -> None: ... - class EnvVar(_message.Message): - __slots__ = ["name", "value", "valueFrom"] + __slots__ = ["name", "value"] NAME_FIELD_NUMBER: _ClassVar[int] VALUE_FIELD_NUMBER: _ClassVar[int] - VALUEFROM_FIELD_NUMBER: _ClassVar[int] name: str value: str - valueFrom: EnvValueFrom - def __init__(self, name: _Optional[str] = ..., value: _Optional[str] = ..., valueFrom: _Optional[_Union[EnvValueFrom, _Mapping]] = ...) -> None: ... + def __init__(self, name: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ... class AutoscalerOptions(_message.Message): __slots__ = ["upscaling_mode", "idle_timeout_seconds", "env", "image", "resources"] diff --git a/flyteidl/gen/pb_rust/flyteidl.plugins.rs b/flyteidl/gen/pb_rust/flyteidl.plugins.rs index 5af71a7567e..85e72f54684 100644 --- a/flyteidl/gen/pb_rust/flyteidl.plugins.rs +++ b/flyteidl/gen/pb_rust/flyteidl.plugins.rs @@ -288,61 +288,11 @@ pub mod resources { } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct EnvValueFrom { - #[prost(enumeration="env_value_from::Source", tag="1")] - pub source: i32, - /// Name for config map or secret, container name for resource, path for field - #[prost(string, tag="2")] - pub name: ::prost::alloc::string::String, - /// Key for config map or secret, resource name for resource - #[prost(string, tag="3")] - pub key: ::prost::alloc::string::String, -} -/// Nested message and enum types in `EnvValueFrom`. -pub mod env_value_from { - /// Source of environment variable - #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] - #[repr(i32)] - pub enum Source { - Configmap = 0, - Secret = 1, - Resourcefield = 2, - Field = 3, - } - impl Source { - /// 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 { - Source::Configmap => "CONFIGMAP", - Source::Secret => "SECRET", - Source::Resourcefield => "RESOURCEFIELD", - Source::Field => "FIELD", - } - } - /// Creates an enum from field names used in the ProtoBuf definition. - pub fn from_str_name(value: &str) -> ::core::option::Option { - match value { - "CONFIGMAP" => Some(Self::Configmap), - "SECRET" => Some(Self::Secret), - "RESOURCEFIELD" => Some(Self::Resourcefield), - "FIELD" => Some(Self::Field), - _ => None, - } - } - } -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] pub struct EnvVar { #[prost(string, tag="1")] pub name: ::prost::alloc::string::String, #[prost(string, tag="2")] pub value: ::prost::alloc::string::String, - #[prost(message, optional, tag="3")] - pub value_from: ::core::option::Option, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] diff --git a/flyteidl/protos/flyteidl/plugins/ray.proto b/flyteidl/protos/flyteidl/plugins/ray.proto index 7ab72a21fab..f9df2d0f75c 100644 --- a/flyteidl/protos/flyteidl/plugins/ray.proto +++ b/flyteidl/protos/flyteidl/plugins/ray.proto @@ -47,25 +47,9 @@ message Resources { repeated ResourceEntry limits = 2; } -message EnvValueFrom { - // Source of environment variable - enum Source{ - CONFIGMAP = 0; - SECRET = 1; - RESOURCEFIELD = 2; - FIELD = 3; - } - Source source = 1; - // Name for config map or secret, container name for resource, path for field - string name = 2; - // Key for config map or secret, resource name for resource - string key = 3; -} - message EnvVar { string name = 1; string value = 2; - EnvValueFrom valueFrom = 3; } message AutoscalerOptions { From e21d69c5c46c3b7c2d99f18b58420d2ee16e566f Mon Sep 17 00:00:00 2001 From: Yuteng Chen Date: Thu, 2 Apr 2026 10:05:22 +0800 Subject: [PATCH 12/15] remote envfrom condition and test Signed-off-by: Yuteng Chen --- flyteplugins/go/tasks/plugins/k8s/ray/ray.go | 39 --------- .../go/tasks/plugins/k8s/ray/ray_test.go | 83 ------------------- 2 files changed, 122 deletions(-) diff --git a/flyteplugins/go/tasks/plugins/k8s/ray/ray.go b/flyteplugins/go/tasks/plugins/k8s/ray/ray.go index c12af845362..10f88281130 100644 --- a/flyteplugins/go/tasks/plugins/k8s/ray/ray.go +++ b/flyteplugins/go/tasks/plugins/k8s/ray/ray.go @@ -162,45 +162,6 @@ func NewAutoscalerOptions(options *plugins.AutoscalerOptions) *rayv1.AutoscalerO Name: name, Value: val, }) - } else if valueFrom := env.GetValueFrom(); valueFrom != nil { - var envValueSource *v1.EnvVarSource - switch valueFrom.GetSource() { - case plugins.EnvValueFrom_CONFIGMAP: - envValueSource = &v1.EnvVarSource{ - ConfigMapKeyRef: &v1.ConfigMapKeySelector{ - LocalObjectReference: v1.LocalObjectReference{ - Name: valueFrom.GetName(), - }, - Key: valueFrom.GetKey(), - }, - } - case plugins.EnvValueFrom_SECRET: - envValueSource = &v1.EnvVarSource{ - SecretKeyRef: &v1.SecretKeySelector{ - LocalObjectReference: v1.LocalObjectReference{ - Name: valueFrom.GetName(), - }, - Key: valueFrom.GetKey(), - }, - } - case plugins.EnvValueFrom_RESOURCEFIELD: - envValueSource = &v1.EnvVarSource{ - ResourceFieldRef: &v1.ResourceFieldSelector{ - ContainerName: valueFrom.GetName(), - Resource: valueFrom.GetKey(), - }, - } - default: - envValueSource = &v1.EnvVarSource{ - FieldRef: &v1.ObjectFieldSelector{ - FieldPath: valueFrom.GetKey(), - }, - } - } - autoScalarOptions.Env = append(autoScalarOptions.Env, v1.EnvVar{ - Name: name, - ValueFrom: envValueSource, - }) } } } diff --git a/flyteplugins/go/tasks/plugins/k8s/ray/ray_test.go b/flyteplugins/go/tasks/plugins/k8s/ray/ray_test.go index 399c2869558..b4e065fa49d 100644 --- a/flyteplugins/go/tasks/plugins/k8s/ray/ray_test.go +++ b/flyteplugins/go/tasks/plugins/k8s/ray/ray_test.go @@ -1717,87 +1717,4 @@ func TestNewAutoscalerOptions(t *testing.T) { assert.Equal(t, "FOO", result.Env[0].Name) assert.Equal(t, "bar", result.Env[0].Value) }) - - envValueFromTests := []struct { - name string - envVar *plugins.EnvVar - check func(t *testing.T, env corev1.EnvVar) - }{ - { - name: "configmap source", - envVar: &plugins.EnvVar{ - Name: "CM_VAR", - ValueFrom: &plugins.EnvValueFrom{ - Source: plugins.EnvValueFrom_CONFIGMAP, - Name: "my-cm", - Key: "key1", - }, - }, - check: func(t *testing.T, env corev1.EnvVar) { - require.NotNil(t, env.ValueFrom) - require.NotNil(t, env.ValueFrom.ConfigMapKeyRef) - assert.Equal(t, "my-cm", env.ValueFrom.ConfigMapKeyRef.Name) - assert.Equal(t, "key1", env.ValueFrom.ConfigMapKeyRef.Key) - }, - }, - { - name: "secret source", - envVar: &plugins.EnvVar{ - Name: "SECRET_VAR", - ValueFrom: &plugins.EnvValueFrom{ - Source: plugins.EnvValueFrom_SECRET, - Name: "my-secret", - Key: "token", - }, - }, - check: func(t *testing.T, env corev1.EnvVar) { - require.NotNil(t, env.ValueFrom) - require.NotNil(t, env.ValueFrom.SecretKeyRef) - assert.Equal(t, "my-secret", env.ValueFrom.SecretKeyRef.Name) - assert.Equal(t, "token", env.ValueFrom.SecretKeyRef.Key) - }, - }, - { - name: "resourcefield source", - envVar: &plugins.EnvVar{ - Name: "RESOURCE_VAR", - ValueFrom: &plugins.EnvValueFrom{ - Source: plugins.EnvValueFrom_RESOURCEFIELD, - Name: "ray-head", - Key: "limits.cpu", - }, - }, - check: func(t *testing.T, env corev1.EnvVar) { - require.NotNil(t, env.ValueFrom) - require.NotNil(t, env.ValueFrom.ResourceFieldRef) - assert.Equal(t, "ray-head", env.ValueFrom.ResourceFieldRef.ContainerName) - assert.Equal(t, "limits.cpu", env.ValueFrom.ResourceFieldRef.Resource) - }, - }, - { - name: "fieldref source (default)", - envVar: &plugins.EnvVar{ - Name: "FIELD_VAR", - ValueFrom: &plugins.EnvValueFrom{ - Source: plugins.EnvValueFrom_FIELD, - Key: "metadata.name", - }, - }, - check: func(t *testing.T, env corev1.EnvVar) { - require.NotNil(t, env.ValueFrom) - require.NotNil(t, env.ValueFrom.FieldRef) - assert.Equal(t, "metadata.name", env.ValueFrom.FieldRef.FieldPath) - }, - }, - } - for _, tt := range envValueFromTests { - t.Run("env valueFrom "+tt.name, func(t *testing.T) { - result := NewAutoscalerOptions(&plugins.AutoscalerOptions{ - Env: []*plugins.EnvVar{tt.envVar}, - }) - require.NotNil(t, result) - require.Len(t, result.Env, 1) - tt.check(t, result.Env[0]) - }) - } } From 6e84ac2fc3257182e20b6ddca528070ca61f776e Mon Sep 17 00:00:00 2001 From: Yuteng Chen Date: Thu, 2 Apr 2026 10:55:14 +0800 Subject: [PATCH 13/15] regen and fix bugs Signed-off-by: Yuteng Chen --- flyteidl/clients/go/assets/admin.swagger.json | 102 +-- flyteidl/gen/pb-es/flyteidl/plugins/ray_pb.ts | 214 ++----- flyteidl/gen/pb-go/flyteidl/plugins/ray.pb.go | 583 ++++++------------ .../flyteidl/service/admin.swagger.json | 102 +-- .../flyteidl/service/agent.swagger.json | 102 +-- .../external_plugin_service.swagger.json | 100 +-- .../gen/pb_python/flyteidl/plugins/ray_pb2.py | 41 +- .../pb_python/flyteidl/plugins/ray_pb2.pyi | 48 +- flyteidl/gen/pb_rust/flyteidl.plugins.rs | 87 +-- flyteidl/protos/flyteidl/plugins/ray.proto | 44 +- flyteplugins/go/tasks/plugins/k8s/ray/ray.go | 29 +- .../go/tasks/plugins/k8s/ray/ray_test.go | 52 +- 12 files changed, 543 insertions(+), 961 deletions(-) diff --git a/flyteidl/clients/go/assets/admin.swagger.json b/flyteidl/clients/go/assets/admin.swagger.json index 5f192adc3d4..4f0b9e77d55 100644 --- a/flyteidl/clients/go/assets/admin.swagger.json +++ b/flyteidl/clients/go/assets/admin.swagger.json @@ -4387,6 +4387,33 @@ "default": "UNDEFINED", "description": " - UNDEFINED: Default: no quality of service specified." }, + "ResourcesResourceEntry": { + "type": "object", + "properties": { + "name": { + "$ref": "#/definitions/ResourcesResourceName", + "description": "Resource name." + }, + "value": { + "type": "string", + "title": "Value must be a valid k8s quantity. See\nhttps://github.com/kubernetes/apimachinery/blob/master/pkg/api/resource/quantity.go#L30-L80" + } + }, + "description": "Encapsulates a resource name and value." + }, + "ResourcesResourceName": { + "type": "string", + "enum": [ + "UNKNOWN", + "CPU", + "GPU", + "MEMORY", + "STORAGE", + "EPHEMERAL_STORAGE" + ], + "default": "UNKNOWN", + "description": "Known resource names.\n\n - EPHEMERAL_STORAGE: For Kubernetes-based deployments, pods use ephemeral local storage for scratch space, caching, and for logs." + }, "RuntimeMetadataRuntimeType": { "type": "string", "enum": [ @@ -7073,7 +7100,7 @@ "description": "These will default to Flyte given paths. If provided, the system will not append known paths. If the task still\nneeds flyte's inputs and outputs path, add $(FLYTE_INPUT_FILE), $(FLYTE_OUTPUT_FILE) wherever makes sense and the\nsystem will populate these before executing the container." }, "resources": { - "$ref": "#/definitions/flyteidlcoreResources", + "$ref": "#/definitions/coreResources", "description": "Container resources requirement as specified by the container engine." }, "env": { @@ -8011,6 +8038,28 @@ "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" }, + "coreResources": { + "type": "object", + "properties": { + "requests": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/ResourcesResourceEntry" + }, + "description": "The desired set of resources requested. ResourceNames must be unique within the list." + }, + "limits": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/ResourcesResourceEntry" + }, + "description": "Defines a set of bounds (e.g. min/max) within which the task can reliably run. ResourceNames must be unique\nwithin the list." + } + }, + "description": "A customizable interface to convey resources requested for a container. This can be interpreted differently for different\ncontainer engines." + }, "coreRetryStrategy": { "type": "object", "properties": { @@ -8445,7 +8494,7 @@ "type": "object", "properties": { "resources": { - "$ref": "#/definitions/flyteidlcoreResources", + "$ref": "#/definitions/coreResources", "description": "A customizable interface to convey resources requested for a task container." }, "extended_resources": { @@ -9265,55 +9314,6 @@ ], "default": "MINUS" }, - "flyteidlcoreResources": { - "type": "object", - "properties": { - "requests": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/flyteidlcoreResourcesResourceEntry" - }, - "description": "The desired set of resources requested. ResourceNames must be unique within the list." - }, - "limits": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/flyteidlcoreResourcesResourceEntry" - }, - "description": "Defines a set of bounds (e.g. min/max) within which the task can reliably run. ResourceNames must be unique\nwithin the list." - } - }, - "description": "A customizable interface to convey resources requested for a container. This can be interpreted differently for different\ncontainer engines." - }, - "flyteidlcoreResourcesResourceEntry": { - "type": "object", - "properties": { - "name": { - "$ref": "#/definitions/flyteidlcoreResourcesResourceName", - "description": "Resource name." - }, - "value": { - "type": "string", - "title": "Value must be a valid k8s quantity. See\nhttps://github.com/kubernetes/apimachinery/blob/master/pkg/api/resource/quantity.go#L30-L80" - } - }, - "description": "Encapsulates a resource name and value." - }, - "flyteidlcoreResourcesResourceName": { - "type": "string", - "enum": [ - "UNKNOWN", - "CPU", - "GPU", - "MEMORY", - "STORAGE", - "EPHEMERAL_STORAGE" - ], - "default": "UNKNOWN", - "description": "Known resource names.\n\n - EPHEMERAL_STORAGE: For Kubernetes-based deployments, pods use ephemeral local storage for scratch space, caching, and for logs." - }, "flyteidlcoreSchema": { "type": "object", "properties": { diff --git a/flyteidl/gen/pb-es/flyteidl/plugins/ray_pb.ts b/flyteidl/gen/pb-es/flyteidl/plugins/ray_pb.ts index ca491d6ef26..0fbba912515 100644 --- a/flyteidl/gen/pb-es/flyteidl/plugins/ray_pb.ts +++ b/flyteidl/gen/pb-es/flyteidl/plugins/ray_pb.ts @@ -5,7 +5,8 @@ import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; import { Message, proto3 } from "@bufbuild/protobuf"; -import { K8sPod } from "../core/tasks_pb.js"; +import { KeyValuePair } from "../core/literals_pb.js"; +import { K8sPod, Resources } from "../core/tasks_pb.js"; /** * RayJobSpec defines the desired state of RayJob @@ -83,179 +84,14 @@ export class RayJob extends Message { } } -/** - * @generated from message flyteidl.plugins.Resources - */ -export class Resources extends Message { - /** - * The desired set of resources requested. ResourceNames must be unique within the list. - * - * @generated from field: repeated flyteidl.plugins.Resources.ResourceEntry requests = 1; - */ - requests: Resources_ResourceEntry[] = []; - - /** - * Defines a set of bounds (e.g. min/max) within which the task can reliably run. ResourceNames must be unique - * within the list. - * - * @generated from field: repeated flyteidl.plugins.Resources.ResourceEntry limits = 2; - */ - limits: Resources_ResourceEntry[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "flyteidl.plugins.Resources"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "requests", kind: "message", T: Resources_ResourceEntry, repeated: true }, - { no: 2, name: "limits", kind: "message", T: Resources_ResourceEntry, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): Resources { - return new Resources().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): Resources { - return new Resources().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): Resources { - return new Resources().fromJsonString(jsonString, options); - } - - static equals(a: Resources | PlainMessage | undefined, b: Resources | PlainMessage | undefined): boolean { - return proto3.util.equals(Resources, a, b); - } -} - -/** - * Known resource names. - * - * @generated from enum flyteidl.plugins.Resources.ResourceName - */ -export enum Resources_ResourceName { - /** - * @generated from enum value: CPU = 0; - */ - CPU = 0, - - /** - * @generated from enum value: MEMORY = 1; - */ - MEMORY = 1, -} -// Retrieve enum metadata with: proto3.getEnumType(Resources_ResourceName) -proto3.util.setEnumType(Resources_ResourceName, "flyteidl.plugins.Resources.ResourceName", [ - { no: 0, name: "CPU" }, - { no: 1, name: "MEMORY" }, -]); - -/** - * Encapsulates a resource name and value. - * - * @generated from message flyteidl.plugins.Resources.ResourceEntry - */ -export class Resources_ResourceEntry extends Message { - /** - * Resource name. - * - * @generated from field: flyteidl.plugins.Resources.ResourceName name = 1; - */ - name = Resources_ResourceName.CPU; - - /** - * Value must be a valid k8s quantity. See - * https://github.com/kubernetes/apimachinery/blob/master/pkg/api/resource/quantity.go#L30-L80 - * - * @generated from field: string value = 2; - */ - value = ""; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "flyteidl.plugins.Resources.ResourceEntry"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "name", kind: "enum", T: proto3.getEnumType(Resources_ResourceName) }, - { no: 2, name: "value", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): Resources_ResourceEntry { - return new Resources_ResourceEntry().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): Resources_ResourceEntry { - return new Resources_ResourceEntry().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): Resources_ResourceEntry { - return new Resources_ResourceEntry().fromJsonString(jsonString, options); - } - - static equals(a: Resources_ResourceEntry | PlainMessage | undefined, b: Resources_ResourceEntry | PlainMessage | undefined): boolean { - return proto3.util.equals(Resources_ResourceEntry, a, b); - } -} - -/** - * @generated from message flyteidl.plugins.EnvVar - */ -export class EnvVar extends Message { - /** - * @generated from field: string name = 1; - */ - name = ""; - - /** - * @generated from field: string value = 2; - */ - value = ""; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "flyteidl.plugins.EnvVar"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "value", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): EnvVar { - return new EnvVar().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): EnvVar { - return new EnvVar().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): EnvVar { - return new EnvVar().fromJsonString(jsonString, options); - } - - static equals(a: EnvVar | PlainMessage | undefined, b: EnvVar | PlainMessage | undefined): boolean { - return proto3.util.equals(EnvVar, a, b); - } -} - /** * @generated from message flyteidl.plugins.AutoscalerOptions */ export class AutoscalerOptions extends Message { /** - * "Default", "Aggressive", "Conservative" - * - * @generated from field: string upscaling_mode = 1; + * @generated from field: flyteidl.plugins.AutoscalerOptions.UpscalingMode upscaling_mode = 1; */ - upscalingMode = ""; + upscalingMode = AutoscalerOptions_UpscalingMode.UNSPECIFIED; /** * @generated from field: int32 idle_timeout_seconds = 2; @@ -265,9 +101,9 @@ export class AutoscalerOptions extends Message { /** * autoscaler sidecar env vars * - * @generated from field: repeated flyteidl.plugins.EnvVar env = 3; + * @generated from field: repeated flyteidl.core.KeyValuePair env = 3; */ - env: EnvVar[] = []; + env: KeyValuePair[] = []; /** * custom autoscaler image @@ -279,7 +115,7 @@ export class AutoscalerOptions extends Message { /** * autoscaler container resources * - * @generated from field: flyteidl.plugins.Resources resources = 5; + * @generated from field: flyteidl.core.Resources resources = 5; */ resources?: Resources; @@ -291,9 +127,9 @@ export class AutoscalerOptions extends Message { static readonly runtime: typeof proto3 = proto3; static readonly typeName = "flyteidl.plugins.AutoscalerOptions"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "upscaling_mode", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 1, name: "upscaling_mode", kind: "enum", T: proto3.getEnumType(AutoscalerOptions_UpscalingMode) }, { no: 2, name: "idle_timeout_seconds", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, - { no: 3, name: "env", kind: "message", T: EnvVar, repeated: true }, + { no: 3, name: "env", kind: "message", T: KeyValuePair, repeated: true }, { no: 4, name: "image", kind: "scalar", T: 9 /* ScalarType.STRING */ }, { no: 5, name: "resources", kind: "message", T: Resources }, ]); @@ -315,6 +151,38 @@ export class AutoscalerOptions extends Message { } } +/** + * @generated from enum flyteidl.plugins.AutoscalerOptions.UpscalingMode + */ +export enum AutoscalerOptions_UpscalingMode { + /** + * @generated from enum value: UPSCALING_MODE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * @generated from enum value: UPSCALING_MODE_DEFAULT = 1; + */ + DEFAULT = 1, + + /** + * @generated from enum value: UPSCALING_MODE_AGGRESSIVE = 2; + */ + AGGRESSIVE = 2, + + /** + * @generated from enum value: UPSCALING_MODE_CONSERVATIVE = 3; + */ + CONSERVATIVE = 3, +} +// Retrieve enum metadata with: proto3.getEnumType(AutoscalerOptions_UpscalingMode) +proto3.util.setEnumType(AutoscalerOptions_UpscalingMode, "flyteidl.plugins.AutoscalerOptions.UpscalingMode", [ + { no: 0, name: "UPSCALING_MODE_UNSPECIFIED" }, + { no: 1, name: "UPSCALING_MODE_DEFAULT" }, + { no: 2, name: "UPSCALING_MODE_AGGRESSIVE" }, + { no: 3, name: "UPSCALING_MODE_CONSERVATIVE" }, +]); + /** * Define Ray cluster defines the desired state of RayCluster * diff --git a/flyteidl/gen/pb-go/flyteidl/plugins/ray.pb.go b/flyteidl/gen/pb-go/flyteidl/plugins/ray.pb.go index 51f8db67b4f..26f946a1efe 100644 --- a/flyteidl/gen/pb-go/flyteidl/plugins/ray.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/plugins/ray.pb.go @@ -21,50 +21,55 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// Known resource names. -type Resources_ResourceName int32 +type AutoscalerOptions_UpscalingMode int32 const ( - Resources_CPU Resources_ResourceName = 0 - Resources_MEMORY Resources_ResourceName = 1 + AutoscalerOptions_UPSCALING_MODE_UNSPECIFIED AutoscalerOptions_UpscalingMode = 0 + AutoscalerOptions_UPSCALING_MODE_DEFAULT AutoscalerOptions_UpscalingMode = 1 + AutoscalerOptions_UPSCALING_MODE_AGGRESSIVE AutoscalerOptions_UpscalingMode = 2 + AutoscalerOptions_UPSCALING_MODE_CONSERVATIVE AutoscalerOptions_UpscalingMode = 3 ) -// Enum value maps for Resources_ResourceName. +// Enum value maps for AutoscalerOptions_UpscalingMode. var ( - Resources_ResourceName_name = map[int32]string{ - 0: "CPU", - 1: "MEMORY", - } - Resources_ResourceName_value = map[string]int32{ - "CPU": 0, - "MEMORY": 1, + AutoscalerOptions_UpscalingMode_name = map[int32]string{ + 0: "UPSCALING_MODE_UNSPECIFIED", + 1: "UPSCALING_MODE_DEFAULT", + 2: "UPSCALING_MODE_AGGRESSIVE", + 3: "UPSCALING_MODE_CONSERVATIVE", + } + AutoscalerOptions_UpscalingMode_value = map[string]int32{ + "UPSCALING_MODE_UNSPECIFIED": 0, + "UPSCALING_MODE_DEFAULT": 1, + "UPSCALING_MODE_AGGRESSIVE": 2, + "UPSCALING_MODE_CONSERVATIVE": 3, } ) -func (x Resources_ResourceName) Enum() *Resources_ResourceName { - p := new(Resources_ResourceName) +func (x AutoscalerOptions_UpscalingMode) Enum() *AutoscalerOptions_UpscalingMode { + p := new(AutoscalerOptions_UpscalingMode) *p = x return p } -func (x Resources_ResourceName) String() string { +func (x AutoscalerOptions_UpscalingMode) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (Resources_ResourceName) Descriptor() protoreflect.EnumDescriptor { +func (AutoscalerOptions_UpscalingMode) Descriptor() protoreflect.EnumDescriptor { return file_flyteidl_plugins_ray_proto_enumTypes[0].Descriptor() } -func (Resources_ResourceName) Type() protoreflect.EnumType { +func (AutoscalerOptions_UpscalingMode) Type() protoreflect.EnumType { return &file_flyteidl_plugins_ray_proto_enumTypes[0] } -func (x Resources_ResourceName) Number() protoreflect.EnumNumber { +func (x AutoscalerOptions_UpscalingMode) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use Resources_ResourceName.Descriptor instead. -func (Resources_ResourceName) EnumDescriptor() ([]byte, []int) { +// Deprecated: Use AutoscalerOptions_UpscalingMode.Descriptor instead. +func (AutoscalerOptions_UpscalingMode) EnumDescriptor() ([]byte, []int) { return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{1, 0} } @@ -158,139 +163,25 @@ func (x *RayJob) GetRuntimeEnvYaml() string { return "" } -type Resources struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The desired set of resources requested. ResourceNames must be unique within the list. - Requests []*Resources_ResourceEntry `protobuf:"bytes,1,rep,name=requests,proto3" json:"requests,omitempty"` - // Defines a set of bounds (e.g. min/max) within which the task can reliably run. ResourceNames must be unique - // within the list. - Limits []*Resources_ResourceEntry `protobuf:"bytes,2,rep,name=limits,proto3" json:"limits,omitempty"` -} - -func (x *Resources) Reset() { - *x = Resources{} - if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_plugins_ray_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Resources) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Resources) ProtoMessage() {} - -func (x *Resources) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_plugins_ray_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 Resources.ProtoReflect.Descriptor instead. -func (*Resources) Descriptor() ([]byte, []int) { - return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{1} -} - -func (x *Resources) GetRequests() []*Resources_ResourceEntry { - if x != nil { - return x.Requests - } - return nil -} - -func (x *Resources) GetLimits() []*Resources_ResourceEntry { - if x != nil { - return x.Limits - } - return nil -} - -type EnvVar struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` -} - -func (x *EnvVar) Reset() { - *x = EnvVar{} - if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_plugins_ray_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *EnvVar) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*EnvVar) ProtoMessage() {} - -func (x *EnvVar) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_plugins_ray_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 EnvVar.ProtoReflect.Descriptor instead. -func (*EnvVar) Descriptor() ([]byte, []int) { - return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{2} -} - -func (x *EnvVar) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *EnvVar) GetValue() string { - if x != nil { - return x.Value - } - return "" -} - type AutoscalerOptions struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // "Default", "Aggressive", "Conservative" - UpscalingMode string `protobuf:"bytes,1,opt,name=upscaling_mode,json=upscalingMode,proto3" json:"upscaling_mode,omitempty"` - IdleTimeoutSeconds int32 `protobuf:"varint,2,opt,name=idle_timeout_seconds,json=idleTimeoutSeconds,proto3" json:"idle_timeout_seconds,omitempty"` + UpscalingMode AutoscalerOptions_UpscalingMode `protobuf:"varint,1,opt,name=upscaling_mode,json=upscalingMode,proto3,enum=flyteidl.plugins.AutoscalerOptions_UpscalingMode" json:"upscaling_mode,omitempty"` + IdleTimeoutSeconds int32 `protobuf:"varint,2,opt,name=idle_timeout_seconds,json=idleTimeoutSeconds,proto3" json:"idle_timeout_seconds,omitempty"` // autoscaler sidecar env vars - Env []*EnvVar `protobuf:"bytes,3,rep,name=env,proto3" json:"env,omitempty"` + Env []*core.KeyValuePair `protobuf:"bytes,3,rep,name=env,proto3" json:"env,omitempty"` // custom autoscaler image Image string `protobuf:"bytes,4,opt,name=image,proto3" json:"image,omitempty"` // autoscaler container resources - Resources *Resources `protobuf:"bytes,5,opt,name=resources,proto3" json:"resources,omitempty"` + Resources *core.Resources `protobuf:"bytes,5,opt,name=resources,proto3" json:"resources,omitempty"` } func (x *AutoscalerOptions) Reset() { *x = AutoscalerOptions{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_plugins_ray_proto_msgTypes[3] + mi := &file_flyteidl_plugins_ray_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -303,7 +194,7 @@ func (x *AutoscalerOptions) String() string { func (*AutoscalerOptions) ProtoMessage() {} func (x *AutoscalerOptions) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_plugins_ray_proto_msgTypes[3] + mi := &file_flyteidl_plugins_ray_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -316,14 +207,14 @@ func (x *AutoscalerOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use AutoscalerOptions.ProtoReflect.Descriptor instead. func (*AutoscalerOptions) Descriptor() ([]byte, []int) { - return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{3} + return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{1} } -func (x *AutoscalerOptions) GetUpscalingMode() string { +func (x *AutoscalerOptions) GetUpscalingMode() AutoscalerOptions_UpscalingMode { if x != nil { return x.UpscalingMode } - return "" + return AutoscalerOptions_UPSCALING_MODE_UNSPECIFIED } func (x *AutoscalerOptions) GetIdleTimeoutSeconds() int32 { @@ -333,7 +224,7 @@ func (x *AutoscalerOptions) GetIdleTimeoutSeconds() int32 { return 0 } -func (x *AutoscalerOptions) GetEnv() []*EnvVar { +func (x *AutoscalerOptions) GetEnv() []*core.KeyValuePair { if x != nil { return x.Env } @@ -347,7 +238,7 @@ func (x *AutoscalerOptions) GetImage() string { return "" } -func (x *AutoscalerOptions) GetResources() *Resources { +func (x *AutoscalerOptions) GetResources() *core.Resources { if x != nil { return x.Resources } @@ -372,7 +263,7 @@ type RayCluster struct { func (x *RayCluster) Reset() { *x = RayCluster{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_plugins_ray_proto_msgTypes[4] + mi := &file_flyteidl_plugins_ray_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -385,7 +276,7 @@ func (x *RayCluster) String() string { func (*RayCluster) ProtoMessage() {} func (x *RayCluster) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_plugins_ray_proto_msgTypes[4] + mi := &file_flyteidl_plugins_ray_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -398,7 +289,7 @@ func (x *RayCluster) ProtoReflect() protoreflect.Message { // Deprecated: Use RayCluster.ProtoReflect.Descriptor instead. func (*RayCluster) Descriptor() ([]byte, []int) { - return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{4} + return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{2} } func (x *RayCluster) GetHeadGroupSpec() *HeadGroupSpec { @@ -445,7 +336,7 @@ type HeadGroupSpec struct { func (x *HeadGroupSpec) Reset() { *x = HeadGroupSpec{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_plugins_ray_proto_msgTypes[5] + mi := &file_flyteidl_plugins_ray_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -458,7 +349,7 @@ func (x *HeadGroupSpec) String() string { func (*HeadGroupSpec) ProtoMessage() {} func (x *HeadGroupSpec) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_plugins_ray_proto_msgTypes[5] + mi := &file_flyteidl_plugins_ray_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -471,7 +362,7 @@ func (x *HeadGroupSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use HeadGroupSpec.ProtoReflect.Descriptor instead. func (*HeadGroupSpec) Descriptor() ([]byte, []int) { - return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{5} + return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{3} } func (x *HeadGroupSpec) GetRayStartParams() map[string]string { @@ -512,7 +403,7 @@ type WorkerGroupSpec struct { func (x *WorkerGroupSpec) Reset() { *x = WorkerGroupSpec{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_plugins_ray_proto_msgTypes[6] + mi := &file_flyteidl_plugins_ray_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -525,7 +416,7 @@ func (x *WorkerGroupSpec) String() string { func (*WorkerGroupSpec) ProtoMessage() {} func (x *WorkerGroupSpec) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_plugins_ray_proto_msgTypes[6] + mi := &file_flyteidl_plugins_ray_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -538,7 +429,7 @@ func (x *WorkerGroupSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkerGroupSpec.ProtoReflect.Descriptor instead. func (*WorkerGroupSpec) Descriptor() ([]byte, []int) { - return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{6} + return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{4} } func (x *WorkerGroupSpec) GetGroupName() string { @@ -583,65 +474,6 @@ func (x *WorkerGroupSpec) GetK8SPod() *core.K8SPod { return nil } -// Encapsulates a resource name and value. -type Resources_ResourceEntry struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Resource name. - Name Resources_ResourceName `protobuf:"varint,1,opt,name=name,proto3,enum=flyteidl.plugins.Resources_ResourceName" json:"name,omitempty"` - // Value must be a valid k8s quantity. See - // https://github.com/kubernetes/apimachinery/blob/master/pkg/api/resource/quantity.go#L30-L80 - Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` -} - -func (x *Resources_ResourceEntry) Reset() { - *x = Resources_ResourceEntry{} - if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_plugins_ray_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Resources_ResourceEntry) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Resources_ResourceEntry) ProtoMessage() {} - -func (x *Resources_ResourceEntry) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_plugins_ray_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 Resources_ResourceEntry.ProtoReflect.Descriptor instead. -func (*Resources_ResourceEntry) Descriptor() ([]byte, []int) { - return file_flyteidl_plugins_ray_proto_rawDescGZIP(), []int{1, 0} -} - -func (x *Resources_ResourceEntry) GetName() Resources_ResourceName { - if x != nil { - return x.Name - } - return Resources_CPU -} - -func (x *Resources_ResourceEntry) GetValue() string { - if x != nil { - return x.Value - } - return "" -} - var File_flyteidl_plugins_ray_proto protoreflect.FileDescriptor var file_flyteidl_plugins_ray_proto_rawDesc = []byte{ @@ -649,129 +481,121 @@ var file_flyteidl_plugins_ray_proto_rawDesc = []byte{ 0x6e, 0x73, 0x2f, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 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, 0x92, 0x02, 0x0a, 0x06, 0x52, 0x61, - 0x79, 0x4a, 0x6f, 0x62, 0x12, 0x3d, 0x0a, 0x0b, 0x72, 0x61, 0x79, 0x5f, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x52, 0x61, 0x79, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x0a, 0x72, 0x61, 0x79, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0b, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x65, - 0x6e, 0x76, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0a, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x76, 0x12, 0x3d, 0x0a, 0x1b, 0x73, 0x68, 0x75, 0x74, - 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x66, - 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x73, - 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x41, 0x66, 0x74, 0x65, 0x72, 0x4a, 0x6f, 0x62, 0x46, - 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x1a, 0x74, 0x74, 0x6c, 0x5f, 0x73, - 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6e, - 0x69, 0x73, 0x68, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x74, 0x74, 0x6c, - 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x41, 0x66, 0x74, 0x65, 0x72, 0x46, 0x69, 0x6e, 0x69, - 0x73, 0x68, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, - 0x65, 0x6e, 0x76, 0x5f, 0x79, 0x61, 0x6d, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x76, 0x59, 0x61, 0x6d, 0x6c, 0x22, 0x9f, - 0x02, 0x0a, 0x09, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x08, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, - 0x73, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x73, 0x12, 0x41, 0x0a, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x1a, 0x63, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x3c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x23, 0x0a, 0x0c, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x07, 0x0a, 0x03, 0x43, - 0x50, 0x55, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x45, 0x4d, 0x4f, 0x52, 0x59, 0x10, 0x01, - 0x22, 0x32, 0x0a, 0x06, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x22, 0xe9, 0x01, 0x0a, 0x11, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, - 0x6c, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x75, 0x70, - 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x75, 0x70, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, - 0x65, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, - 0x74, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x12, 0x69, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x63, 0x6f, - 0x6e, 0x64, 0x73, 0x12, 0x2a, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, - 0x69, 0x6e, 0x73, 0x2e, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x12, - 0x14, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x39, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x22, 0xa7, 0x02, 0x0a, 0x0a, 0x52, 0x61, 0x79, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, - 0x47, 0x0a, 0x0f, 0x68, 0x65, 0x61, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x70, - 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0d, 0x68, 0x65, 0x61, 0x64, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x4d, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, - 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0f, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x2d, 0x0a, 0x12, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x11, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x73, - 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x52, 0x0a, 0x12, 0x61, 0x75, 0x74, 0x6f, 0x73, 0x63, - 0x61, 0x6c, 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x11, 0x61, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, - 0x6c, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xe1, 0x01, 0x0a, 0x0d, 0x48, - 0x65, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x5d, 0x0a, 0x10, - 0x72, 0x61, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x52, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x61, 0x79, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2e, 0x0a, 0x07, 0x6b, - 0x38, 0x73, 0x5f, 0x70, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4b, 0x38, 0x73, - 0x50, 0x6f, 0x64, 0x52, 0x06, 0x6b, 0x38, 0x73, 0x50, 0x6f, 0x64, 0x1a, 0x41, 0x0a, 0x13, 0x52, - 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 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, 0xe6, - 0x02, 0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, - 0x65, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x21, 0x0a, - 0x0c, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, - 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x73, 0x12, 0x5f, 0x0a, 0x10, 0x72, 0x61, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, - 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, + 0x73, 0x6b, 0x73, 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, 0x92, 0x02, 0x0a, 0x06, 0x52, 0x61, 0x79, 0x4a, + 0x6f, 0x62, 0x12, 0x3d, 0x0a, 0x0b, 0x72, 0x61, 0x79, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x52, 0x61, 0x79, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x0a, 0x72, 0x61, 0x79, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x12, 0x23, 0x0a, 0x0b, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x65, 0x6e, 0x76, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0a, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x76, 0x12, 0x3d, 0x0a, 0x1b, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6f, + 0x77, 0x6e, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x66, 0x69, 0x6e, + 0x69, 0x73, 0x68, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x73, 0x68, 0x75, + 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x41, 0x66, 0x74, 0x65, 0x72, 0x4a, 0x6f, 0x62, 0x46, 0x69, 0x6e, + 0x69, 0x73, 0x68, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x1a, 0x74, 0x74, 0x6c, 0x5f, 0x73, 0x65, 0x63, + 0x6f, 0x6e, 0x64, 0x73, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, + 0x68, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x74, 0x74, 0x6c, 0x53, 0x65, + 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x41, 0x66, 0x74, 0x65, 0x72, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, + 0x65, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x65, 0x6e, + 0x76, 0x5f, 0x79, 0x61, 0x6d, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x76, 0x59, 0x61, 0x6d, 0x6c, 0x22, 0xaa, 0x03, 0x0a, + 0x11, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x0e, 0x75, 0x70, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x5f, + 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x41, 0x75, + 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x55, 0x70, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x0d, 0x75, + 0x70, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x30, 0x0a, 0x14, + 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, + 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x69, 0x64, 0x6c, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x2d, + 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x12, 0x14, 0x0a, + 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x18, 0x05, 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, 0x22, 0x8b, 0x01, 0x0a, 0x0d, + 0x55, 0x70, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x0a, + 0x1a, 0x55, 0x50, 0x53, 0x43, 0x41, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, + 0x16, 0x55, 0x50, 0x53, 0x43, 0x41, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, + 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x55, 0x50, 0x53, + 0x43, 0x41, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x41, 0x47, 0x47, 0x52, + 0x45, 0x53, 0x53, 0x49, 0x56, 0x45, 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x55, 0x50, 0x53, 0x43, + 0x41, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x45, + 0x52, 0x56, 0x41, 0x54, 0x49, 0x56, 0x45, 0x10, 0x03, 0x22, 0xa7, 0x02, 0x0a, 0x0a, 0x52, 0x61, + 0x79, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x47, 0x0a, 0x0f, 0x68, 0x65, 0x61, 0x64, + 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, + 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, + 0x65, 0x63, 0x52, 0x0d, 0x68, 0x65, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, + 0x63, 0x12, 0x4d, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, + 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x52, + 0x0f, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, + 0x12, 0x2d, 0x0a, 0x12, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x73, + 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x12, + 0x52, 0x0a, 0x12, 0x61, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x5f, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x41, + 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x11, 0x61, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x22, 0xe1, 0x01, 0x0a, 0x0d, 0x48, 0x65, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x5d, 0x0a, 0x10, 0x72, 0x61, 0x79, 0x5f, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x33, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, + 0x6e, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x52, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2e, 0x0a, 0x07, 0x6b, 0x38, 0x73, 0x5f, 0x70, 0x6f, 0x64, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4b, 0x38, 0x73, 0x50, 0x6f, 0x64, 0x52, 0x06, 0x6b, 0x38, 0x73, 0x50, 0x6f, 0x64, 0x1a, 0x41, 0x0a, 0x13, 0x52, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 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, 0x42, 0xc0, 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, - 0x42, 0x08, 0x52, 0x61, 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, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0xa2, 0x02, 0x03, 0x46, 0x50, - 0x58, 0xaa, 0x02, 0x10, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x50, 0x6c, 0x75, - 0x67, 0x69, 0x6e, 0x73, 0xca, 0x02, 0x10, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, - 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0xe2, 0x02, 0x1c, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x5c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 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, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe6, 0x02, 0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6b, + 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x69, + 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x78, + 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0b, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x5f, 0x0a, 0x10, + 0x72, 0x61, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x52, 0x61, 0x79, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, + 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2e, 0x0a, + 0x07, 0x6b, 0x38, 0x73, 0x5f, 0x70, 0x6f, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4b, + 0x38, 0x73, 0x50, 0x6f, 0x64, 0x52, 0x06, 0x6b, 0x38, 0x73, 0x50, 0x6f, 0x64, 0x1a, 0x41, 0x0a, + 0x13, 0x52, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 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, + 0x42, 0xc0, 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x42, 0x08, 0x52, 0x61, 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, 0x70, 0x6c, 0x75, + 0x67, 0x69, 0x6e, 0x73, 0xa2, 0x02, 0x03, 0x46, 0x50, 0x58, 0xaa, 0x02, 0x10, 0x46, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0xca, 0x02, 0x10, + 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, + 0xe2, 0x02, 0x1c, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x50, 0x6c, 0x75, 0x67, + 0x69, 0x6e, 0x73, 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, 0x50, 0x6c, 0x75, 0x67, + 0x69, 0x6e, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -787,40 +611,37 @@ func file_flyteidl_plugins_ray_proto_rawDescGZIP() []byte { } var file_flyteidl_plugins_ray_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_flyteidl_plugins_ray_proto_msgTypes = make([]protoimpl.MessageInfo, 10) +var file_flyteidl_plugins_ray_proto_msgTypes = make([]protoimpl.MessageInfo, 7) var file_flyteidl_plugins_ray_proto_goTypes = []interface{}{ - (Resources_ResourceName)(0), // 0: flyteidl.plugins.Resources.ResourceName - (*RayJob)(nil), // 1: flyteidl.plugins.RayJob - (*Resources)(nil), // 2: flyteidl.plugins.Resources - (*EnvVar)(nil), // 3: flyteidl.plugins.EnvVar - (*AutoscalerOptions)(nil), // 4: flyteidl.plugins.AutoscalerOptions - (*RayCluster)(nil), // 5: flyteidl.plugins.RayCluster - (*HeadGroupSpec)(nil), // 6: flyteidl.plugins.HeadGroupSpec - (*WorkerGroupSpec)(nil), // 7: flyteidl.plugins.WorkerGroupSpec - (*Resources_ResourceEntry)(nil), // 8: flyteidl.plugins.Resources.ResourceEntry - nil, // 9: flyteidl.plugins.HeadGroupSpec.RayStartParamsEntry - nil, // 10: flyteidl.plugins.WorkerGroupSpec.RayStartParamsEntry - (*core.K8SPod)(nil), // 11: flyteidl.core.K8sPod + (AutoscalerOptions_UpscalingMode)(0), // 0: flyteidl.plugins.AutoscalerOptions.UpscalingMode + (*RayJob)(nil), // 1: flyteidl.plugins.RayJob + (*AutoscalerOptions)(nil), // 2: flyteidl.plugins.AutoscalerOptions + (*RayCluster)(nil), // 3: flyteidl.plugins.RayCluster + (*HeadGroupSpec)(nil), // 4: flyteidl.plugins.HeadGroupSpec + (*WorkerGroupSpec)(nil), // 5: flyteidl.plugins.WorkerGroupSpec + nil, // 6: flyteidl.plugins.HeadGroupSpec.RayStartParamsEntry + nil, // 7: flyteidl.plugins.WorkerGroupSpec.RayStartParamsEntry + (*core.KeyValuePair)(nil), // 8: flyteidl.core.KeyValuePair + (*core.Resources)(nil), // 9: flyteidl.core.Resources + (*core.K8SPod)(nil), // 10: flyteidl.core.K8sPod } var file_flyteidl_plugins_ray_proto_depIdxs = []int32{ - 5, // 0: flyteidl.plugins.RayJob.ray_cluster:type_name -> flyteidl.plugins.RayCluster - 8, // 1: flyteidl.plugins.Resources.requests:type_name -> flyteidl.plugins.Resources.ResourceEntry - 8, // 2: flyteidl.plugins.Resources.limits:type_name -> flyteidl.plugins.Resources.ResourceEntry - 3, // 3: flyteidl.plugins.AutoscalerOptions.env:type_name -> flyteidl.plugins.EnvVar - 2, // 4: flyteidl.plugins.AutoscalerOptions.resources:type_name -> flyteidl.plugins.Resources - 6, // 5: flyteidl.plugins.RayCluster.head_group_spec:type_name -> flyteidl.plugins.HeadGroupSpec - 7, // 6: flyteidl.plugins.RayCluster.worker_group_spec:type_name -> flyteidl.plugins.WorkerGroupSpec - 4, // 7: flyteidl.plugins.RayCluster.autoscaler_options:type_name -> flyteidl.plugins.AutoscalerOptions - 9, // 8: flyteidl.plugins.HeadGroupSpec.ray_start_params:type_name -> flyteidl.plugins.HeadGroupSpec.RayStartParamsEntry - 11, // 9: flyteidl.plugins.HeadGroupSpec.k8s_pod:type_name -> flyteidl.core.K8sPod - 10, // 10: flyteidl.plugins.WorkerGroupSpec.ray_start_params:type_name -> flyteidl.plugins.WorkerGroupSpec.RayStartParamsEntry - 11, // 11: flyteidl.plugins.WorkerGroupSpec.k8s_pod:type_name -> flyteidl.core.K8sPod - 0, // 12: flyteidl.plugins.Resources.ResourceEntry.name:type_name -> flyteidl.plugins.Resources.ResourceName - 13, // [13:13] is the sub-list for method output_type - 13, // [13:13] 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 + 3, // 0: flyteidl.plugins.RayJob.ray_cluster:type_name -> flyteidl.plugins.RayCluster + 0, // 1: flyteidl.plugins.AutoscalerOptions.upscaling_mode:type_name -> flyteidl.plugins.AutoscalerOptions.UpscalingMode + 8, // 2: flyteidl.plugins.AutoscalerOptions.env:type_name -> flyteidl.core.KeyValuePair + 9, // 3: flyteidl.plugins.AutoscalerOptions.resources:type_name -> flyteidl.core.Resources + 4, // 4: flyteidl.plugins.RayCluster.head_group_spec:type_name -> flyteidl.plugins.HeadGroupSpec + 5, // 5: flyteidl.plugins.RayCluster.worker_group_spec:type_name -> flyteidl.plugins.WorkerGroupSpec + 2, // 6: flyteidl.plugins.RayCluster.autoscaler_options:type_name -> flyteidl.plugins.AutoscalerOptions + 6, // 7: flyteidl.plugins.HeadGroupSpec.ray_start_params:type_name -> flyteidl.plugins.HeadGroupSpec.RayStartParamsEntry + 10, // 8: flyteidl.plugins.HeadGroupSpec.k8s_pod:type_name -> flyteidl.core.K8sPod + 7, // 9: flyteidl.plugins.WorkerGroupSpec.ray_start_params:type_name -> flyteidl.plugins.WorkerGroupSpec.RayStartParamsEntry + 10, // 10: flyteidl.plugins.WorkerGroupSpec.k8s_pod:type_name -> flyteidl.core.K8sPod + 11, // [11:11] is the sub-list for method output_type + 11, // [11:11] is the sub-list for method input_type + 11, // [11:11] is the sub-list for extension type_name + 11, // [11:11] is the sub-list for extension extendee + 0, // [0:11] is the sub-list for field type_name } func init() { file_flyteidl_plugins_ray_proto_init() } @@ -842,30 +663,6 @@ func file_flyteidl_plugins_ray_proto_init() { } } file_flyteidl_plugins_ray_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Resources); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_flyteidl_plugins_ray_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EnvVar); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_flyteidl_plugins_ray_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AutoscalerOptions); i { case 0: return &v.state @@ -877,7 +674,7 @@ func file_flyteidl_plugins_ray_proto_init() { return nil } } - file_flyteidl_plugins_ray_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_flyteidl_plugins_ray_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RayCluster); i { case 0: return &v.state @@ -889,7 +686,7 @@ func file_flyteidl_plugins_ray_proto_init() { return nil } } - file_flyteidl_plugins_ray_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_flyteidl_plugins_ray_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HeadGroupSpec); i { case 0: return &v.state @@ -901,7 +698,7 @@ func file_flyteidl_plugins_ray_proto_init() { return nil } } - file_flyteidl_plugins_ray_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_flyteidl_plugins_ray_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkerGroupSpec); i { case 0: return &v.state @@ -913,18 +710,6 @@ func file_flyteidl_plugins_ray_proto_init() { return nil } } - file_flyteidl_plugins_ray_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Resources_ResourceEntry); 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{ @@ -932,7 +717,7 @@ func file_flyteidl_plugins_ray_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_flyteidl_plugins_ray_proto_rawDesc, NumEnums: 1, - NumMessages: 10, + NumMessages: 7, 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 5f192adc3d4..4f0b9e77d55 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json @@ -4387,6 +4387,33 @@ "default": "UNDEFINED", "description": " - UNDEFINED: Default: no quality of service specified." }, + "ResourcesResourceEntry": { + "type": "object", + "properties": { + "name": { + "$ref": "#/definitions/ResourcesResourceName", + "description": "Resource name." + }, + "value": { + "type": "string", + "title": "Value must be a valid k8s quantity. See\nhttps://github.com/kubernetes/apimachinery/blob/master/pkg/api/resource/quantity.go#L30-L80" + } + }, + "description": "Encapsulates a resource name and value." + }, + "ResourcesResourceName": { + "type": "string", + "enum": [ + "UNKNOWN", + "CPU", + "GPU", + "MEMORY", + "STORAGE", + "EPHEMERAL_STORAGE" + ], + "default": "UNKNOWN", + "description": "Known resource names.\n\n - EPHEMERAL_STORAGE: For Kubernetes-based deployments, pods use ephemeral local storage for scratch space, caching, and for logs." + }, "RuntimeMetadataRuntimeType": { "type": "string", "enum": [ @@ -7073,7 +7100,7 @@ "description": "These will default to Flyte given paths. If provided, the system will not append known paths. If the task still\nneeds flyte's inputs and outputs path, add $(FLYTE_INPUT_FILE), $(FLYTE_OUTPUT_FILE) wherever makes sense and the\nsystem will populate these before executing the container." }, "resources": { - "$ref": "#/definitions/flyteidlcoreResources", + "$ref": "#/definitions/coreResources", "description": "Container resources requirement as specified by the container engine." }, "env": { @@ -8011,6 +8038,28 @@ "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" }, + "coreResources": { + "type": "object", + "properties": { + "requests": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/ResourcesResourceEntry" + }, + "description": "The desired set of resources requested. ResourceNames must be unique within the list." + }, + "limits": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/ResourcesResourceEntry" + }, + "description": "Defines a set of bounds (e.g. min/max) within which the task can reliably run. ResourceNames must be unique\nwithin the list." + } + }, + "description": "A customizable interface to convey resources requested for a container. This can be interpreted differently for different\ncontainer engines." + }, "coreRetryStrategy": { "type": "object", "properties": { @@ -8445,7 +8494,7 @@ "type": "object", "properties": { "resources": { - "$ref": "#/definitions/flyteidlcoreResources", + "$ref": "#/definitions/coreResources", "description": "A customizable interface to convey resources requested for a task container." }, "extended_resources": { @@ -9265,55 +9314,6 @@ ], "default": "MINUS" }, - "flyteidlcoreResources": { - "type": "object", - "properties": { - "requests": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/flyteidlcoreResourcesResourceEntry" - }, - "description": "The desired set of resources requested. ResourceNames must be unique within the list." - }, - "limits": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/flyteidlcoreResourcesResourceEntry" - }, - "description": "Defines a set of bounds (e.g. min/max) within which the task can reliably run. ResourceNames must be unique\nwithin the list." - } - }, - "description": "A customizable interface to convey resources requested for a container. This can be interpreted differently for different\ncontainer engines." - }, - "flyteidlcoreResourcesResourceEntry": { - "type": "object", - "properties": { - "name": { - "$ref": "#/definitions/flyteidlcoreResourcesResourceName", - "description": "Resource name." - }, - "value": { - "type": "string", - "title": "Value must be a valid k8s quantity. See\nhttps://github.com/kubernetes/apimachinery/blob/master/pkg/api/resource/quantity.go#L30-L80" - } - }, - "description": "Encapsulates a resource name and value." - }, - "flyteidlcoreResourcesResourceName": { - "type": "string", - "enum": [ - "UNKNOWN", - "CPU", - "GPU", - "MEMORY", - "STORAGE", - "EPHEMERAL_STORAGE" - ], - "default": "UNKNOWN", - "description": "Known resource names.\n\n - EPHEMERAL_STORAGE: For Kubernetes-based deployments, pods use ephemeral local storage for scratch space, caching, and for logs." - }, "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 9dba17ddd7f..7752341446a 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.swagger.json @@ -505,6 +505,33 @@ "description": "- UPLOAD_ON_EXIT: All data will be uploaded after the main container exits\n - UPLOAD_EAGER: Data will be uploaded as it appears. Refer to protocol specification for details\n - DO_NOT_UPLOAD: Data will not be uploaded, only references will be written", "title": "Mode to use for uploading" }, + "ResourcesResourceEntry": { + "type": "object", + "properties": { + "name": { + "$ref": "#/definitions/ResourcesResourceName", + "description": "Resource name." + }, + "value": { + "type": "string", + "title": "Value must be a valid k8s quantity. See\nhttps://github.com/kubernetes/apimachinery/blob/master/pkg/api/resource/quantity.go#L30-L80" + } + }, + "description": "Encapsulates a resource name and value." + }, + "ResourcesResourceName": { + "type": "string", + "enum": [ + "UNKNOWN", + "CPU", + "GPU", + "MEMORY", + "STORAGE", + "EPHEMERAL_STORAGE" + ], + "default": "UNKNOWN", + "description": "Known resource names.\n\n - EPHEMERAL_STORAGE: For Kubernetes-based deployments, pods use ephemeral local storage for scratch space, caching, and for logs." + }, "RuntimeMetadataRuntimeType": { "type": "string", "enum": [ @@ -1023,7 +1050,7 @@ "description": "These will default to Flyte given paths. If provided, the system will not append known paths. If the task still\nneeds flyte's inputs and outputs path, add $(FLYTE_INPUT_FILE), $(FLYTE_OUTPUT_FILE) wherever makes sense and the\nsystem will populate these before executing the container." }, "resources": { - "$ref": "#/definitions/flyteidlcoreResources", + "$ref": "#/definitions/coreResources", "description": "Container resources requirement as specified by the container engine." }, "env": { @@ -1545,6 +1572,28 @@ "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" }, + "coreResources": { + "type": "object", + "properties": { + "requests": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/ResourcesResourceEntry" + }, + "description": "The desired set of resources requested. ResourceNames must be unique within the list." + }, + "limits": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/ResourcesResourceEntry" + }, + "description": "Defines a set of bounds (e.g. min/max) within which the task can reliably run. ResourceNames must be unique\nwithin the list." + } + }, + "description": "A customizable interface to convey resources requested for a container. This can be interpreted differently for different\ncontainer engines." + }, "coreRetryStrategy": { "type": "object", "properties": { @@ -1897,7 +1946,7 @@ "type": "object", "properties": { "resources": { - "$ref": "#/definitions/flyteidlcoreResources", + "$ref": "#/definitions/coreResources", "description": "A customizable interface to convey resources requested for a task container." }, "extended_resources": { @@ -2224,55 +2273,6 @@ ], "default": "MINUS" }, - "flyteidlcoreResources": { - "type": "object", - "properties": { - "requests": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/flyteidlcoreResourcesResourceEntry" - }, - "description": "The desired set of resources requested. ResourceNames must be unique within the list." - }, - "limits": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/flyteidlcoreResourcesResourceEntry" - }, - "description": "Defines a set of bounds (e.g. min/max) within which the task can reliably run. ResourceNames must be unique\nwithin the list." - } - }, - "description": "A customizable interface to convey resources requested for a container. This can be interpreted differently for different\ncontainer engines." - }, - "flyteidlcoreResourcesResourceEntry": { - "type": "object", - "properties": { - "name": { - "$ref": "#/definitions/flyteidlcoreResourcesResourceName", - "description": "Resource name." - }, - "value": { - "type": "string", - "title": "Value must be a valid k8s quantity. See\nhttps://github.com/kubernetes/apimachinery/blob/master/pkg/api/resource/quantity.go#L30-L80" - } - }, - "description": "Encapsulates a resource name and value." - }, - "flyteidlcoreResourcesResourceName": { - "type": "string", - "enum": [ - "UNKNOWN", - "CPU", - "GPU", - "MEMORY", - "STORAGE", - "EPHEMERAL_STORAGE" - ], - "default": "UNKNOWN", - "description": "Known resource names.\n\n - EPHEMERAL_STORAGE: For Kubernetes-based deployments, pods use ephemeral local storage for scratch space, caching, and for logs." - }, "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 6a4d49b95f3..468030f76d2 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 @@ -70,6 +70,33 @@ "description": "- UPLOAD_ON_EXIT: All data will be uploaded after the main container exits\n - UPLOAD_EAGER: Data will be uploaded as it appears. Refer to protocol specification for details\n - DO_NOT_UPLOAD: Data will not be uploaded, only references will be written", "title": "Mode to use for uploading" }, + "ResourcesResourceEntry": { + "type": "object", + "properties": { + "name": { + "$ref": "#/definitions/ResourcesResourceName", + "description": "Resource name." + }, + "value": { + "type": "string", + "title": "Value must be a valid k8s quantity. See\nhttps://github.com/kubernetes/apimachinery/blob/master/pkg/api/resource/quantity.go#L30-L80" + } + }, + "description": "Encapsulates a resource name and value." + }, + "ResourcesResourceName": { + "type": "string", + "enum": [ + "UNKNOWN", + "CPU", + "GPU", + "MEMORY", + "STORAGE", + "EPHEMERAL_STORAGE" + ], + "default": "UNKNOWN", + "description": "Known resource names.\n\n - EPHEMERAL_STORAGE: For Kubernetes-based deployments, pods use ephemeral local storage for scratch space, caching, and for logs." + }, "RuntimeMetadataRuntimeType": { "type": "string", "enum": [ @@ -271,7 +298,7 @@ "description": "These will default to Flyte given paths. If provided, the system will not append known paths. If the task still\nneeds flyte's inputs and outputs path, add $(FLYTE_INPUT_FILE), $(FLYTE_OUTPUT_FILE) wherever makes sense and the\nsystem will populate these before executing the container." }, "resources": { - "$ref": "#/definitions/flyteidlcoreResources", + "$ref": "#/definitions/coreResources", "description": "Container resources requirement as specified by the container engine." }, "env": { @@ -767,6 +794,28 @@ "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" }, + "coreResources": { + "type": "object", + "properties": { + "requests": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/ResourcesResourceEntry" + }, + "description": "The desired set of resources requested. ResourceNames must be unique within the list." + }, + "limits": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/ResourcesResourceEntry" + }, + "description": "Defines a set of bounds (e.g. min/max) within which the task can reliably run. ResourceNames must be unique\nwithin the list." + } + }, + "description": "A customizable interface to convey resources requested for a container. This can be interpreted differently for different\ncontainer engines." + }, "coreRetryStrategy": { "type": "object", "properties": { @@ -1274,55 +1323,6 @@ ], "default": "MINUS" }, - "flyteidlcoreResources": { - "type": "object", - "properties": { - "requests": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/flyteidlcoreResourcesResourceEntry" - }, - "description": "The desired set of resources requested. ResourceNames must be unique within the list." - }, - "limits": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/flyteidlcoreResourcesResourceEntry" - }, - "description": "Defines a set of bounds (e.g. min/max) within which the task can reliably run. ResourceNames must be unique\nwithin the list." - } - }, - "description": "A customizable interface to convey resources requested for a container. This can be interpreted differently for different\ncontainer engines." - }, - "flyteidlcoreResourcesResourceEntry": { - "type": "object", - "properties": { - "name": { - "$ref": "#/definitions/flyteidlcoreResourcesResourceName", - "description": "Resource name." - }, - "value": { - "type": "string", - "title": "Value must be a valid k8s quantity. See\nhttps://github.com/kubernetes/apimachinery/blob/master/pkg/api/resource/quantity.go#L30-L80" - } - }, - "description": "Encapsulates a resource name and value." - }, - "flyteidlcoreResourcesResourceName": { - "type": "string", - "enum": [ - "UNKNOWN", - "CPU", - "GPU", - "MEMORY", - "STORAGE", - "EPHEMERAL_STORAGE" - ], - "default": "UNKNOWN", - "description": "Known resource names.\n\n - EPHEMERAL_STORAGE: For Kubernetes-based deployments, pods use ephemeral local storage for scratch space, caching, and for logs." - }, "flyteidlcoreSchema": { "type": "object", "properties": { diff --git a/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.py b/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.py index 168152ea817..b1df12499f5 100644 --- a/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.py @@ -12,9 +12,10 @@ from flyteidl.core import tasks_pb2 as flyteidl_dot_core_dot_tasks__pb2 +from flyteidl.core import literals_pb2 as flyteidl_dot_core_dot_literals__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1a\x66lyteidl/plugins/ray.proto\x12\x10\x66lyteidl.plugins\x1a\x19\x66lyteidl/core/tasks.proto\"\x92\x02\n\x06RayJob\x12=\n\x0bray_cluster\x18\x01 \x01(\x0b\x32\x1c.flyteidl.plugins.RayClusterR\nrayCluster\x12#\n\x0bruntime_env\x18\x02 \x01(\tB\x02\x18\x01R\nruntimeEnv\x12=\n\x1bshutdown_after_job_finishes\x18\x03 \x01(\x08R\x18shutdownAfterJobFinishes\x12;\n\x1attl_seconds_after_finished\x18\x04 \x01(\x05R\x17ttlSecondsAfterFinished\x12(\n\x10runtime_env_yaml\x18\x05 \x01(\tR\x0eruntimeEnvYaml\"\x9f\x02\n\tResources\x12\x45\n\x08requests\x18\x01 \x03(\x0b\x32).flyteidl.plugins.Resources.ResourceEntryR\x08requests\x12\x41\n\x06limits\x18\x02 \x03(\x0b\x32).flyteidl.plugins.Resources.ResourceEntryR\x06limits\x1a\x63\n\rResourceEntry\x12<\n\x04name\x18\x01 \x01(\x0e\x32(.flyteidl.plugins.Resources.ResourceNameR\x04name\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value\"#\n\x0cResourceName\x12\x07\n\x03\x43PU\x10\x00\x12\n\n\x06MEMORY\x10\x01\"2\n\x06\x45nvVar\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value\"\xe9\x01\n\x11\x41utoscalerOptions\x12%\n\x0eupscaling_mode\x18\x01 \x01(\tR\rupscalingMode\x12\x30\n\x14idle_timeout_seconds\x18\x02 \x01(\x05R\x12idleTimeoutSeconds\x12*\n\x03\x65nv\x18\x03 \x03(\x0b\x32\x18.flyteidl.plugins.EnvVarR\x03\x65nv\x12\x14\n\x05image\x18\x04 \x01(\tR\x05image\x12\x39\n\tresources\x18\x05 \x01(\x0b\x32\x1b.flyteidl.plugins.ResourcesR\tresources\"\xa7\x02\n\nRayCluster\x12G\n\x0fhead_group_spec\x18\x01 \x01(\x0b\x32\x1f.flyteidl.plugins.HeadGroupSpecR\rheadGroupSpec\x12M\n\x11worker_group_spec\x18\x02 \x03(\x0b\x32!.flyteidl.plugins.WorkerGroupSpecR\x0fworkerGroupSpec\x12-\n\x12\x65nable_autoscaling\x18\x03 \x01(\x08R\x11\x65nableAutoscaling\x12R\n\x12\x61utoscaler_options\x18\x04 \x01(\x0b\x32#.flyteidl.plugins.AutoscalerOptionsR\x11\x61utoscalerOptions\"\xe1\x01\n\rHeadGroupSpec\x12]\n\x10ray_start_params\x18\x01 \x03(\x0b\x32\x33.flyteidl.plugins.HeadGroupSpec.RayStartParamsEntryR\x0erayStartParams\x12.\n\x07k8s_pod\x18\x02 \x01(\x0b\x32\x15.flyteidl.core.K8sPodR\x06k8sPod\x1a\x41\n\x13RayStartParamsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xe6\x02\n\x0fWorkerGroupSpec\x12\x1d\n\ngroup_name\x18\x01 \x01(\tR\tgroupName\x12\x1a\n\x08replicas\x18\x02 \x01(\x05R\x08replicas\x12!\n\x0cmin_replicas\x18\x03 \x01(\x05R\x0bminReplicas\x12!\n\x0cmax_replicas\x18\x04 \x01(\x05R\x0bmaxReplicas\x12_\n\x10ray_start_params\x18\x05 \x03(\x0b\x32\x35.flyteidl.plugins.WorkerGroupSpec.RayStartParamsEntryR\x0erayStartParams\x12.\n\x07k8s_pod\x18\x06 \x01(\x0b\x32\x15.flyteidl.core.K8sPodR\x06k8sPod\x1a\x41\n\x13RayStartParamsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\xc0\x01\n\x14\x63om.flyteidl.pluginsB\x08RayProtoP\x01Z=github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/plugins\xa2\x02\x03\x46PX\xaa\x02\x10\x46lyteidl.Plugins\xca\x02\x10\x46lyteidl\\Plugins\xe2\x02\x1c\x46lyteidl\\Plugins\\GPBMetadata\xea\x02\x11\x46lyteidl::Pluginsb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1a\x66lyteidl/plugins/ray.proto\x12\x10\x66lyteidl.plugins\x1a\x19\x66lyteidl/core/tasks.proto\x1a\x1c\x66lyteidl/core/literals.proto\"\x92\x02\n\x06RayJob\x12=\n\x0bray_cluster\x18\x01 \x01(\x0b\x32\x1c.flyteidl.plugins.RayClusterR\nrayCluster\x12#\n\x0bruntime_env\x18\x02 \x01(\tB\x02\x18\x01R\nruntimeEnv\x12=\n\x1bshutdown_after_job_finishes\x18\x03 \x01(\x08R\x18shutdownAfterJobFinishes\x12;\n\x1attl_seconds_after_finished\x18\x04 \x01(\x05R\x17ttlSecondsAfterFinished\x12(\n\x10runtime_env_yaml\x18\x05 \x01(\tR\x0eruntimeEnvYaml\"\xaa\x03\n\x11\x41utoscalerOptions\x12X\n\x0eupscaling_mode\x18\x01 \x01(\x0e\x32\x31.flyteidl.plugins.AutoscalerOptions.UpscalingModeR\rupscalingMode\x12\x30\n\x14idle_timeout_seconds\x18\x02 \x01(\x05R\x12idleTimeoutSeconds\x12-\n\x03\x65nv\x18\x03 \x03(\x0b\x32\x1b.flyteidl.core.KeyValuePairR\x03\x65nv\x12\x14\n\x05image\x18\x04 \x01(\tR\x05image\x12\x36\n\tresources\x18\x05 \x01(\x0b\x32\x18.flyteidl.core.ResourcesR\tresources\"\x8b\x01\n\rUpscalingMode\x12\x1e\n\x1aUPSCALING_MODE_UNSPECIFIED\x10\x00\x12\x1a\n\x16UPSCALING_MODE_DEFAULT\x10\x01\x12\x1d\n\x19UPSCALING_MODE_AGGRESSIVE\x10\x02\x12\x1f\n\x1bUPSCALING_MODE_CONSERVATIVE\x10\x03\"\xa7\x02\n\nRayCluster\x12G\n\x0fhead_group_spec\x18\x01 \x01(\x0b\x32\x1f.flyteidl.plugins.HeadGroupSpecR\rheadGroupSpec\x12M\n\x11worker_group_spec\x18\x02 \x03(\x0b\x32!.flyteidl.plugins.WorkerGroupSpecR\x0fworkerGroupSpec\x12-\n\x12\x65nable_autoscaling\x18\x03 \x01(\x08R\x11\x65nableAutoscaling\x12R\n\x12\x61utoscaler_options\x18\x04 \x01(\x0b\x32#.flyteidl.plugins.AutoscalerOptionsR\x11\x61utoscalerOptions\"\xe1\x01\n\rHeadGroupSpec\x12]\n\x10ray_start_params\x18\x01 \x03(\x0b\x32\x33.flyteidl.plugins.HeadGroupSpec.RayStartParamsEntryR\x0erayStartParams\x12.\n\x07k8s_pod\x18\x02 \x01(\x0b\x32\x15.flyteidl.core.K8sPodR\x06k8sPod\x1a\x41\n\x13RayStartParamsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xe6\x02\n\x0fWorkerGroupSpec\x12\x1d\n\ngroup_name\x18\x01 \x01(\tR\tgroupName\x12\x1a\n\x08replicas\x18\x02 \x01(\x05R\x08replicas\x12!\n\x0cmin_replicas\x18\x03 \x01(\x05R\x0bminReplicas\x12!\n\x0cmax_replicas\x18\x04 \x01(\x05R\x0bmaxReplicas\x12_\n\x10ray_start_params\x18\x05 \x03(\x0b\x32\x35.flyteidl.plugins.WorkerGroupSpec.RayStartParamsEntryR\x0erayStartParams\x12.\n\x07k8s_pod\x18\x06 \x01(\x0b\x32\x15.flyteidl.core.K8sPodR\x06k8sPod\x1a\x41\n\x13RayStartParamsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\xc0\x01\n\x14\x63om.flyteidl.pluginsB\x08RayProtoP\x01Z=github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/plugins\xa2\x02\x03\x46PX\xaa\x02\x10\x46lyteidl.Plugins\xca\x02\x10\x46lyteidl\\Plugins\xe2\x02\x1c\x46lyteidl\\Plugins\\GPBMetadata\xea\x02\x11\x46lyteidl::Pluginsb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -29,26 +30,20 @@ _HEADGROUPSPEC_RAYSTARTPARAMSENTRY._serialized_options = b'8\001' _WORKERGROUPSPEC_RAYSTARTPARAMSENTRY._options = None _WORKERGROUPSPEC_RAYSTARTPARAMSENTRY._serialized_options = b'8\001' - _globals['_RAYJOB']._serialized_start=76 - _globals['_RAYJOB']._serialized_end=350 - _globals['_RESOURCES']._serialized_start=353 - _globals['_RESOURCES']._serialized_end=640 - _globals['_RESOURCES_RESOURCEENTRY']._serialized_start=504 - _globals['_RESOURCES_RESOURCEENTRY']._serialized_end=603 - _globals['_RESOURCES_RESOURCENAME']._serialized_start=605 - _globals['_RESOURCES_RESOURCENAME']._serialized_end=640 - _globals['_ENVVAR']._serialized_start=642 - _globals['_ENVVAR']._serialized_end=692 - _globals['_AUTOSCALEROPTIONS']._serialized_start=695 - _globals['_AUTOSCALEROPTIONS']._serialized_end=928 - _globals['_RAYCLUSTER']._serialized_start=931 - _globals['_RAYCLUSTER']._serialized_end=1226 - _globals['_HEADGROUPSPEC']._serialized_start=1229 - _globals['_HEADGROUPSPEC']._serialized_end=1454 - _globals['_HEADGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_start=1389 - _globals['_HEADGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_end=1454 - _globals['_WORKERGROUPSPEC']._serialized_start=1457 - _globals['_WORKERGROUPSPEC']._serialized_end=1815 - _globals['_WORKERGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_start=1389 - _globals['_WORKERGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_end=1454 + _globals['_RAYJOB']._serialized_start=106 + _globals['_RAYJOB']._serialized_end=380 + _globals['_AUTOSCALEROPTIONS']._serialized_start=383 + _globals['_AUTOSCALEROPTIONS']._serialized_end=809 + _globals['_AUTOSCALEROPTIONS_UPSCALINGMODE']._serialized_start=670 + _globals['_AUTOSCALEROPTIONS_UPSCALINGMODE']._serialized_end=809 + _globals['_RAYCLUSTER']._serialized_start=812 + _globals['_RAYCLUSTER']._serialized_end=1107 + _globals['_HEADGROUPSPEC']._serialized_start=1110 + _globals['_HEADGROUPSPEC']._serialized_end=1335 + _globals['_HEADGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_start=1270 + _globals['_HEADGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_end=1335 + _globals['_WORKERGROUPSPEC']._serialized_start=1338 + _globals['_WORKERGROUPSPEC']._serialized_end=1696 + _globals['_WORKERGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_start=1270 + _globals['_WORKERGROUPSPEC_RAYSTARTPARAMSENTRY']._serialized_end=1335 # @@protoc_insertion_point(module_scope) diff --git a/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.pyi b/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.pyi index 5747ecc1767..9846b4e0e75 100644 --- a/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.pyi +++ b/flyteidl/gen/pb_python/flyteidl/plugins/ray_pb2.pyi @@ -1,4 +1,5 @@ from flyteidl.core import tasks_pb2 as _tasks_pb2 +from flyteidl.core import literals_pb2 as _literals_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 @@ -21,48 +22,29 @@ class RayJob(_message.Message): runtime_env_yaml: str def __init__(self, ray_cluster: _Optional[_Union[RayCluster, _Mapping]] = ..., runtime_env: _Optional[str] = ..., shutdown_after_job_finishes: bool = ..., ttl_seconds_after_finished: _Optional[int] = ..., runtime_env_yaml: _Optional[str] = ...) -> None: ... -class Resources(_message.Message): - __slots__ = ["requests", "limits"] - class ResourceName(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] - CPU: _ClassVar[Resources.ResourceName] - MEMORY: _ClassVar[Resources.ResourceName] - CPU: Resources.ResourceName - MEMORY: Resources.ResourceName - class ResourceEntry(_message.Message): - __slots__ = ["name", "value"] - NAME_FIELD_NUMBER: _ClassVar[int] - VALUE_FIELD_NUMBER: _ClassVar[int] - name: Resources.ResourceName - value: str - def __init__(self, name: _Optional[_Union[Resources.ResourceName, str]] = ..., value: _Optional[str] = ...) -> None: ... - REQUESTS_FIELD_NUMBER: _ClassVar[int] - LIMITS_FIELD_NUMBER: _ClassVar[int] - requests: _containers.RepeatedCompositeFieldContainer[Resources.ResourceEntry] - limits: _containers.RepeatedCompositeFieldContainer[Resources.ResourceEntry] - def __init__(self, requests: _Optional[_Iterable[_Union[Resources.ResourceEntry, _Mapping]]] = ..., limits: _Optional[_Iterable[_Union[Resources.ResourceEntry, _Mapping]]] = ...) -> None: ... - -class EnvVar(_message.Message): - __slots__ = ["name", "value"] - NAME_FIELD_NUMBER: _ClassVar[int] - VALUE_FIELD_NUMBER: _ClassVar[int] - name: str - value: str - def __init__(self, name: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ... - class AutoscalerOptions(_message.Message): __slots__ = ["upscaling_mode", "idle_timeout_seconds", "env", "image", "resources"] + class UpscalingMode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + UPSCALING_MODE_UNSPECIFIED: _ClassVar[AutoscalerOptions.UpscalingMode] + UPSCALING_MODE_DEFAULT: _ClassVar[AutoscalerOptions.UpscalingMode] + UPSCALING_MODE_AGGRESSIVE: _ClassVar[AutoscalerOptions.UpscalingMode] + UPSCALING_MODE_CONSERVATIVE: _ClassVar[AutoscalerOptions.UpscalingMode] + UPSCALING_MODE_UNSPECIFIED: AutoscalerOptions.UpscalingMode + UPSCALING_MODE_DEFAULT: AutoscalerOptions.UpscalingMode + UPSCALING_MODE_AGGRESSIVE: AutoscalerOptions.UpscalingMode + UPSCALING_MODE_CONSERVATIVE: AutoscalerOptions.UpscalingMode UPSCALING_MODE_FIELD_NUMBER: _ClassVar[int] IDLE_TIMEOUT_SECONDS_FIELD_NUMBER: _ClassVar[int] ENV_FIELD_NUMBER: _ClassVar[int] IMAGE_FIELD_NUMBER: _ClassVar[int] RESOURCES_FIELD_NUMBER: _ClassVar[int] - upscaling_mode: str + upscaling_mode: AutoscalerOptions.UpscalingMode idle_timeout_seconds: int - env: _containers.RepeatedCompositeFieldContainer[EnvVar] + env: _containers.RepeatedCompositeFieldContainer[_literals_pb2.KeyValuePair] image: str - resources: Resources - def __init__(self, upscaling_mode: _Optional[str] = ..., idle_timeout_seconds: _Optional[int] = ..., env: _Optional[_Iterable[_Union[EnvVar, _Mapping]]] = ..., image: _Optional[str] = ..., resources: _Optional[_Union[Resources, _Mapping]] = ...) -> None: ... + resources: _tasks_pb2.Resources + def __init__(self, upscaling_mode: _Optional[_Union[AutoscalerOptions.UpscalingMode, str]] = ..., idle_timeout_seconds: _Optional[int] = ..., env: _Optional[_Iterable[_Union[_literals_pb2.KeyValuePair, _Mapping]]] = ..., image: _Optional[str] = ..., resources: _Optional[_Union[_tasks_pb2.Resources, _Mapping]] = ...) -> None: ... class RayCluster(_message.Message): __slots__ = ["head_group_spec", "worker_group_spec", "enable_autoscaling", "autoscaler_options"] diff --git a/flyteidl/gen/pb_rust/flyteidl.plugins.rs b/flyteidl/gen/pb_rust/flyteidl.plugins.rs index 85e72f54684..e118930748f 100644 --- a/flyteidl/gen/pb_rust/flyteidl.plugins.rs +++ b/flyteidl/gen/pb_rust/flyteidl.plugins.rs @@ -235,83 +235,56 @@ pub struct RayJob { } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct Resources { - /// The desired set of resources requested. ResourceNames must be unique within the list. - #[prost(message, repeated, tag="1")] - pub requests: ::prost::alloc::vec::Vec, - /// Defines a set of bounds (e.g. min/max) within which the task can reliably run. ResourceNames must be unique - /// within the list. - #[prost(message, repeated, tag="2")] - pub limits: ::prost::alloc::vec::Vec, +pub struct AutoscalerOptions { + #[prost(enumeration="autoscaler_options::UpscalingMode", tag="1")] + pub upscaling_mode: i32, + #[prost(int32, tag="2")] + pub idle_timeout_seconds: i32, + /// autoscaler sidecar env vars + #[prost(message, repeated, tag="3")] + pub env: ::prost::alloc::vec::Vec, + /// custom autoscaler image + #[prost(string, tag="4")] + pub image: ::prost::alloc::string::String, + /// autoscaler container resources + #[prost(message, optional, tag="5")] + pub resources: ::core::option::Option, } -/// Nested message and enum types in `Resources`. -pub mod resources { - /// Encapsulates a resource name and value. - #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] - pub struct ResourceEntry { - /// Resource name. - #[prost(enumeration="ResourceName", tag="1")] - pub name: i32, - /// Value must be a valid k8s quantity. See - /// - #[prost(string, tag="2")] - pub value: ::prost::alloc::string::String, - } - /// Known resource names. +/// Nested message and enum types in `AutoscalerOptions`. +pub mod autoscaler_options { #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] #[repr(i32)] - pub enum ResourceName { - Cpu = 0, - Memory = 1, + pub enum UpscalingMode { + Unspecified = 0, + Default = 1, + Aggressive = 2, + Conservative = 3, } - impl ResourceName { + impl UpscalingMode { /// 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 { - ResourceName::Cpu => "CPU", - ResourceName::Memory => "MEMORY", + UpscalingMode::Unspecified => "UPSCALING_MODE_UNSPECIFIED", + UpscalingMode::Default => "UPSCALING_MODE_DEFAULT", + UpscalingMode::Aggressive => "UPSCALING_MODE_AGGRESSIVE", + UpscalingMode::Conservative => "UPSCALING_MODE_CONSERVATIVE", } } /// Creates an enum from field names used in the ProtoBuf definition. pub fn from_str_name(value: &str) -> ::core::option::Option { match value { - "CPU" => Some(Self::Cpu), - "MEMORY" => Some(Self::Memory), + "UPSCALING_MODE_UNSPECIFIED" => Some(Self::Unspecified), + "UPSCALING_MODE_DEFAULT" => Some(Self::Default), + "UPSCALING_MODE_AGGRESSIVE" => Some(Self::Aggressive), + "UPSCALING_MODE_CONSERVATIVE" => Some(Self::Conservative), _ => None, } } } } -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct EnvVar { - #[prost(string, tag="1")] - pub name: ::prost::alloc::string::String, - #[prost(string, tag="2")] - pub value: ::prost::alloc::string::String, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct AutoscalerOptions { - /// "Default", "Aggressive", "Conservative" - #[prost(string, tag="1")] - pub upscaling_mode: ::prost::alloc::string::String, - #[prost(int32, tag="2")] - pub idle_timeout_seconds: i32, - /// autoscaler sidecar env vars - #[prost(message, repeated, tag="3")] - pub env: ::prost::alloc::vec::Vec, - /// custom autoscaler image - #[prost(string, tag="4")] - pub image: ::prost::alloc::string::String, - /// autoscaler container resources - #[prost(message, optional, tag="5")] - pub resources: ::core::option::Option, -} /// Define Ray cluster defines the desired state of RayCluster #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] diff --git a/flyteidl/protos/flyteidl/plugins/ray.proto b/flyteidl/protos/flyteidl/plugins/ray.proto index f9df2d0f75c..d5c969f6873 100644 --- a/flyteidl/protos/flyteidl/plugins/ray.proto +++ b/flyteidl/protos/flyteidl/plugins/ray.proto @@ -5,6 +5,7 @@ package flyteidl.plugins; option go_package = "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/plugins"; import "flyteidl/core/tasks.proto"; +import "flyteidl/core/literals.proto"; // RayJobSpec defines the desired state of RayJob message RayJob { @@ -22,46 +23,21 @@ message RayJob { string runtime_env_yaml = 5; } -message Resources { - // Known resource names. - enum ResourceName { - CPU = 0; - MEMORY = 1; - } - - // Encapsulates a resource name and value. - message ResourceEntry { - // Resource name. - ResourceName name = 1; - - // Value must be a valid k8s quantity. See - // https://github.com/kubernetes/apimachinery/blob/master/pkg/api/resource/quantity.go#L30-L80 - string value = 2; - } - - // The desired set of resources requested. ResourceNames must be unique within the list. - repeated ResourceEntry requests = 1; - - // Defines a set of bounds (e.g. min/max) within which the task can reliably run. ResourceNames must be unique - // within the list. - repeated ResourceEntry limits = 2; -} - -message EnvVar { - string name = 1; - string value = 2; -} - message AutoscalerOptions { - // "Default", "Aggressive", "Conservative" - string upscaling_mode = 1; + enum UpscalingMode { + UPSCALING_MODE_UNSPECIFIED = 0; + UPSCALING_MODE_DEFAULT = 1; + UPSCALING_MODE_AGGRESSIVE = 2; + UPSCALING_MODE_CONSERVATIVE = 3; + } + UpscalingMode upscaling_mode = 1; int32 idle_timeout_seconds = 2; // autoscaler sidecar env vars - repeated EnvVar env = 3; + repeated core.KeyValuePair env = 3; // custom autoscaler image string image = 4; // autoscaler container resources - Resources resources = 5; + core.Resources resources = 5; } // Define Ray cluster defines the desired state of RayCluster diff --git a/flyteplugins/go/tasks/plugins/k8s/ray/ray.go b/flyteplugins/go/tasks/plugins/k8s/ray/ray.go index 10f88281130..665350dc1b2 100644 --- a/flyteplugins/go/tasks/plugins/k8s/ray/ray.go +++ b/flyteplugins/go/tasks/plugins/k8s/ray/ray.go @@ -130,14 +130,22 @@ func (rayJobResourceHandler) BuildResource(ctx context.Context, taskCtx pluginsC return rayjob, err } -func NewAutoscalerOptions(options *plugins.AutoscalerOptions) *rayv1.AutoscalerOptions { +func buildAutoscalerOptions(options *plugins.AutoscalerOptions) *rayv1.AutoscalerOptions { var autoScalarOptions *rayv1.AutoscalerOptions if options != nil { autoScalarOptions = &rayv1.AutoscalerOptions{} idleTimeoutTime := options.GetIdleTimeoutSeconds() autoScalarOptions.IdleTimeoutSeconds = &idleTimeoutTime - if upScalingMode := options.GetUpscalingMode(); upScalingMode != "" { - mode := rayv1.UpscalingMode(upScalingMode) + if upscalingMode := options.GetUpscalingMode(); upscalingMode != plugins.AutoscalerOptions_UPSCALING_MODE_UNSPECIFIED { + var mode rayv1.UpscalingMode + switch upscalingMode { + case plugins.AutoscalerOptions_UPSCALING_MODE_DEFAULT: + mode = rayv1.UpscalingMode("Default") + case plugins.AutoscalerOptions_UPSCALING_MODE_CONSERVATIVE: + mode = rayv1.UpscalingMode("Conservative") + case plugins.AutoscalerOptions_UPSCALING_MODE_AGGRESSIVE: + mode = rayv1.UpscalingMode("Aggressive") + } autoScalarOptions.UpscalingMode = &mode } if image := options.GetImage(); image != "" { @@ -156,7 +164,7 @@ func NewAutoscalerOptions(options *plugins.AutoscalerOptions) *rayv1.AutoscalerO if envs := options.GetEnv(); len(envs) > 0 { autoScalarOptions.Env = []v1.EnvVar{} for _, env := range envs { - name := env.GetName() + name := env.GetKey() if val := env.GetValue(); val != "" { autoScalarOptions.Env = append(autoScalarOptions.Env, v1.EnvVar{ Name: name, @@ -169,14 +177,14 @@ func NewAutoscalerOptions(options *plugins.AutoscalerOptions) *rayv1.AutoscalerO return autoScalarOptions } -func convertResourceEntriesToResourceList(entries []*plugins.Resources_ResourceEntry) v1.ResourceList { +func convertResourceEntriesToResourceList(entries []*core.Resources_ResourceEntry) v1.ResourceList { resourceList := v1.ResourceList{} for _, entry := range entries { var name v1.ResourceName switch entry.GetName() { - case plugins.Resources_CPU: + case core.Resources_CPU: name = v1.ResourceCPU - case plugins.Resources_MEMORY: + case core.Resources_MEMORY: name = v1.ResourceMemory default: continue @@ -205,11 +213,6 @@ func constructRayJob(taskCtx pluginsCore.TaskExecutionContext, rayJob *plugins.R return nil, err } - var autoScalarOptions *rayv1.AutoscalerOptions - if c := rayJob.GetRayCluster(); c != nil { - autoScalarOptions = NewAutoscalerOptions(c.GetAutoscalerOptions()) - } - rayClusterSpec := rayv1.RayClusterSpec{ HeadGroupSpec: rayv1.HeadGroupSpec{ Template: headPodTemplate, @@ -219,7 +222,7 @@ func constructRayJob(taskCtx pluginsCore.TaskExecutionContext, rayJob *plugins.R }, WorkerGroupSpecs: []rayv1.WorkerGroupSpec{}, EnableInTreeAutoscaling: &rayJob.RayCluster.EnableAutoscaling, - AutoscalerOptions: autoScalarOptions, + AutoscalerOptions: buildAutoscalerOptions(rayJob.GetRayCluster().GetAutoscalerOptions()), } for _, spec := range rayJob.GetRayCluster().GetWorkerGroupSpec() { diff --git a/flyteplugins/go/tasks/plugins/k8s/ray/ray_test.go b/flyteplugins/go/tasks/plugins/k8s/ray/ray_test.go index b4e065fa49d..df07b75c03b 100644 --- a/flyteplugins/go/tasks/plugins/k8s/ray/ray_test.go +++ b/flyteplugins/go/tasks/plugins/k8s/ray/ray_test.go @@ -1596,43 +1596,43 @@ func transformStructToStructPB(t *testing.T, obj interface{}) *structpb.Struct { func TestConvertResourceEntriesToResourceList(t *testing.T) { tests := []struct { name string - entries []*plugins.Resources_ResourceEntry + entries []*core.Resources_ResourceEntry wantKeys []corev1.ResourceName wantLen int }{ { name: "cpu entry", - entries: []*plugins.Resources_ResourceEntry{ - {Name: plugins.Resources_CPU, Value: "500m"}, + entries: []*core.Resources_ResourceEntry{ + {Name: core.Resources_CPU, Value: "500m"}, }, wantKeys: []corev1.ResourceName{corev1.ResourceCPU}, wantLen: 1, }, { name: "memory entry", - entries: []*plugins.Resources_ResourceEntry{ - {Name: plugins.Resources_MEMORY, Value: "1Gi"}, + entries: []*core.Resources_ResourceEntry{ + {Name: core.Resources_MEMORY, Value: "1Gi"}, }, wantKeys: []corev1.ResourceName{corev1.ResourceMemory}, wantLen: 1, }, { name: "unknown resource skipped", - entries: []*plugins.Resources_ResourceEntry{ - {Name: plugins.Resources_ResourceName(99), Value: "1"}, + entries: []*core.Resources_ResourceEntry{ + {Name: core.Resources_ResourceName(99), Value: "1"}, }, wantLen: 0, }, { name: "invalid quantity skipped", - entries: []*plugins.Resources_ResourceEntry{ - {Name: plugins.Resources_CPU, Value: "not-a-quantity"}, + entries: []*core.Resources_ResourceEntry{ + {Name: core.Resources_CPU, Value: "not-a-quantity"}, }, wantLen: 0, }, { name: "empty input", - entries: []*plugins.Resources_ResourceEntry{}, + entries: []*core.Resources_ResourceEntry{}, wantLen: 0, }, } @@ -1651,52 +1651,52 @@ func TestConvertResourceEntriesToResourceList(t *testing.T) { func TestNewAutoscalerOptions(t *testing.T) { t.Run("nil input returns nil", func(t *testing.T) { - assert.Nil(t, NewAutoscalerOptions(nil)) + assert.Nil(t, buildAutoscalerOptions(nil)) }) t.Run("idle timeout propagated", func(t *testing.T) { - result := NewAutoscalerOptions(&plugins.AutoscalerOptions{IdleTimeoutSeconds: 30}) + result := buildAutoscalerOptions(&plugins.AutoscalerOptions{IdleTimeoutSeconds: 30}) require.NotNil(t, result) require.NotNil(t, result.IdleTimeoutSeconds) assert.Equal(t, int32(30), *result.IdleTimeoutSeconds) }) t.Run("upscaling mode set when non-empty", func(t *testing.T) { - result := NewAutoscalerOptions(&plugins.AutoscalerOptions{UpscalingMode: "Conservative"}) + result := buildAutoscalerOptions(&plugins.AutoscalerOptions{UpscalingMode: plugins.AutoscalerOptions_UPSCALING_MODE_CONSERVATIVE}) require.NotNil(t, result) require.NotNil(t, result.UpscalingMode) assert.Equal(t, rayv1.UpscalingMode("Conservative"), *result.UpscalingMode) }) t.Run("upscaling mode nil when empty", func(t *testing.T) { - result := NewAutoscalerOptions(&plugins.AutoscalerOptions{UpscalingMode: ""}) + result := buildAutoscalerOptions(&plugins.AutoscalerOptions{UpscalingMode: plugins.AutoscalerOptions_UPSCALING_MODE_UNSPECIFIED}) require.NotNil(t, result) assert.Nil(t, result.UpscalingMode) }) t.Run("image set when non-empty", func(t *testing.T) { - result := NewAutoscalerOptions(&plugins.AutoscalerOptions{Image: "my-image:latest"}) + result := buildAutoscalerOptions(&plugins.AutoscalerOptions{Image: "my-image:latest"}) require.NotNil(t, result) require.NotNil(t, result.Image) assert.Equal(t, "my-image:latest", *result.Image) }) t.Run("image nil when empty", func(t *testing.T) { - result := NewAutoscalerOptions(&plugins.AutoscalerOptions{Image: ""}) + result := buildAutoscalerOptions(&plugins.AutoscalerOptions{Image: ""}) require.NotNil(t, result) assert.Nil(t, result.Image) }) t.Run("resources requests and limits converted", func(t *testing.T) { - result := NewAutoscalerOptions(&plugins.AutoscalerOptions{ - Resources: &plugins.Resources{ - Requests: []*plugins.Resources_ResourceEntry{ - {Name: plugins.Resources_CPU, Value: "250m"}, - {Name: plugins.Resources_MEMORY, Value: "512Mi"}, + result := buildAutoscalerOptions(&plugins.AutoscalerOptions{ + Resources: &core.Resources{ + Requests: []*core.Resources_ResourceEntry{ + {Name: core.Resources_CPU, Value: "250m"}, + {Name: core.Resources_MEMORY, Value: "512Mi"}, }, - Limits: []*plugins.Resources_ResourceEntry{ - {Name: plugins.Resources_CPU, Value: "1"}, - {Name: plugins.Resources_MEMORY, Value: "1Gi"}, + Limits: []*core.Resources_ResourceEntry{ + {Name: core.Resources_CPU, Value: "1"}, + {Name: core.Resources_MEMORY, Value: "1Gi"}, }, }, }) @@ -1709,8 +1709,8 @@ func TestNewAutoscalerOptions(t *testing.T) { }) t.Run("env literal value", func(t *testing.T) { - result := NewAutoscalerOptions(&plugins.AutoscalerOptions{ - Env: []*plugins.EnvVar{{Name: "FOO", Value: "bar"}}, + result := buildAutoscalerOptions(&plugins.AutoscalerOptions{ + Env: []*core.KeyValuePair{{Key: "FOO", Value: "bar"}}, }) require.NotNil(t, result) require.Len(t, result.Env, 1) From 4bb66fb7abd8f5b336ba8572f988309e9cc6f43e Mon Sep 17 00:00:00 2001 From: Yuteng Chen Date: Tue, 21 Apr 2026 21:36:07 +0800 Subject: [PATCH 14/15] set idletime if it is required Signed-off-by: Yuteng Chen --- flyteplugins/go/tasks/plugins/k8s/ray/ray.go | 21 ++++++++++--------- .../go/tasks/plugins/k8s/ray/ray_test.go | 10 +++++++-- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/flyteplugins/go/tasks/plugins/k8s/ray/ray.go b/flyteplugins/go/tasks/plugins/k8s/ray/ray.go index 665350dc1b2..d11c54c27e9 100644 --- a/flyteplugins/go/tasks/plugins/k8s/ray/ray.go +++ b/flyteplugins/go/tasks/plugins/k8s/ray/ray.go @@ -131,11 +131,12 @@ func (rayJobResourceHandler) BuildResource(ctx context.Context, taskCtx pluginsC } func buildAutoscalerOptions(options *plugins.AutoscalerOptions) *rayv1.AutoscalerOptions { - var autoScalarOptions *rayv1.AutoscalerOptions + var autoScalerOptions *rayv1.AutoscalerOptions if options != nil { - autoScalarOptions = &rayv1.AutoscalerOptions{} - idleTimeoutTime := options.GetIdleTimeoutSeconds() - autoScalarOptions.IdleTimeoutSeconds = &idleTimeoutTime + autoScalerOptions = &rayv1.AutoscalerOptions{} + if idleTimeoutTime := options.GetIdleTimeoutSeconds(); idleTimeoutTime > 0 { + autoScalerOptions.IdleTimeoutSeconds = &idleTimeoutTime + } if upscalingMode := options.GetUpscalingMode(); upscalingMode != plugins.AutoscalerOptions_UPSCALING_MODE_UNSPECIFIED { var mode rayv1.UpscalingMode switch upscalingMode { @@ -146,10 +147,10 @@ func buildAutoscalerOptions(options *plugins.AutoscalerOptions) *rayv1.Autoscale case plugins.AutoscalerOptions_UPSCALING_MODE_AGGRESSIVE: mode = rayv1.UpscalingMode("Aggressive") } - autoScalarOptions.UpscalingMode = &mode + autoScalerOptions.UpscalingMode = &mode } if image := options.GetImage(); image != "" { - autoScalarOptions.Image = &image + autoScalerOptions.Image = &image } if res := options.GetResources(); res != nil { resourceRequirements := v1.ResourceRequirements{} @@ -159,14 +160,14 @@ func buildAutoscalerOptions(options *plugins.AutoscalerOptions) *rayv1.Autoscale if limits := res.GetLimits(); len(limits) > 0 { resourceRequirements.Limits = convertResourceEntriesToResourceList(limits) } - autoScalarOptions.Resources = &resourceRequirements + autoScalerOptions.Resources = &resourceRequirements } if envs := options.GetEnv(); len(envs) > 0 { - autoScalarOptions.Env = []v1.EnvVar{} + autoScalerOptions.Env = []v1.EnvVar{} for _, env := range envs { name := env.GetKey() if val := env.GetValue(); val != "" { - autoScalarOptions.Env = append(autoScalarOptions.Env, v1.EnvVar{ + autoScalerOptions.Env = append(autoScalerOptions.Env, v1.EnvVar{ Name: name, Value: val, }) @@ -174,7 +175,7 @@ func buildAutoscalerOptions(options *plugins.AutoscalerOptions) *rayv1.Autoscale } } } - return autoScalarOptions + return autoScalerOptions } func convertResourceEntriesToResourceList(entries []*core.Resources_ResourceEntry) v1.ResourceList { diff --git a/flyteplugins/go/tasks/plugins/k8s/ray/ray_test.go b/flyteplugins/go/tasks/plugins/k8s/ray/ray_test.go index df07b75c03b..8eccef7a2cb 100644 --- a/flyteplugins/go/tasks/plugins/k8s/ray/ray_test.go +++ b/flyteplugins/go/tasks/plugins/k8s/ray/ray_test.go @@ -1649,7 +1649,7 @@ func TestConvertResourceEntriesToResourceList(t *testing.T) { } } -func TestNewAutoscalerOptions(t *testing.T) { +func TestBuildAutoscalerOptions(t *testing.T) { t.Run("nil input returns nil", func(t *testing.T) { assert.Nil(t, buildAutoscalerOptions(nil)) }) @@ -1681,6 +1681,12 @@ func TestNewAutoscalerOptions(t *testing.T) { assert.Equal(t, "my-image:latest", *result.Image) }) + t.Run("idle timeout zero should not be set", func(t *testing.T) { + result := buildAutoscalerOptions(&plugins.AutoscalerOptions{}) + require.NotNil(t, result) + assert.Nil(t, result.IdleTimeoutSeconds) + }) + t.Run("image nil when empty", func(t *testing.T) { result := buildAutoscalerOptions(&plugins.AutoscalerOptions{Image: ""}) require.NotNil(t, result) @@ -1710,7 +1716,7 @@ func TestNewAutoscalerOptions(t *testing.T) { t.Run("env literal value", func(t *testing.T) { result := buildAutoscalerOptions(&plugins.AutoscalerOptions{ - Env: []*core.KeyValuePair{{Key: "FOO", Value: "bar"}}, + Env: []*core.KeyValuePair{{Key: "FOO", Value: "bar"}, {Key: "NULL", Value: ""}}, }) require.NotNil(t, result) require.Len(t, result.Env, 1) From f4429c98ec51a13f41eada406e9d5d8765cfa459 Mon Sep 17 00:00:00 2001 From: Yuteng Chen Date: Tue, 21 Apr 2026 21:50:28 +0800 Subject: [PATCH 15/15] adopting k8s utils function Signed-off-by: Yuteng Chen --- flyteplugins/go/tasks/plugins/k8s/ray/ray.go | 24 +++---------------- .../go/tasks/plugins/k8s/ray/ray_test.go | 2 +- 2 files changed, 4 insertions(+), 22 deletions(-) diff --git a/flyteplugins/go/tasks/plugins/k8s/ray/ray.go b/flyteplugins/go/tasks/plugins/k8s/ray/ray.go index d11c54c27e9..0044038b2e4 100644 --- a/flyteplugins/go/tasks/plugins/k8s/ray/ray.go +++ b/flyteplugins/go/tasks/plugins/k8s/ray/ray.go @@ -152,28 +152,10 @@ func buildAutoscalerOptions(options *plugins.AutoscalerOptions) *rayv1.Autoscale if image := options.GetImage(); image != "" { autoScalerOptions.Image = &image } - if res := options.GetResources(); res != nil { - resourceRequirements := v1.ResourceRequirements{} - if requests := res.GetRequests(); len(requests) > 0 { - resourceRequirements.Requests = convertResourceEntriesToResourceList(requests) - } - if limits := res.GetLimits(); len(limits) > 0 { - resourceRequirements.Limits = convertResourceEntriesToResourceList(limits) - } - autoScalerOptions.Resources = &resourceRequirements - } - if envs := options.GetEnv(); len(envs) > 0 { - autoScalerOptions.Env = []v1.EnvVar{} - for _, env := range envs { - name := env.GetKey() - if val := env.GetValue(); val != "" { - autoScalerOptions.Env = append(autoScalerOptions.Env, v1.EnvVar{ - Name: name, - Value: val, - }) - } - } + if res, err := flytek8s.ToK8sResourceRequirements(options.GetResources()); err == nil { + autoScalerOptions.Resources = res } + autoScalerOptions.Env = flytek8s.ToK8sEnvVar(options.GetEnv()) } return autoScalerOptions } diff --git a/flyteplugins/go/tasks/plugins/k8s/ray/ray_test.go b/flyteplugins/go/tasks/plugins/k8s/ray/ray_test.go index 8eccef7a2cb..0e191918ad8 100644 --- a/flyteplugins/go/tasks/plugins/k8s/ray/ray_test.go +++ b/flyteplugins/go/tasks/plugins/k8s/ray/ray_test.go @@ -1716,7 +1716,7 @@ func TestBuildAutoscalerOptions(t *testing.T) { t.Run("env literal value", func(t *testing.T) { result := buildAutoscalerOptions(&plugins.AutoscalerOptions{ - Env: []*core.KeyValuePair{{Key: "FOO", Value: "bar"}, {Key: "NULL", Value: ""}}, + Env: []*core.KeyValuePair{{Key: "FOO", Value: "bar"}}, }) require.NotNil(t, result) require.Len(t, result.Env, 1)