From 2899a96d40849aa40748f7758c048d1c81f4dd1c Mon Sep 17 00:00:00 2001 From: Yee Hing Tong Date: Wed, 12 Jun 2024 16:38:26 -0700 Subject: [PATCH 1/2] Add fields to NodeExecutionEvent (#315) --- flyteidl/clients/go/assets/admin.swagger.json | 4808 +++++++++++++++++ flyteidl/gen/pb-es/flyteidl/event/event_pb.ts | 6 + flyteidl/gen/pb-go/flyteidl/event/event.pb.go | 6 + .../flyteidl/service/admin.swagger.json | 436 ++ flyteidl/gen/pb_rust/flyteidl.event.rs | 6 + flyteidl/protos/flyteidl/event/event.proto | 6 + .../pkg/apis/flyteworkflow/v1alpha1/nodes.go | 13 +- .../apis/flyteworkflow/v1alpha1/nodes_test.go | 51 + .../flyteworkflow/v1alpha1/subworkflow.go | 10 +- .../controller/executors/execution_context.go | 17 +- .../executors/execution_context_test.go | 12 +- .../executors/mocks/immutable_parent_info.go | 32 + .../controller/nodes/array/event_recorder.go | 11 +- .../pkg/controller/nodes/array/handler.go | 3 +- .../pkg/controller/nodes/branch/handler.go | 2 +- .../controller/nodes/branch/handler_test.go | 8 +- .../pkg/controller/nodes/common/utils.go | 33 +- .../pkg/controller/nodes/common/utils_test.go | 20 +- .../nodes/dynamic/dynamic_workflow.go | 4 +- .../pkg/controller/nodes/executor.go | 28 +- .../pkg/controller/nodes/executor_test.go | 46 +- .../nodes/node_exec_context_test.go | 111 + .../nodes/subworkflow/subworkflow.go | 2 +- .../nodes/subworkflow/subworkflow_test.go | 4 +- .../pkg/controller/nodes/transformers.go | 36 +- .../pkg/controller/nodes/transformers_test.go | 9 +- flytestdlib/storage/stow_store.go | 2 +- 27 files changed, 5666 insertions(+), 56 deletions(-) create mode 100644 flytepropeller/pkg/apis/flyteworkflow/v1alpha1/nodes_test.go diff --git a/flyteidl/clients/go/assets/admin.swagger.json b/flyteidl/clients/go/assets/admin.swagger.json index 351cc67cd6..884d8efeb2 100644 --- a/flyteidl/clients/go/assets/admin.swagger.json +++ b/flyteidl/clients/go/assets/admin.swagger.json @@ -2339,6 +2339,4378 @@ ] } }, +<<<<<<< HEAD +======= + "/api/v1/org/active_launch_plans/{id.org}/{id.project}/{id.domain}/{id.name}": { + "get": { + "summary": "Fetch the active version of a :ref:`ref_flyteidl.admin.LaunchPlan`.", + "description": "Retrieve the active launch plan version specified by input request filters.", + "operationId": "AdminService_GetActiveLaunchPlan2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminLaunchPlan" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/active_launch_plans/{org}/{project}/{domain}": { + "get": { + "summary": "List active versions of :ref:`ref_flyteidl.admin.LaunchPlan`.", + "description": "Fetch the active launch plan versions specified by input request filters.", + "operationId": "AdminService_ListActiveLaunchPlans2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminLaunchPlanList" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "project", + "description": "Name of the project that contains the identifiers.\n+required.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "domain", + "description": "Name of the domain the identifiers belongs to within the project.\n+required.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "limit", + "description": "Indicates the number of resources to be returned.\n+required.", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "token", + "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.key", + "description": "Indicates an attribute to sort the response values.\n+required", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.direction", + "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DESCENDING", + "ASCENDING" + ], + "default": "DESCENDING" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/children/{task_execution_id.node_execution_id.execution_id.org}/task_executions/{task_execution_id.node_execution_id.execution_id.project}/{task_execution_id.node_execution_id.execution_id.domain}/{task_execution_id.node_execution_id.execution_id.name}/{task_execution_id.node_execution_id.node_id}/{task_execution_id.task_id.project}/{task_execution_id.task_id.domain}/{task_execution_id.task_id.name}/{task_execution_id.task_id.version}/{task_execution_id.retry_attempt}": { + "get": { + "summary": "Fetch a list of :ref:`ref_flyteidl.admin.NodeExecution` launched by the reference :ref:`ref_flyteidl.admin.TaskExecution`.", + "operationId": "AdminService_ListNodeExecutionsForTask2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminNodeExecutionList" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "task_execution_id.node_execution_id.execution_id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "task_execution_id.node_execution_id.execution_id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "task_execution_id.node_execution_id.execution_id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "task_execution_id.node_execution_id.execution_id.name", + "description": "User or system provided value for the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "task_execution_id.node_execution_id.node_id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "task_execution_id.task_id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "task_execution_id.task_id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "task_execution_id.task_id.name", + "description": "User provided value for the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "task_execution_id.task_id.version", + "description": "Specific version of the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "task_execution_id.retry_attempt", + "in": "path", + "required": true, + "type": "integer", + "format": "int64" + }, + { + "name": "task_execution_id.task_id.resource_type", + "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" + ], + "default": "UNSPECIFIED" + }, + { + "name": "task_execution_id.task_id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "limit", + "description": "Indicates the number of resources to be returned.\n+required", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "token", + "description": "In the case of multiple pages of results, the, server-provided token can be used to fetch the next page\nin a query.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "filters", + "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.key", + "description": "Indicates an attribute to sort the response values.\n+required", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.direction", + "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DESCENDING", + "ASCENDING" + ], + "default": "DESCENDING" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/configuration/{id.org}/{id.domain}": { + "get": { + "summary": "Fetch a unified project attribute.", + "operationId": "AdminService_GetConfiguration4", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminConfigurationGetResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id.org", + "description": "Name of the org the configuration belongs to.\n+optional", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the configuration belongs to.\n+optional", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.project", + "description": "Name of the project the configuration belongs to.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "id.workflow", + "description": "Name of the workflow the configuration belongs to.\n+optional", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/configuration/{id.org}/{id.project}/{id.domain}": { + "get": { + "summary": "Fetch a unified project attribute.", + "operationId": "AdminService_GetConfiguration2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminConfigurationGetResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id.org", + "description": "Name of the org the configuration belongs to.\n+optional", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.project", + "description": "Name of the project the configuration belongs to.\n+optional", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the configuration belongs to.\n+optional", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.workflow", + "description": "Name of the workflow the configuration belongs to.\n+optional", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "AdminService" + ] + }, + "post": { + "summary": "Update a unified project attribute.\nRequests will fail for stale values of version_to_update", + "operationId": "AdminService_UpdateProjectDomainConfiguration2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminConfigurationUpdateResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id.org", + "description": "Name of the org the configuration belongs to.\n+optional", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.project", + "description": "Name of the project the configuration belongs to.\n+optional", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the configuration belongs to.\n+optional", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AdminServiceUpdateProjectDomainConfigurationBody" + } + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/count/executions/{org}/{project}/{domain}": { + "get": { + "summary": "Fetch the count of :ref:`ref_flyteidl.admin.Execution`.", + "operationId": "AdminService_GetExecutionCounts2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminExecutionCountsGetResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "org", + "description": "org filter applied to execution count request.\n+optional", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "project", + "description": "Name of the project the execution belongs to.\n+required", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "domain", + "description": "Name of the domain the execution belongs to.\nA domain can be considered as a subset within a specific project.\n+required", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "filters", + "description": "Indicates a list of filters passed as string.\n+optional", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/data/executions/{id.org}/{id.project}/{id.domain}/{id.name}": { + "get": { + "summary": "Fetches input and output data for a :ref:`ref_flyteidl.admin.Execution`.", + "operationId": "AdminService_GetExecutionData2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminWorkflowExecutionGetDataResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User or system provided value for the resource.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/data/node_executions/{id.execution_id.org}/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}": { + "get": { + "summary": "Fetches input and output data for a :ref:`ref_flyteidl.admin.NodeExecution`.", + "operationId": "AdminService_GetNodeExecutionData2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminNodeExecutionGetDataResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id.execution_id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.execution_id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.execution_id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.execution_id.name", + "description": "User or system provided value for the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.node_id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/data/task_executions/{id.node_execution_id.execution_id.org}/{id.task_id.org}/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}": { + "get": { + "summary": "Fetches input and output data for a :ref:`ref_flyteidl.admin.TaskExecution`.", + "description": "Retrieve input and output data from an existing task execution.", + "operationId": "AdminService_GetTaskExecutionData2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminTaskExecutionGetDataResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id.node_execution_id.execution_id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.task_id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.node_execution_id.execution_id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.node_execution_id.execution_id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.node_execution_id.execution_id.name", + "description": "User or system provided value for the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.node_execution_id.node_id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.task_id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.task_id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.task_id.name", + "description": "User provided value for the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.task_id.version", + "description": "Specific version of the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.retry_attempt", + "in": "path", + "required": true, + "type": "integer", + "format": "int64" + }, + { + "name": "id.task_id.resource_type", + "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" + ], + "default": "UNSPECIFIED" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/description_entities/{id.org}/{id.resource_type}/{id.project}/{id.domain}/{id.name}/{id.version}": { + "get": { + "summary": "Fetch a :ref:`ref_flyteidl.admin.DescriptionEntity` object.", + "description": "Retrieve an existing description entity description.", + "operationId": "AdminService_GetDescriptionEntity2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminDescriptionEntity" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.resource_type", + "description": "Identifies the specific type of resource that this identifier corresponds to.", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" + ] + }, + { + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User provided value for the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.version", + "description": "Specific version of the resource.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/description_entities/{id.org}/{resource_type}/{id.project}/{id.domain}": { + "get": { + "summary": "Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions.", + "description": "Fetch existing description entity definitions matching input filters.", + "operationId": "AdminService_ListDescriptionEntities4", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminDescriptionEntityList" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "resource_type", + "description": "Identifies the specific type of resource that this identifier corresponds to.", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" + ] + }, + { + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "limit", + "description": "Indicates the number of resources to be returned.\n+required", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "token", + "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "filters", + "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.key", + "description": "Indicates an attribute to sort the response values.\n+required", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.direction", + "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DESCENDING", + "ASCENDING" + ], + "default": "DESCENDING" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/description_entities/{id.org}/{resource_type}/{id.project}/{id.domain}/{id.name}": { + "get": { + "summary": "Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions.", + "description": "Fetch existing description entity definitions matching input filters.", + "operationId": "AdminService_ListDescriptionEntities2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminDescriptionEntityList" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "resource_type", + "description": "Identifies the specific type of resource that this identifier corresponds to.", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" + ] + }, + { + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "limit", + "description": "Indicates the number of resources to be returned.\n+required", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "token", + "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "filters", + "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.key", + "description": "Indicates an attribute to sort the response values.\n+required", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.direction", + "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DESCENDING", + "ASCENDING" + ], + "default": "DESCENDING" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/events/{event.execution_id.org}/workflows": { + "post": { + "summary": "Indicates a :ref:`ref_flyteidl.event.WorkflowExecutionEvent` has occurred.", + "description": "Create a workflow execution event recording a phase transition.", + "operationId": "AdminService_CreateWorkflowEvent2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminWorkflowExecutionEventResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "event.execution_id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AdminServiceCreateWorkflowEventBody" + } + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/events/{event.id.execution_id.org}/nodes": { + "post": { + "summary": "Indicates a :ref:`ref_flyteidl.event.NodeExecutionEvent` has occurred.", + "description": "Create a node execution event recording a phase transition.", + "operationId": "AdminService_CreateNodeEvent2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminNodeExecutionEventResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "event.id.execution_id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AdminServiceCreateNodeEventBody" + } + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/events/{event.parent_node_execution_id.execution_id.org}/tasks": { + "post": { + "summary": "Indicates a :ref:`ref_flyteidl.event.TaskExecutionEvent` has occurred.", + "description": "Create a task execution event recording a phase transition.", + "operationId": "AdminService_CreateTaskEvent2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminTaskExecutionEventResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "event.parent_node_execution_id.execution_id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AdminServiceCreateTaskEventBody" + } + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/executions/{id.org}/recover": { + "post": { + "summary": "Recreates a previously-run workflow execution that will only start executing from the last known failure point.\nIn Recover mode, users cannot change any input parameters or update the version of the execution.\nThis is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures,\ndownstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again.\nSee :ref:`ref_flyteidl.admin.ExecutionRecoverRequest` for more details.", + "description": "Recreates a previously-run workflow execution that will only start executing from the last known failure point. In Recover mode, users cannot change any input parameters or update the version of the execution. This is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures, downstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again.", + "operationId": "AdminService_RecoverExecution2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminExecutionCreateResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AdminServiceRecoverExecutionBody" + } + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/executions/{id.org}/relaunch": { + "post": { + "summary": "Triggers the creation of an identical :ref:`ref_flyteidl.admin.Execution`", + "description": "Relaunch a workflow execution.", + "operationId": "AdminService_RelaunchExecution2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminExecutionCreateResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AdminServiceRelaunchExecutionBody" + } + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/executions/{id.org}/{id.project}/{id.domain}": { + "get": { + "summary": "Fetch a list of :ref:`ref_flyteidl.admin.Execution`.", + "operationId": "AdminService_ListExecutions2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminExecutionList" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "limit", + "description": "Indicates the number of resources to be returned.\n+required", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "token", + "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "filters", + "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.key", + "description": "Indicates an attribute to sort the response values.\n+required", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.direction", + "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DESCENDING", + "ASCENDING" + ], + "default": "DESCENDING" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/executions/{id.org}/{id.project}/{id.domain}/{id.name}": { + "get": { + "summary": "Fetches a :ref:`ref_flyteidl.admin.Execution`.", + "description": "Retrieve an existing workflow execution.", + "operationId": "AdminService_GetExecution2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminExecution" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User or system provided value for the resource.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "AdminService" + ] + }, + "delete": { + "summary": "Terminates an in-progress :ref:`ref_flyteidl.admin.Execution`.", + "operationId": "AdminService_TerminateExecution2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminExecutionTerminateResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User or system provided value for the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AdminServiceTerminateExecutionBody" + } + } + ], + "tags": [ + "AdminService" + ] + }, + "put": { + "summary": "Update execution belonging to project domain :ref:`ref_flyteidl.admin.Execution`.", + "operationId": "AdminService_UpdateExecution2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminExecutionUpdateResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User or system provided value for the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AdminServiceUpdateExecutionBody" + } + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/executions/{org}": { + "post": { + "summary": "Triggers the creation of a :ref:`ref_flyteidl.admin.Execution`", + "description": "Create a workflow execution.", + "operationId": "AdminService_CreateExecution2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminExecutionCreateResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AdminServiceCreateExecutionBody" + } + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/launch_plan_ids/{org}/{project}/{domain}": { + "get": { + "summary": "Fetch a list of :ref:`ref_flyteidl.admin.NamedEntityIdentifier` of launch plan objects.", + "description": "Fetch existing launch plan definition identifiers matching input filters.", + "operationId": "AdminService_ListLaunchPlanIds2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminNamedEntityIdentifierList" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "project", + "description": "Name of the project that contains the identifiers.\n+required", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "domain", + "description": "Name of the domain the identifiers belongs to within the project.\n+required", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "limit", + "description": "Indicates the number of resources to be returned.\n+required", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "token", + "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.key", + "description": "Indicates an attribute to sort the response values.\n+required", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.direction", + "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DESCENDING", + "ASCENDING" + ], + "default": "DESCENDING" + }, + { + "name": "filters", + "description": "Indicates a list of filters passed as string.\n+optional", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/launch_plans/{id.org}": { + "post": { + "summary": "Create and upload a :ref:`ref_flyteidl.admin.LaunchPlan` definition", + "description": "Create and register a launch plan definition.", + "operationId": "AdminService_CreateLaunchPlan2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminLaunchPlanCreateResponse" + } + }, + "400": { + "description": "Returned for bad request that may have failed validation.", + "schema": {} + }, + "409": { + "description": "Returned for a request that references an identical entity that has already been registered.", + "schema": {} + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AdminServiceCreateLaunchPlanBody" + } + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/launch_plans/{id.org}/{id.project}/{id.domain}": { + "get": { + "summary": "Fetch a list of :ref:`ref_flyteidl.admin.LaunchPlan` definitions.", + "description": "Fetch existing launch plan definitions matching input filters.", + "operationId": "AdminService_ListLaunchPlans4", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminLaunchPlanList" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "limit", + "description": "Indicates the number of resources to be returned.\n+required", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "token", + "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "filters", + "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.key", + "description": "Indicates an attribute to sort the response values.\n+required", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.direction", + "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DESCENDING", + "ASCENDING" + ], + "default": "DESCENDING" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/launch_plans/{id.org}/{id.project}/{id.domain}/{id.name}": { + "get": { + "summary": "Fetch a list of :ref:`ref_flyteidl.admin.LaunchPlan` definitions.", + "description": "Fetch existing launch plan definitions matching input filters.", + "operationId": "AdminService_ListLaunchPlans2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminLaunchPlanList" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "limit", + "description": "Indicates the number of resources to be returned.\n+required", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "token", + "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "filters", + "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.key", + "description": "Indicates an attribute to sort the response values.\n+required", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.direction", + "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DESCENDING", + "ASCENDING" + ], + "default": "DESCENDING" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/launch_plans/{id.org}/{id.project}/{id.domain}/{id.name}/{id.version}": { + "get": { + "summary": "Fetch a :ref:`ref_flyteidl.admin.LaunchPlan` definition.", + "description": "Retrieve an existing launch plan definition.", + "operationId": "AdminService_GetLaunchPlan2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminLaunchPlan" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User provided value for the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.version", + "description": "Specific version of the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.resource_type", + "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" + ], + "default": "UNSPECIFIED" + } + ], + "tags": [ + "AdminService" + ] + }, + "put": { + "summary": "Updates the status of a registered :ref:`ref_flyteidl.admin.LaunchPlan`.", + "description": "Update the status of an existing launch plan definition. At most one launch plan version for a given {project, domain, name} can be active at a time. If this call sets a launch plan to active and existing version is already active, the result of this call will be that the formerly active launch plan will be made inactive and specified launch plan in this request will be made active. In the event that the formerly active launch plan had a schedule associated it with it, this schedule will be disabled. If the reference launch plan in this request is being set to active and has a schedule associated with it, the schedule will be enabled.", + "operationId": "AdminService_UpdateLaunchPlan2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminLaunchPlanUpdateResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User provided value for the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.version", + "description": "Specific version of the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AdminServiceUpdateLaunchPlanBody" + } + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/matchable_attributes/{org}": { + "get": { + "summary": "Lists custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a specific resource type.", + "description": "Retrieve a list of MatchableAttributesConfiguration objects.", + "operationId": "AdminService_ListMatchableAttributes2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminListMatchableAttributesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "org", + "description": "Optional, org filter applied to list project requests.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "resource_type", + "description": "+required\n\n - TASK_RESOURCE: Applies to customizable task resource requests and limits.\n - CLUSTER_RESOURCE: Applies to configuring templated kubernetes cluster resources.\n - EXECUTION_QUEUE: Configures task and dynamic task execution queue assignment.\n - EXECUTION_CLUSTER_LABEL: Configures the K8s cluster label to be used for execution to be run\n - QUALITY_OF_SERVICE_SPECIFICATION: Configures default quality of service when undefined in an execution spec.\n - PLUGIN_OVERRIDE: Selects configurable plugin implementation behavior for a given task type.\n - WORKFLOW_EXECUTION_CONFIG: Adds defaults for customizable workflow-execution specifications and overrides.\n - CLUSTER_ASSIGNMENT: Controls how to select an available cluster on which this execution should run.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "TASK_RESOURCE", + "CLUSTER_RESOURCE", + "EXECUTION_QUEUE", + "EXECUTION_CLUSTER_LABEL", + "QUALITY_OF_SERVICE_SPECIFICATION", + "PLUGIN_OVERRIDE", + "WORKFLOW_EXECUTION_CONFIG", + "CLUSTER_ASSIGNMENT" + ], + "default": "TASK_RESOURCE" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/metrics/executions/{id.org}/{id.project}/{id.domain}/{id.name}": { + "get": { + "summary": "Fetches runtime metrics for a :ref:`ref_flyteidl.admin.Execution`.", + "description": "Retrieve metrics from an existing workflow execution.", + "operationId": "AdminService_GetExecutionMetrics2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminWorkflowExecutionGetMetricsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User or system provided value for the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "depth", + "description": "depth defines the number of Flyte entity levels to traverse when breaking down execution details.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/named_entities/{id.org}/{resource_type}/{id.project}/{id.domain}/{id.name}": { + "get": { + "summary": "Returns a :ref:`ref_flyteidl.admin.NamedEntity` object.", + "description": "Retrieve a NamedEntity object.", + "operationId": "AdminService_GetNamedEntity2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminNamedEntity" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "resource_type", + "description": "Resource type of the metadata to get. One of Task, Workflow or LaunchPlan.\n+required", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" + ] + }, + { + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "AdminService" + ] + }, + "put": { + "summary": "Updates a :ref:`ref_flyteidl.admin.NamedEntity` object.", + "description": "Update the fields associated with a NamedEntity", + "operationId": "AdminService_UpdateNamedEntity2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminNamedEntityUpdateResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "resource_type", + "description": "Resource type of the metadata to update\n+required", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" + ] + }, + { + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AdminServiceUpdateNamedEntityBody" + } + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/named_entities/{org}/{resource_type}/{project}/{domain}": { + "get": { + "summary": "Returns a list of :ref:`ref_flyteidl.admin.NamedEntity` objects.", + "description": "Retrieve a list of NamedEntity objects sharing a common resource type, project, and domain.", + "operationId": "AdminService_ListNamedEntities2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminNamedEntityList" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "resource_type", + "description": "Resource type of the metadata to query. One of Task, Workflow or LaunchPlan.\n+required", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" + ] + }, + { + "name": "project", + "description": "Name of the project that contains the identifiers.\n+required", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "domain", + "description": "Name of the domain the identifiers belongs to within the project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "limit", + "description": "Indicates the number of resources to be returned.", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "token", + "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.key", + "description": "Indicates an attribute to sort the response values.\n+required", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.direction", + "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DESCENDING", + "ASCENDING" + ], + "default": "DESCENDING" + }, + { + "name": "filters", + "description": "Indicates a list of filters passed as string.\n+optional", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/node_executions/{id.execution_id.org}/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}": { + "get": { + "summary": "Fetches a :ref:`ref_flyteidl.admin.NodeExecution`.", + "operationId": "AdminService_GetNodeExecution2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/flyteidladminNodeExecution" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id.execution_id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.execution_id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.execution_id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.execution_id.name", + "description": "User or system provided value for the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.node_id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/node_executions/{id.execution_id.org}/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}/dynamic_workflow": { + "get": { + "summary": "Fetches a :ref:`ref_flyteidl.admin.DynamicNodeWorkflowResponse`.", + "operationId": "AdminService_GetDynamicNodeWorkflow2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminDynamicNodeWorkflowResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id.execution_id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.execution_id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.execution_id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.execution_id.name", + "description": "User or system provided value for the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.node_id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/node_executions/{workflow_execution_id.org}/{workflow_execution_id.project}/{workflow_execution_id.domain}/{workflow_execution_id.name}": { + "get": { + "summary": "Fetch a list of :ref:`ref_flyteidl.admin.NodeExecution`.", + "operationId": "AdminService_ListNodeExecutions2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminNodeExecutionList" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workflow_execution_id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "workflow_execution_id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "workflow_execution_id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "workflow_execution_id.name", + "description": "User or system provided value for the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "limit", + "description": "Indicates the number of resources to be returned.\n+required", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "token", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "filters", + "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.key", + "description": "Indicates an attribute to sort the response values.\n+required", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.direction", + "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DESCENDING", + "ASCENDING" + ], + "default": "DESCENDING" + }, + { + "name": "unique_parent_id", + "description": "Unique identifier of the parent node in the execution\n+optional", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/project_domain_attributes/{attributes.org}/{attributes.project}": { + "put": { + "summary": "Creates or updates custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` at the project level", + "description": "Update the customized resource attributes associated with a project", + "operationId": "AdminService_UpdateProjectAttributes2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminProjectAttributesUpdateResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "attributes.org", + "description": "Optional, org key applied to the project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "attributes.project", + "description": "Unique project id for which this set of attributes will be applied.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AdminServiceUpdateProjectAttributesBody" + } + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/project_domain_attributes/{attributes.org}/{attributes.project}/{attributes.domain}": { + "put": { + "summary": "Creates or updates custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", + "description": "Update the customized resource attributes associated with a project-domain combination", + "operationId": "AdminService_UpdateProjectDomainAttributes2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminProjectDomainAttributesUpdateResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "attributes.org", + "description": "Optional, org key applied to the attributes.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "attributes.project", + "description": "Unique project id for which this set of attributes will be applied.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "attributes.domain", + "description": "Unique domain id for which this set of attributes will be applied.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AdminServiceUpdateProjectDomainAttributesBody" + } + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/project_domain_attributes/{org}/{project}": { + "get": { + "summary": "Fetches custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", + "description": "Retrieve the customized resource attributes associated with a project", + "operationId": "AdminService_GetProjectAttributes2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminProjectAttributesGetResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "org", + "description": "Optional, org key applied to the project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "project", + "description": "Unique project id which this set of attributes references.\n+required", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "resource_type", + "description": "Which type of matchable attributes to return.\n+required\n\n - TASK_RESOURCE: Applies to customizable task resource requests and limits.\n - CLUSTER_RESOURCE: Applies to configuring templated kubernetes cluster resources.\n - EXECUTION_QUEUE: Configures task and dynamic task execution queue assignment.\n - EXECUTION_CLUSTER_LABEL: Configures the K8s cluster label to be used for execution to be run\n - QUALITY_OF_SERVICE_SPECIFICATION: Configures default quality of service when undefined in an execution spec.\n - PLUGIN_OVERRIDE: Selects configurable plugin implementation behavior for a given task type.\n - WORKFLOW_EXECUTION_CONFIG: Adds defaults for customizable workflow-execution specifications and overrides.\n - CLUSTER_ASSIGNMENT: Controls how to select an available cluster on which this execution should run.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "TASK_RESOURCE", + "CLUSTER_RESOURCE", + "EXECUTION_QUEUE", + "EXECUTION_CLUSTER_LABEL", + "QUALITY_OF_SERVICE_SPECIFICATION", + "PLUGIN_OVERRIDE", + "WORKFLOW_EXECUTION_CONFIG", + "CLUSTER_ASSIGNMENT" + ], + "default": "TASK_RESOURCE" + } + ], + "tags": [ + "AdminService" + ] + }, + "delete": { + "summary": "Deletes custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", + "description": "Delete the customized resource attributes associated with a project", + "operationId": "AdminService_DeleteProjectAttributes2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminProjectAttributesDeleteResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "org", + "description": "Optional, org key applied to the project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "project", + "description": "Unique project id which this set of attributes references.\n+required", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AdminServiceDeleteProjectAttributesBody" + } + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/project_domain_attributes/{org}/{project}/{domain}": { + "get": { + "summary": "Fetches custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", + "description": "Retrieve the customized resource attributes associated with a project-domain combination", + "operationId": "AdminService_GetProjectDomainAttributes2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminProjectDomainAttributesGetResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "org", + "description": "Optional, org key applied to the attributes.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "project", + "description": "Unique project id which this set of attributes references.\n+required", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "domain", + "description": "Unique domain id which this set of attributes references.\n+required", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "resource_type", + "description": "Which type of matchable attributes to return.\n+required\n\n - TASK_RESOURCE: Applies to customizable task resource requests and limits.\n - CLUSTER_RESOURCE: Applies to configuring templated kubernetes cluster resources.\n - EXECUTION_QUEUE: Configures task and dynamic task execution queue assignment.\n - EXECUTION_CLUSTER_LABEL: Configures the K8s cluster label to be used for execution to be run\n - QUALITY_OF_SERVICE_SPECIFICATION: Configures default quality of service when undefined in an execution spec.\n - PLUGIN_OVERRIDE: Selects configurable plugin implementation behavior for a given task type.\n - WORKFLOW_EXECUTION_CONFIG: Adds defaults for customizable workflow-execution specifications and overrides.\n - CLUSTER_ASSIGNMENT: Controls how to select an available cluster on which this execution should run.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "TASK_RESOURCE", + "CLUSTER_RESOURCE", + "EXECUTION_QUEUE", + "EXECUTION_CLUSTER_LABEL", + "QUALITY_OF_SERVICE_SPECIFICATION", + "PLUGIN_OVERRIDE", + "WORKFLOW_EXECUTION_CONFIG", + "CLUSTER_ASSIGNMENT" + ], + "default": "TASK_RESOURCE" + } + ], + "tags": [ + "AdminService" + ] + }, + "delete": { + "summary": "Deletes custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", + "description": "Delete the customized resource attributes associated with a project-domain combination", + "operationId": "AdminService_DeleteProjectDomainAttributes2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminProjectDomainAttributesDeleteResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "org", + "description": "Optional, org key applied to the attributes.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "project", + "description": "Unique project id which this set of attributes references.\n+required", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "domain", + "description": "Unique domain id which this set of attributes references.\n+required", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AdminServiceDeleteProjectDomainAttributesBody" + } + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/projects/{org}": { + "get": { + "summary": "Fetches a list of :ref:`ref_flyteidl.admin.Project`", + "description": "Fetch registered projects.", + "operationId": "AdminService_ListProjects2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminProjects" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "org", + "description": "Optional, org filter applied to list project requests.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "limit", + "description": "Indicates the number of projects to be returned.\n+required", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "token", + "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "filters", + "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.key", + "description": "Indicates an attribute to sort the response values.\n+required", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.direction", + "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DESCENDING", + "ASCENDING" + ], + "default": "DESCENDING" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/projects/{org}/{id}": { + "get": { + "summary": "Fetches a :ref:`ref_flyteidl.admin.Project`", + "description": "Fetch a registered project.", + "operationId": "AdminService_GetProject2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminProject" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id", + "description": "Indicates a unique project.\n+required", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "AdminService" + ] + }, + "put": { + "summary": "Updates an existing :ref:`ref_flyteidl.admin.Project`\nflyteidl.admin.Project should be passed but the domains property should be empty;\nit will be ignored in the handler as domains cannot be updated via this API.", + "description": "Update a project.", + "operationId": "AdminService_UpdateProject2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminProjectUpdateResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id", + "description": "Globally unique project name.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AdminServiceUpdateProjectBody" + } + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/projects/{project.org}": { + "post": { + "summary": "Registers a :ref:`ref_flyteidl.admin.Project` with the Flyte deployment.", + "operationId": "AdminService_RegisterProject2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminProjectRegisterResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "project.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AdminServiceRegisterProjectBody" + } + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/running_count/executions/{org}/{project}/{domain}": { + "get": { + "operationId": "AdminService_GetRunningExecutionsCount2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminRunningExecutionsCountGetResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "org", + "description": "org filter applied to execution count request.\n+optional", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "project", + "description": "Name of the project the execution belongs to.\n+required", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "domain", + "description": "Name of the domain the execution belongs to.\nA domain can be considered as a subset within a specific project.\n+required", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/task_executions/{id.node_execution_id.execution_id.org}/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}": { + "get": { + "summary": "Fetches a :ref:`ref_flyteidl.admin.TaskExecution`.", + "description": "Retrieve an existing task execution.", + "operationId": "AdminService_GetTaskExecution2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/flyteidladminTaskExecution" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id.node_execution_id.execution_id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.node_execution_id.execution_id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.node_execution_id.execution_id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.node_execution_id.execution_id.name", + "description": "User or system provided value for the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.node_execution_id.node_id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.task_id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.task_id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.task_id.name", + "description": "User provided value for the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.task_id.version", + "description": "Specific version of the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.retry_attempt", + "in": "path", + "required": true, + "type": "integer", + "format": "int64" + }, + { + "name": "id.task_id.resource_type", + "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" + ], + "default": "UNSPECIFIED" + }, + { + "name": "id.task_id.org", + "description": "Optional, org key applied to the resource.", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/task_executions/{node_execution_id.execution_id.org}/{node_execution_id.execution_id.project}/{node_execution_id.execution_id.domain}/{node_execution_id.execution_id.name}/{node_execution_id.node_id}": { + "get": { + "summary": "Fetches a list of :ref:`ref_flyteidl.admin.TaskExecution`.", + "description": "Fetch existing task executions matching input filters.", + "operationId": "AdminService_ListTaskExecutions2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminTaskExecutionList" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "node_execution_id.execution_id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "node_execution_id.execution_id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "node_execution_id.execution_id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "node_execution_id.execution_id.name", + "description": "User or system provided value for the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "node_execution_id.node_id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "limit", + "description": "Indicates the number of resources to be returned.\n+required", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "token", + "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "filters", + "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.key", + "description": "Indicates an attribute to sort the response values.\n+required", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.direction", + "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DESCENDING", + "ASCENDING" + ], + "default": "DESCENDING" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/tasks/{id.org}": { + "post": { + "summary": "Create and upload a :ref:`ref_flyteidl.admin.Task` definition", + "description": "Create and register a task definition.", + "operationId": "AdminService_CreateTask2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/flyteidladminTaskCreateResponse" + } + }, + "400": { + "description": "Returned for bad request that may have failed validation.", + "schema": {} + }, + "409": { + "description": "Returned for a request that references an identical entity that has already been registered.", + "schema": {} + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/serviceAdminServiceCreateTaskBody" + } + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/tasks/{id.org}/{id.project}/{id.domain}": { + "get": { + "summary": "Fetch a list of :ref:`ref_flyteidl.admin.Task` definitions.", + "description": "Fetch existing task definitions matching input filters.", + "operationId": "AdminService_ListTasks4", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminTaskList" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "limit", + "description": "Indicates the number of resources to be returned.\n+required", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "token", + "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "filters", + "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.key", + "description": "Indicates an attribute to sort the response values.\n+required", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.direction", + "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DESCENDING", + "ASCENDING" + ], + "default": "DESCENDING" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/tasks/{id.org}/{id.project}/{id.domain}/{id.name}": { + "get": { + "summary": "Fetch a list of :ref:`ref_flyteidl.admin.Task` definitions.", + "description": "Fetch existing task definitions matching input filters.", + "operationId": "AdminService_ListTasks2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminTaskList" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "limit", + "description": "Indicates the number of resources to be returned.\n+required", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "token", + "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "filters", + "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.key", + "description": "Indicates an attribute to sort the response values.\n+required", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.direction", + "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DESCENDING", + "ASCENDING" + ], + "default": "DESCENDING" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/tasks/{id.org}/{id.project}/{id.domain}/{id.name}/{id.version}": { + "get": { + "summary": "Fetch a :ref:`ref_flyteidl.admin.Task` definition.", + "description": "Retrieve an existing task definition.", + "operationId": "AdminService_GetTask2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminTask" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User provided value for the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.version", + "description": "Specific version of the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.resource_type", + "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" + ], + "default": "UNSPECIFIED" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/tasks/{org}/{project}/{domain}": { + "get": { + "summary": "Fetch a list of :ref:`ref_flyteidl.admin.NamedEntityIdentifier` of task objects.", + "description": "Fetch existing task definition identifiers matching input filters.", + "operationId": "AdminService_ListTaskIds2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminNamedEntityIdentifierList" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "project", + "description": "Name of the project that contains the identifiers.\n+required", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "domain", + "description": "Name of the domain the identifiers belongs to within the project.\n+required", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "limit", + "description": "Indicates the number of resources to be returned.\n+required", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "token", + "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.key", + "description": "Indicates an attribute to sort the response values.\n+required", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.direction", + "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DESCENDING", + "ASCENDING" + ], + "default": "DESCENDING" + }, + { + "name": "filters", + "description": "Indicates a list of filters passed as string.\n+optional", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/workflow_attributes/{attributes.org}/{attributes.project}/{attributes.domain}/{attributes.workflow}": { + "put": { + "summary": "Creates or updates custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project, domain and workflow.", + "description": "Update the customized resource attributes associated with a project, domain and workflow combination", + "operationId": "AdminService_UpdateWorkflowAttributes2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminWorkflowAttributesUpdateResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "attributes.org", + "description": "Optional, org key applied to the attributes.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "attributes.project", + "description": "Unique project id for which this set of attributes will be applied.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "attributes.domain", + "description": "Unique domain id for which this set of attributes will be applied.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "attributes.workflow", + "description": "Workflow name for which this set of attributes will be applied.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AdminServiceUpdateWorkflowAttributesBody" + } + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/workflow_attributes/{org}/{project}/{domain}/{workflow}": { + "get": { + "summary": "Fetches custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project, domain and workflow.", + "description": "Retrieve the customized resource attributes associated with a project, domain and workflow combination", + "operationId": "AdminService_GetWorkflowAttributes2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminWorkflowAttributesGetResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "org", + "description": "Optional, org key applied to the attributes.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "project", + "description": "Unique project id which this set of attributes references.\n+required", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "domain", + "description": "Unique domain id which this set of attributes references.\n+required", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "workflow", + "description": "Workflow name which this set of attributes references.\n+required", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "resource_type", + "description": "Which type of matchable attributes to return.\n+required\n\n - TASK_RESOURCE: Applies to customizable task resource requests and limits.\n - CLUSTER_RESOURCE: Applies to configuring templated kubernetes cluster resources.\n - EXECUTION_QUEUE: Configures task and dynamic task execution queue assignment.\n - EXECUTION_CLUSTER_LABEL: Configures the K8s cluster label to be used for execution to be run\n - QUALITY_OF_SERVICE_SPECIFICATION: Configures default quality of service when undefined in an execution spec.\n - PLUGIN_OVERRIDE: Selects configurable plugin implementation behavior for a given task type.\n - WORKFLOW_EXECUTION_CONFIG: Adds defaults for customizable workflow-execution specifications and overrides.\n - CLUSTER_ASSIGNMENT: Controls how to select an available cluster on which this execution should run.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "TASK_RESOURCE", + "CLUSTER_RESOURCE", + "EXECUTION_QUEUE", + "EXECUTION_CLUSTER_LABEL", + "QUALITY_OF_SERVICE_SPECIFICATION", + "PLUGIN_OVERRIDE", + "WORKFLOW_EXECUTION_CONFIG", + "CLUSTER_ASSIGNMENT" + ], + "default": "TASK_RESOURCE" + } + ], + "tags": [ + "AdminService" + ] + }, + "delete": { + "summary": "Deletes custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project, domain and workflow.", + "description": "Delete the customized resource attributes associated with a project, domain and workflow combination", + "operationId": "AdminService_DeleteWorkflowAttributes2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminWorkflowAttributesDeleteResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "org", + "description": "Optional, org key applied to the attributes.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "project", + "description": "Unique project id which this set of attributes references.\n+required", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "domain", + "description": "Unique domain id which this set of attributes references.\n+required", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "workflow", + "description": "Workflow name which this set of attributes references.\n+required", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AdminServiceDeleteWorkflowAttributesBody" + } + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/workflows/{id.org}": { + "post": { + "summary": "Create and upload a :ref:`ref_flyteidl.admin.Workflow` definition", + "description": "Create and register a workflow definition.", + "operationId": "AdminService_CreateWorkflow2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminWorkflowCreateResponse" + } + }, + "400": { + "description": "Returned for bad request that may have failed validation.", + "schema": {} + }, + "409": { + "description": "Returned for a request that references an identical entity that has already been registered.", + "schema": {} + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AdminServiceCreateWorkflowBody" + } + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/workflows/{id.org}/{id.project}/{id.domain}": { + "get": { + "summary": "Fetch a list of :ref:`ref_flyteidl.admin.Workflow` definitions.", + "description": "Fetch existing workflow definitions matching input filters.", + "operationId": "AdminService_ListWorkflows4", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminWorkflowList" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "limit", + "description": "Indicates the number of resources to be returned.\n+required", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "token", + "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "filters", + "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.key", + "description": "Indicates an attribute to sort the response values.\n+required", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.direction", + "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DESCENDING", + "ASCENDING" + ], + "default": "DESCENDING" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/workflows/{id.org}/{id.project}/{id.domain}/{id.name}": { + "get": { + "summary": "Fetch a list of :ref:`ref_flyteidl.admin.Workflow` definitions.", + "description": "Fetch existing workflow definitions matching input filters.", + "operationId": "AdminService_ListWorkflows2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminWorkflowList" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "limit", + "description": "Indicates the number of resources to be returned.\n+required", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "token", + "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "filters", + "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.key", + "description": "Indicates an attribute to sort the response values.\n+required", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.direction", + "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DESCENDING", + "ASCENDING" + ], + "default": "DESCENDING" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/workflows/{id.org}/{id.project}/{id.domain}/{id.name}/{id.version}": { + "get": { + "summary": "Fetch a :ref:`ref_flyteidl.admin.Workflow` definition.", + "description": "Retrieve an existing workflow definition.", + "operationId": "AdminService_GetWorkflow2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminWorkflow" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "id.org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User provided value for the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.version", + "description": "Specific version of the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.resource_type", + "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" + ], + "default": "UNSPECIFIED" + } + ], + "tags": [ + "AdminService" + ] + } + }, + "/api/v1/org/workflows/{org}/{project}/{domain}": { + "get": { + "summary": "Fetch a list of :ref:`ref_flyteidl.admin.NamedEntityIdentifier` of workflow objects.", + "operationId": "AdminService_ListWorkflowIds2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminNamedEntityIdentifierList" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "org", + "description": "Optional, org key applied to the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "project", + "description": "Name of the project that contains the identifiers.\n+required", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "domain", + "description": "Name of the domain the identifiers belongs to within the project.\n+required", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "limit", + "description": "Indicates the number of resources to be returned.\n+required", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "token", + "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.key", + "description": "Indicates an attribute to sort the response values.\n+required", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sort_by.direction", + "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DESCENDING", + "ASCENDING" + ], + "default": "DESCENDING" + }, + { + "name": "filters", + "description": "Indicates a list of filters passed as string.\n+optional", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "AdminService" + ] + } + }, +>>>>>>> 5ec9fe3cc (Add fields to NodeExecutionEvent (#315)) "/api/v1/project_attributes/{attributes.project}": { "put": { "summary": "Creates or updates custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` at the project level", @@ -4034,6 +8406,434 @@ } }, "definitions": { +<<<<<<< HEAD +======= + "AdminServiceCreateExecutionBody": { + "type": "object", + "properties": { + "project": { + "type": "string", + "title": "Name of the project the execution belongs to.\n+required" + }, + "domain": { + "type": "string", + "title": "Name of the domain the execution belongs to.\nA domain can be considered as a subset within a specific project.\n+required" + }, + "name": { + "type": "string", + "title": "User provided value for the resource.\nIf none is provided the system will generate a unique string.\n+optional" + }, + "spec": { + "$ref": "#/definitions/adminExecutionSpec", + "title": "Additional fields necessary to launch the execution.\n+optional" + }, + "inputs": { + "$ref": "#/definitions/coreLiteralMap", + "title": "The inputs required to start the execution. All required inputs must be\nincluded in this map. If not required and not provided, defaults apply.\n+optional" + } + }, + "description": "Request to launch an execution with the given project, domain and optionally-assigned name." + }, + "AdminServiceCreateLaunchPlanBody": { + "type": "object", + "properties": { + "id": { + "type": "object", + "properties": { + "resource_type": { + "$ref": "#/definitions/coreResourceType", + "description": "Identifies the specific type of resource that this identifier corresponds to." + }, + "project": { + "type": "string", + "description": "Name of the project the resource belongs to." + }, + "domain": { + "type": "string", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." + }, + "name": { + "type": "string", + "description": "User provided value for the resource." + }, + "version": { + "type": "string", + "description": "Specific version of the resource." + } + }, + "description": "Uniquely identifies a launch plan entity.", + "title": "Uniquely identifies a launch plan entity." + }, + "spec": { + "$ref": "#/definitions/adminLaunchPlanSpec", + "description": "User-provided launch plan details, including reference workflow, inputs and other metadata." + } + }, + "description": "Request to register a launch plan. The included LaunchPlanSpec may have a complete or incomplete set of inputs required\nto launch a workflow execution. By default all launch plans are registered in state INACTIVE. If you wish to\nset the state to ACTIVE, you must submit a LaunchPlanUpdateRequest, after you have successfully created a launch plan." + }, + "AdminServiceCreateNodeEventBody": { + "type": "object", + "properties": { + "request_id": { + "type": "string", + "title": "Unique ID for this request that can be traced between services" + }, + "event": { + "type": "object", + "properties": { + "id": { + "type": "object", + "properties": { + "node_id": { + "type": "string" + }, + "execution_id": { + "type": "object", + "properties": { + "project": { + "type": "string", + "description": "Name of the project the resource belongs to." + }, + "domain": { + "type": "string", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." + }, + "name": { + "type": "string", + "description": "User or system provided value for the resource." + } + }, + "title": "Encapsulation of fields that uniquely identifies a Flyte workflow execution" + } + }, + "title": "Unique identifier for this node execution" + }, + "producer_id": { + "type": "string", + "title": "the id of the originator (Propeller) of the event" + }, + "phase": { + "$ref": "#/definitions/coreNodeExecutionPhase" + }, + "occurred_at": { + "type": "string", + "format": "date-time", + "description": "This timestamp represents when the original event occurred, it is generated\nby the executor of the node." + }, + "input_uri": { + "type": "string" + }, + "input_data": { + "$ref": "#/definitions/coreLiteralMap", + "description": "Raw input data consumed by this node execution." + }, + "output_uri": { + "type": "string", + "description": "URL to the output of the execution, it encodes all the information\nincluding Cloud source provider. ie., s3://..." + }, + "error": { + "$ref": "#/definitions/coreExecutionError", + "title": "Error information for the execution" + }, + "output_data": { + "$ref": "#/definitions/coreLiteralMap", + "description": "Raw output data produced by this node execution." + }, + "workflow_node_metadata": { + "$ref": "#/definitions/flyteidleventWorkflowNodeMetadata" + }, + "task_node_metadata": { + "$ref": "#/definitions/flyteidleventTaskNodeMetadata" + }, + "parent_task_metadata": { + "$ref": "#/definitions/eventParentTaskExecutionMetadata", + "description": "[To be deprecated] Specifies which task (if any) launched this node." + }, + "parent_node_metadata": { + "$ref": "#/definitions/eventParentNodeExecutionMetadata", + "description": "Specifies the parent node of the current node execution. Node executions at level zero will not have a parent node." + }, + "retry_group": { + "type": "string", + "title": "Retry group to indicate grouping of nodes by retries" + }, + "spec_node_id": { + "type": "string", + "title": "Identifier of the node in the original workflow/graph\nThis maps to value of WorkflowTemplate.nodes[X].id" + }, + "node_name": { + "type": "string", + "title": "Friendly readable name for the node" + }, + "event_version": { + "type": "integer", + "format": "int32" + }, + "is_parent": { + "type": "boolean", + "description": "Whether this node launched a subworkflow." + }, + "is_dynamic": { + "type": "boolean", + "description": "Whether this node yielded a dynamic workflow." + }, + "deck_uri": { + "type": "string", + "title": "String location uniquely identifying where the deck HTML file is\nNativeUrl specifies the url in the format of the configured storage provider (e.g. s3://my-bucket/randomstring/suffix.tar)" + }, + "reported_at": { + "type": "string", + "format": "date-time", + "description": "This timestamp represents the instant when the event was reported by the executing framework. For example,\nwhen first processing a node the `occurred_at` timestamp should be the instant propeller makes progress, so when\nliteral inputs are initially copied. The event however will not be sent until after the copy completes.\nExtracting both of these timestamps facilitates a more accurate portrayal of the evaluation time-series." + }, + "is_array": { + "type": "boolean", + "description": "Indicates if this node is an ArrayNode." + }, + "target_entity": { + "$ref": "#/definitions/coreIdentifier", + "description": "So that Admin doesn't have to rebuild the node execution graph to find the target entity, propeller will fill this\nin optionally - currently this is only filled in for subworkflows. This is the ID of the subworkflow corresponding\nto this node execution. It is difficult to find because Admin only sees one node at a time. A subworkflow could be\nnested multiple layers deep, and you'd need to access the correct workflow template to know the target subworkflow." + }, + "is_in_dynamic_chain": { + "type": "boolean", + "description": "Tasks and subworkflows (but not launch plans) that are run within a dynamic task are effectively independent of\nthe tasks that are registered in Admin's db. Confusingly, they are often identical, but sometimes they are not\neven registered at all. Similar to the target_entity field, at the time Admin receives this event, it has no idea\nif the relevant execution entity is was registered, or dynamic. This field indicates that the target_entity ID,\nas well as task IDs in any corresponding Task Executions, should not be used to looked up the task in Admin's db." + } + }, + "description": "Details about the event that occurred.", + "title": "Details about the event that occurred." + } + }, + "description": "Request to send a notification that a node execution event has occurred." + }, + "AdminServiceCreateTaskEventBody": { + "type": "object", + "properties": { + "request_id": { + "type": "string", + "title": "Unique ID for this request that can be traced between services" + }, + "event": { + "type": "object", + "properties": { + "task_id": { + "$ref": "#/definitions/coreIdentifier", + "description": "ID of the task. In combination with the retryAttempt this will indicate\nthe task execution uniquely for a given parent node execution." + }, + "parent_node_execution_id": { + "type": "object", + "properties": { + "node_id": { + "type": "string" + }, + "execution_id": { + "type": "object", + "properties": { + "project": { + "type": "string", + "description": "Name of the project the resource belongs to." + }, + "domain": { + "type": "string", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." + }, + "name": { + "type": "string", + "description": "User or system provided value for the resource." + } + }, + "title": "Encapsulation of fields that uniquely identifies a Flyte workflow execution" + } + }, + "title": "A task execution is always kicked off by a node execution, the event consumer\nwill use the parent_id to relate the task to it's parent node execution" + }, + "retry_attempt": { + "type": "integer", + "format": "int64", + "title": "retry attempt number for this task, ie., 2 for the second attempt" + }, + "phase": { + "$ref": "#/definitions/coreTaskExecutionPhase", + "title": "Phase associated with the event" + }, + "producer_id": { + "type": "string", + "title": "id of the process that sent this event, mainly for trace debugging" + }, + "logs": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coreTaskLog" + }, + "title": "log information for the task execution" + }, + "occurred_at": { + "type": "string", + "format": "date-time", + "description": "This timestamp represents when the original event occurred, it is generated\nby the executor of the task." + }, + "input_uri": { + "type": "string", + "description": "URI of the input file, it encodes all the information\nincluding Cloud source provider. ie., s3://..." + }, + "input_data": { + "$ref": "#/definitions/coreLiteralMap", + "description": "Raw input data consumed by this task execution." + }, + "output_uri": { + "type": "string", + "description": "URI to the output of the execution, it will be in a format that encodes all the information\nincluding Cloud source provider. ie., s3://..." + }, + "error": { + "$ref": "#/definitions/coreExecutionError", + "title": "Error information for the execution" + }, + "output_data": { + "$ref": "#/definitions/coreLiteralMap", + "description": "Raw output data produced by this task execution." + }, + "custom_info": { + "type": "object", + "description": "Custom data that the task plugin sends back. This is extensible to allow various plugins in the system." + }, + "phase_version": { + "type": "integer", + "format": "int64", + "description": "Some phases, like RUNNING, can send multiple events with changed metadata (new logs, additional custom_info, etc)\nthat should be recorded regardless of the lack of phase change.\nThe version field should be incremented when metadata changes across the duration of an individual phase." + }, + "reason": { + "type": "string", + "description": "An optional explanation for the phase transition.\nDeprecated: Use reasons instead." + }, + "reasons": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/eventEventReason" + }, + "description": "An optional list of explanations for the phase transition." + }, + "task_type": { + "type": "string", + "description": "A predefined yet extensible Task type identifier. If the task definition is already registered in flyte admin\nthis type will be identical, but not all task executions necessarily use pre-registered definitions and this\ntype is useful to render the task in the UI, filter task executions, etc." + }, + "metadata": { + "$ref": "#/definitions/flyteidleventTaskExecutionMetadata", + "description": "Metadata around how a task was executed." + }, + "event_version": { + "type": "integer", + "format": "int32", + "description": "The event version is used to indicate versioned changes in how data is reported using this\nproto message. For example, event_verison \u003e 0 means that maps tasks report logs using the\nTaskExecutionMetadata ExternalResourceInfo fields for each subtask rather than the TaskLog\nin this message." + }, + "reported_at": { + "type": "string", + "format": "date-time", + "description": "This timestamp represents the instant when the event was reported by the executing framework. For example, a k8s\npod task may be marked completed at (ie. `occurred_at`) the instant the container running user code completes,\nbut this event will not be reported until the pod is marked as completed. Extracting both of these timestamps\nfacilitates a more accurate portrayal of the evaluation time-series." + } + }, + "description": "Details about the event that occurred.", + "title": "Details about the event that occurred." + } + }, + "description": "Request to send a notification that a task execution event has occurred." + }, + "AdminServiceCreateWorkflowBody": { + "type": "object", + "properties": { + "id": { + "type": "object", + "properties": { + "resource_type": { + "$ref": "#/definitions/coreResourceType", + "description": "Identifies the specific type of resource that this identifier corresponds to." + }, + "project": { + "type": "string", + "description": "Name of the project the resource belongs to." + }, + "domain": { + "type": "string", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." + }, + "name": { + "type": "string", + "description": "User provided value for the resource." + }, + "version": { + "type": "string", + "description": "Specific version of the resource." + } + }, + "title": "id represents the unique identifier of the workflow.\n+required" + }, + "spec": { + "$ref": "#/definitions/adminWorkflowSpec", + "title": "Represents the specification for workflow.\n+required" + } + }, + "title": "Represents a request structure to create a revision of a workflow.\nSee :ref:`ref_flyteidl.admin.Workflow` for more details" + }, + "AdminServiceCreateWorkflowEventBody": { + "type": "object", + "properties": { + "request_id": { + "type": "string", + "title": "Unique ID for this request that can be traced between services" + }, + "event": { + "type": "object", + "properties": { + "execution_id": { + "type": "object", + "properties": { + "project": { + "type": "string", + "description": "Name of the project the resource belongs to." + }, + "domain": { + "type": "string", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." + }, + "name": { + "type": "string", + "description": "User or system provided value for the resource." + } + }, + "title": "Workflow execution id" + }, + "producer_id": { + "type": "string", + "title": "the id of the originator (Propeller) of the event" + }, + "phase": { + "$ref": "#/definitions/coreWorkflowExecutionPhase" + }, + "occurred_at": { + "type": "string", + "format": "date-time", + "description": "This timestamp represents when the original event occurred, it is generated\nby the executor of the workflow." + }, + "output_uri": { + "type": "string", + "description": "URL to the output of the execution, it encodes all the information\nincluding Cloud source provider. ie., s3://..." + }, + "error": { + "$ref": "#/definitions/coreExecutionError", + "title": "Error information for the execution" + }, + "output_data": { + "$ref": "#/definitions/coreLiteralMap", + "description": "Raw output data produced by this workflow execution." + } + }, + "description": "Details about the event that occurred.", + "title": "Details about the event that occurred." + } + }, + "description": "Request to send a notification that a workflow execution event has occurred." + }, +>>>>>>> 5ec9fe3cc (Add fields to NodeExecutionEvent (#315)) "AdminServiceDeleteProjectAttributesBody": { "type": "object", "properties": { @@ -8707,11 +13507,19 @@ }, "target_entity": { "$ref": "#/definitions/coreIdentifier", +<<<<<<< HEAD "description": "Holding this field here for now, this will be upstreamed soon.\nSo that Admin doesn't have to rebuild the node execution graph to find the target entity, propeller will fill this\nin optionally - currently this is only filled in for subworkflows. This is the ID of the subworkflow corresponding\nto this node execution. It is difficult to find because Admin only sees one node at a time. A subworkflow could be\nnested multiple layers deep, and you'd need to access the correct workflow template to know the target subworkflow." }, "is_in_dynamic_chain": { "type": "boolean", "description": "Holding this field here for now, this will be upstreamed soon.\nTasks and subworkflows (but not launch plans) that are run within a dynamic task are effectively independent of\nthe tasks that are registered in Admin's db. Confusingly, they are often identical, but sometimes they are not\neven registered at all. Similar to the target_entity field, at the time Admin receives this event, it has no idea\nif the relevant execution entity is was registered, or dynamic. This field indicates that the target_entity ID,\nas well as task IDs in any corresponding Task Executions, should not be used to looked up the task in Admin's db." +======= + "description": "So that Admin doesn't have to rebuild the node execution graph to find the target entity, propeller will fill this\nin optionally - currently this is only filled in for subworkflows. This is the ID of the subworkflow corresponding\nto this node execution. It is difficult to find because Admin only sees one node at a time. A subworkflow could be\nnested multiple layers deep, and you'd need to access the correct workflow template to know the target subworkflow." + }, + "is_in_dynamic_chain": { + "type": "boolean", + "description": "Tasks and subworkflows (but not launch plans) that are run within a dynamic task are effectively independent of\nthe tasks that are registered in Admin's db. Confusingly, they are often identical, but sometimes they are not\neven registered at all. Similar to the target_entity field, at the time Admin receives this event, it has no idea\nif the relevant execution entity is was registered, or dynamic. This field indicates that the target_entity ID,\nas well as task IDs in any corresponding Task Executions, should not be used to looked up the task in Admin's db." +>>>>>>> 5ec9fe3cc (Add fields to NodeExecutionEvent (#315)) } } }, diff --git a/flyteidl/gen/pb-es/flyteidl/event/event_pb.ts b/flyteidl/gen/pb-es/flyteidl/event/event_pb.ts index 62572d87c5..e4245559f6 100644 --- a/flyteidl/gen/pb-es/flyteidl/event/event_pb.ts +++ b/flyteidl/gen/pb-es/flyteidl/event/event_pb.ts @@ -287,7 +287,10 @@ export class NodeExecutionEvent extends Message { isArray = false; /** +<<<<<<< HEAD * Holding this field here for now, this will be upstreamed soon. +======= +>>>>>>> 5ec9fe3cc (Add fields to NodeExecutionEvent (#315)) * So that Admin doesn't have to rebuild the node execution graph to find the target entity, propeller will fill this * in optionally - currently this is only filled in for subworkflows. This is the ID of the subworkflow corresponding * to this node execution. It is difficult to find because Admin only sees one node at a time. A subworkflow could be @@ -298,7 +301,10 @@ export class NodeExecutionEvent extends Message { targetEntity?: Identifier; /** +<<<<<<< HEAD * Holding this field here for now, this will be upstreamed soon. +======= +>>>>>>> 5ec9fe3cc (Add fields to NodeExecutionEvent (#315)) * Tasks and subworkflows (but not launch plans) that are run within a dynamic task are effectively independent of * the tasks that are registered in Admin's db. Confusingly, they are often identical, but sometimes they are not * even registered at all. Similar to the target_entity field, at the time Admin receives this event, it has no idea diff --git a/flyteidl/gen/pb-go/flyteidl/event/event.pb.go b/flyteidl/gen/pb-go/flyteidl/event/event.pb.go index c9ea7d10f2..01c35514a5 100644 --- a/flyteidl/gen/pb-go/flyteidl/event/event.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/event/event.pb.go @@ -265,13 +265,19 @@ type NodeExecutionEvent struct { ReportedAt *timestamppb.Timestamp `protobuf:"bytes,21,opt,name=reported_at,json=reportedAt,proto3" json:"reported_at,omitempty"` // Indicates if this node is an ArrayNode. IsArray bool `protobuf:"varint,22,opt,name=is_array,json=isArray,proto3" json:"is_array,omitempty"` +<<<<<<< HEAD // Holding this field here for now, this will be upstreamed soon. +======= +>>>>>>> 5ec9fe3cc (Add fields to NodeExecutionEvent (#315)) // So that Admin doesn't have to rebuild the node execution graph to find the target entity, propeller will fill this // in optionally - currently this is only filled in for subworkflows. This is the ID of the subworkflow corresponding // to this node execution. It is difficult to find because Admin only sees one node at a time. A subworkflow could be // nested multiple layers deep, and you'd need to access the correct workflow template to know the target subworkflow. TargetEntity *core.Identifier `protobuf:"bytes,23,opt,name=target_entity,json=targetEntity,proto3" json:"target_entity,omitempty"` +<<<<<<< HEAD // Holding this field here for now, this will be upstreamed soon. +======= +>>>>>>> 5ec9fe3cc (Add fields to NodeExecutionEvent (#315)) // Tasks and subworkflows (but not launch plans) that are run within a dynamic task are effectively independent of // the tasks that are registered in Admin's db. Confusingly, they are often identical, but sometimes they are not // even registered at all. Similar to the target_entity field, at the time Admin receives this event, it has no idea 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 c959a8d766..05fd391156 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json @@ -4034,6 +4034,434 @@ } }, "definitions": { +<<<<<<< HEAD +======= + "AdminServiceCreateExecutionBody": { + "type": "object", + "properties": { + "project": { + "type": "string", + "title": "Name of the project the execution belongs to.\n+required" + }, + "domain": { + "type": "string", + "title": "Name of the domain the execution belongs to.\nA domain can be considered as a subset within a specific project.\n+required" + }, + "name": { + "type": "string", + "title": "User provided value for the resource.\nIf none is provided the system will generate a unique string.\n+optional" + }, + "spec": { + "$ref": "#/definitions/adminExecutionSpec", + "title": "Additional fields necessary to launch the execution.\n+optional" + }, + "inputs": { + "$ref": "#/definitions/coreLiteralMap", + "title": "The inputs required to start the execution. All required inputs must be\nincluded in this map. If not required and not provided, defaults apply.\n+optional" + } + }, + "description": "Request to launch an execution with the given project, domain and optionally-assigned name." + }, + "AdminServiceCreateLaunchPlanBody": { + "type": "object", + "properties": { + "id": { + "type": "object", + "properties": { + "resource_type": { + "$ref": "#/definitions/coreResourceType", + "description": "Identifies the specific type of resource that this identifier corresponds to." + }, + "project": { + "type": "string", + "description": "Name of the project the resource belongs to." + }, + "domain": { + "type": "string", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." + }, + "name": { + "type": "string", + "description": "User provided value for the resource." + }, + "version": { + "type": "string", + "description": "Specific version of the resource." + } + }, + "description": "Uniquely identifies a launch plan entity.", + "title": "Uniquely identifies a launch plan entity." + }, + "spec": { + "$ref": "#/definitions/adminLaunchPlanSpec", + "description": "User-provided launch plan details, including reference workflow, inputs and other metadata." + } + }, + "description": "Request to register a launch plan. The included LaunchPlanSpec may have a complete or incomplete set of inputs required\nto launch a workflow execution. By default all launch plans are registered in state INACTIVE. If you wish to\nset the state to ACTIVE, you must submit a LaunchPlanUpdateRequest, after you have successfully created a launch plan." + }, + "AdminServiceCreateNodeEventBody": { + "type": "object", + "properties": { + "request_id": { + "type": "string", + "title": "Unique ID for this request that can be traced between services" + }, + "event": { + "type": "object", + "properties": { + "id": { + "type": "object", + "properties": { + "node_id": { + "type": "string" + }, + "execution_id": { + "type": "object", + "properties": { + "project": { + "type": "string", + "description": "Name of the project the resource belongs to." + }, + "domain": { + "type": "string", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." + }, + "name": { + "type": "string", + "description": "User or system provided value for the resource." + } + }, + "title": "Encapsulation of fields that uniquely identifies a Flyte workflow execution" + } + }, + "title": "Unique identifier for this node execution" + }, + "producer_id": { + "type": "string", + "title": "the id of the originator (Propeller) of the event" + }, + "phase": { + "$ref": "#/definitions/coreNodeExecutionPhase" + }, + "occurred_at": { + "type": "string", + "format": "date-time", + "description": "This timestamp represents when the original event occurred, it is generated\nby the executor of the node." + }, + "input_uri": { + "type": "string" + }, + "input_data": { + "$ref": "#/definitions/coreLiteralMap", + "description": "Raw input data consumed by this node execution." + }, + "output_uri": { + "type": "string", + "description": "URL to the output of the execution, it encodes all the information\nincluding Cloud source provider. ie., s3://..." + }, + "error": { + "$ref": "#/definitions/coreExecutionError", + "title": "Error information for the execution" + }, + "output_data": { + "$ref": "#/definitions/coreLiteralMap", + "description": "Raw output data produced by this node execution." + }, + "workflow_node_metadata": { + "$ref": "#/definitions/flyteidleventWorkflowNodeMetadata" + }, + "task_node_metadata": { + "$ref": "#/definitions/flyteidleventTaskNodeMetadata" + }, + "parent_task_metadata": { + "$ref": "#/definitions/eventParentTaskExecutionMetadata", + "description": "[To be deprecated] Specifies which task (if any) launched this node." + }, + "parent_node_metadata": { + "$ref": "#/definitions/eventParentNodeExecutionMetadata", + "description": "Specifies the parent node of the current node execution. Node executions at level zero will not have a parent node." + }, + "retry_group": { + "type": "string", + "title": "Retry group to indicate grouping of nodes by retries" + }, + "spec_node_id": { + "type": "string", + "title": "Identifier of the node in the original workflow/graph\nThis maps to value of WorkflowTemplate.nodes[X].id" + }, + "node_name": { + "type": "string", + "title": "Friendly readable name for the node" + }, + "event_version": { + "type": "integer", + "format": "int32" + }, + "is_parent": { + "type": "boolean", + "description": "Whether this node launched a subworkflow." + }, + "is_dynamic": { + "type": "boolean", + "description": "Whether this node yielded a dynamic workflow." + }, + "deck_uri": { + "type": "string", + "title": "String location uniquely identifying where the deck HTML file is\nNativeUrl specifies the url in the format of the configured storage provider (e.g. s3://my-bucket/randomstring/suffix.tar)" + }, + "reported_at": { + "type": "string", + "format": "date-time", + "description": "This timestamp represents the instant when the event was reported by the executing framework. For example,\nwhen first processing a node the `occurred_at` timestamp should be the instant propeller makes progress, so when\nliteral inputs are initially copied. The event however will not be sent until after the copy completes.\nExtracting both of these timestamps facilitates a more accurate portrayal of the evaluation time-series." + }, + "is_array": { + "type": "boolean", + "description": "Indicates if this node is an ArrayNode." + }, + "target_entity": { + "$ref": "#/definitions/coreIdentifier", + "description": "So that Admin doesn't have to rebuild the node execution graph to find the target entity, propeller will fill this\nin optionally - currently this is only filled in for subworkflows. This is the ID of the subworkflow corresponding\nto this node execution. It is difficult to find because Admin only sees one node at a time. A subworkflow could be\nnested multiple layers deep, and you'd need to access the correct workflow template to know the target subworkflow." + }, + "is_in_dynamic_chain": { + "type": "boolean", + "description": "Tasks and subworkflows (but not launch plans) that are run within a dynamic task are effectively independent of\nthe tasks that are registered in Admin's db. Confusingly, they are often identical, but sometimes they are not\neven registered at all. Similar to the target_entity field, at the time Admin receives this event, it has no idea\nif the relevant execution entity is was registered, or dynamic. This field indicates that the target_entity ID,\nas well as task IDs in any corresponding Task Executions, should not be used to looked up the task in Admin's db." + } + }, + "description": "Details about the event that occurred.", + "title": "Details about the event that occurred." + } + }, + "description": "Request to send a notification that a node execution event has occurred." + }, + "AdminServiceCreateTaskEventBody": { + "type": "object", + "properties": { + "request_id": { + "type": "string", + "title": "Unique ID for this request that can be traced between services" + }, + "event": { + "type": "object", + "properties": { + "task_id": { + "$ref": "#/definitions/coreIdentifier", + "description": "ID of the task. In combination with the retryAttempt this will indicate\nthe task execution uniquely for a given parent node execution." + }, + "parent_node_execution_id": { + "type": "object", + "properties": { + "node_id": { + "type": "string" + }, + "execution_id": { + "type": "object", + "properties": { + "project": { + "type": "string", + "description": "Name of the project the resource belongs to." + }, + "domain": { + "type": "string", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." + }, + "name": { + "type": "string", + "description": "User or system provided value for the resource." + } + }, + "title": "Encapsulation of fields that uniquely identifies a Flyte workflow execution" + } + }, + "title": "A task execution is always kicked off by a node execution, the event consumer\nwill use the parent_id to relate the task to it's parent node execution" + }, + "retry_attempt": { + "type": "integer", + "format": "int64", + "title": "retry attempt number for this task, ie., 2 for the second attempt" + }, + "phase": { + "$ref": "#/definitions/coreTaskExecutionPhase", + "title": "Phase associated with the event" + }, + "producer_id": { + "type": "string", + "title": "id of the process that sent this event, mainly for trace debugging" + }, + "logs": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/coreTaskLog" + }, + "title": "log information for the task execution" + }, + "occurred_at": { + "type": "string", + "format": "date-time", + "description": "This timestamp represents when the original event occurred, it is generated\nby the executor of the task." + }, + "input_uri": { + "type": "string", + "description": "URI of the input file, it encodes all the information\nincluding Cloud source provider. ie., s3://..." + }, + "input_data": { + "$ref": "#/definitions/coreLiteralMap", + "description": "Raw input data consumed by this task execution." + }, + "output_uri": { + "type": "string", + "description": "URI to the output of the execution, it will be in a format that encodes all the information\nincluding Cloud source provider. ie., s3://..." + }, + "error": { + "$ref": "#/definitions/coreExecutionError", + "title": "Error information for the execution" + }, + "output_data": { + "$ref": "#/definitions/coreLiteralMap", + "description": "Raw output data produced by this task execution." + }, + "custom_info": { + "type": "object", + "description": "Custom data that the task plugin sends back. This is extensible to allow various plugins in the system." + }, + "phase_version": { + "type": "integer", + "format": "int64", + "description": "Some phases, like RUNNING, can send multiple events with changed metadata (new logs, additional custom_info, etc)\nthat should be recorded regardless of the lack of phase change.\nThe version field should be incremented when metadata changes across the duration of an individual phase." + }, + "reason": { + "type": "string", + "description": "An optional explanation for the phase transition.\nDeprecated: Use reasons instead." + }, + "reasons": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/eventEventReason" + }, + "description": "An optional list of explanations for the phase transition." + }, + "task_type": { + "type": "string", + "description": "A predefined yet extensible Task type identifier. If the task definition is already registered in flyte admin\nthis type will be identical, but not all task executions necessarily use pre-registered definitions and this\ntype is useful to render the task in the UI, filter task executions, etc." + }, + "metadata": { + "$ref": "#/definitions/flyteidleventTaskExecutionMetadata", + "description": "Metadata around how a task was executed." + }, + "event_version": { + "type": "integer", + "format": "int32", + "description": "The event version is used to indicate versioned changes in how data is reported using this\nproto message. For example, event_verison \u003e 0 means that maps tasks report logs using the\nTaskExecutionMetadata ExternalResourceInfo fields for each subtask rather than the TaskLog\nin this message." + }, + "reported_at": { + "type": "string", + "format": "date-time", + "description": "This timestamp represents the instant when the event was reported by the executing framework. For example, a k8s\npod task may be marked completed at (ie. `occurred_at`) the instant the container running user code completes,\nbut this event will not be reported until the pod is marked as completed. Extracting both of these timestamps\nfacilitates a more accurate portrayal of the evaluation time-series." + } + }, + "description": "Details about the event that occurred.", + "title": "Details about the event that occurred." + } + }, + "description": "Request to send a notification that a task execution event has occurred." + }, + "AdminServiceCreateWorkflowBody": { + "type": "object", + "properties": { + "id": { + "type": "object", + "properties": { + "resource_type": { + "$ref": "#/definitions/coreResourceType", + "description": "Identifies the specific type of resource that this identifier corresponds to." + }, + "project": { + "type": "string", + "description": "Name of the project the resource belongs to." + }, + "domain": { + "type": "string", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." + }, + "name": { + "type": "string", + "description": "User provided value for the resource." + }, + "version": { + "type": "string", + "description": "Specific version of the resource." + } + }, + "title": "id represents the unique identifier of the workflow.\n+required" + }, + "spec": { + "$ref": "#/definitions/adminWorkflowSpec", + "title": "Represents the specification for workflow.\n+required" + } + }, + "title": "Represents a request structure to create a revision of a workflow.\nSee :ref:`ref_flyteidl.admin.Workflow` for more details" + }, + "AdminServiceCreateWorkflowEventBody": { + "type": "object", + "properties": { + "request_id": { + "type": "string", + "title": "Unique ID for this request that can be traced between services" + }, + "event": { + "type": "object", + "properties": { + "execution_id": { + "type": "object", + "properties": { + "project": { + "type": "string", + "description": "Name of the project the resource belongs to." + }, + "domain": { + "type": "string", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." + }, + "name": { + "type": "string", + "description": "User or system provided value for the resource." + } + }, + "title": "Workflow execution id" + }, + "producer_id": { + "type": "string", + "title": "the id of the originator (Propeller) of the event" + }, + "phase": { + "$ref": "#/definitions/coreWorkflowExecutionPhase" + }, + "occurred_at": { + "type": "string", + "format": "date-time", + "description": "This timestamp represents when the original event occurred, it is generated\nby the executor of the workflow." + }, + "output_uri": { + "type": "string", + "description": "URL to the output of the execution, it encodes all the information\nincluding Cloud source provider. ie., s3://..." + }, + "error": { + "$ref": "#/definitions/coreExecutionError", + "title": "Error information for the execution" + }, + "output_data": { + "$ref": "#/definitions/coreLiteralMap", + "description": "Raw output data produced by this workflow execution." + } + }, + "description": "Details about the event that occurred.", + "title": "Details about the event that occurred." + } + }, + "description": "Request to send a notification that a workflow execution event has occurred." + }, +>>>>>>> 5ec9fe3cc (Add fields to NodeExecutionEvent (#315)) "AdminServiceDeleteProjectAttributesBody": { "type": "object", "properties": { @@ -8711,11 +9139,19 @@ }, "target_entity": { "$ref": "#/definitions/coreIdentifier", +<<<<<<< HEAD "description": "Holding this field here for now, this will be upstreamed soon.\nSo that Admin doesn't have to rebuild the node execution graph to find the target entity, propeller will fill this\nin optionally - currently this is only filled in for subworkflows. This is the ID of the subworkflow corresponding\nto this node execution. It is difficult to find because Admin only sees one node at a time. A subworkflow could be\nnested multiple layers deep, and you'd need to access the correct workflow template to know the target subworkflow." }, "is_in_dynamic_chain": { "type": "boolean", "description": "Holding this field here for now, this will be upstreamed soon.\nTasks and subworkflows (but not launch plans) that are run within a dynamic task are effectively independent of\nthe tasks that are registered in Admin's db. Confusingly, they are often identical, but sometimes they are not\neven registered at all. Similar to the target_entity field, at the time Admin receives this event, it has no idea\nif the relevant execution entity is was registered, or dynamic. This field indicates that the target_entity ID,\nas well as task IDs in any corresponding Task Executions, should not be used to looked up the task in Admin's db." +======= + "description": "So that Admin doesn't have to rebuild the node execution graph to find the target entity, propeller will fill this\nin optionally - currently this is only filled in for subworkflows. This is the ID of the subworkflow corresponding\nto this node execution. It is difficult to find because Admin only sees one node at a time. A subworkflow could be\nnested multiple layers deep, and you'd need to access the correct workflow template to know the target subworkflow." + }, + "is_in_dynamic_chain": { + "type": "boolean", + "description": "Tasks and subworkflows (but not launch plans) that are run within a dynamic task are effectively independent of\nthe tasks that are registered in Admin's db. Confusingly, they are often identical, but sometimes they are not\neven registered at all. Similar to the target_entity field, at the time Admin receives this event, it has no idea\nif the relevant execution entity is was registered, or dynamic. This field indicates that the target_entity ID,\nas well as task IDs in any corresponding Task Executions, should not be used to looked up the task in Admin's db." +>>>>>>> 5ec9fe3cc (Add fields to NodeExecutionEvent (#315)) } } }, diff --git a/flyteidl/gen/pb_rust/flyteidl.event.rs b/flyteidl/gen/pb_rust/flyteidl.event.rs index 4afbce8630..500bf6e6c7 100644 --- a/flyteidl/gen/pb_rust/flyteidl.event.rs +++ b/flyteidl/gen/pb_rust/flyteidl.event.rs @@ -86,14 +86,20 @@ pub struct NodeExecutionEvent { /// Indicates if this node is an ArrayNode. #[prost(bool, tag="22")] pub is_array: bool, +<<<<<<< HEAD /// Holding this field here for now, this will be upstreamed soon. +======= +>>>>>>> 5ec9fe3cc (Add fields to NodeExecutionEvent (#315)) /// So that Admin doesn't have to rebuild the node execution graph to find the target entity, propeller will fill this /// in optionally - currently this is only filled in for subworkflows. This is the ID of the subworkflow corresponding /// to this node execution. It is difficult to find because Admin only sees one node at a time. A subworkflow could be /// nested multiple layers deep, and you'd need to access the correct workflow template to know the target subworkflow. #[prost(message, optional, tag="23")] pub target_entity: ::core::option::Option, +<<<<<<< HEAD /// Holding this field here for now, this will be upstreamed soon. +======= +>>>>>>> 5ec9fe3cc (Add fields to NodeExecutionEvent (#315)) /// Tasks and subworkflows (but not launch plans) that are run within a dynamic task are effectively independent of /// the tasks that are registered in Admin's db. Confusingly, they are often identical, but sometimes they are not /// even registered at all. Similar to the target_entity field, at the time Admin receives this event, it has no idea diff --git a/flyteidl/protos/flyteidl/event/event.proto b/flyteidl/protos/flyteidl/event/event.proto index d07356493f..fcbe0e619a 100644 --- a/flyteidl/protos/flyteidl/event/event.proto +++ b/flyteidl/protos/flyteidl/event/event.proto @@ -115,14 +115,20 @@ message NodeExecutionEvent { // Indicates if this node is an ArrayNode. bool is_array = 22; +<<<<<<< HEAD // Holding this field here for now, this will be upstreamed soon. +======= +>>>>>>> 5ec9fe3cc (Add fields to NodeExecutionEvent (#315)) // So that Admin doesn't have to rebuild the node execution graph to find the target entity, propeller will fill this // in optionally - currently this is only filled in for subworkflows. This is the ID of the subworkflow corresponding // to this node execution. It is difficult to find because Admin only sees one node at a time. A subworkflow could be // nested multiple layers deep, and you'd need to access the correct workflow template to know the target subworkflow. core.Identifier target_entity = 23; +<<<<<<< HEAD // Holding this field here for now, this will be upstreamed soon. +======= +>>>>>>> 5ec9fe3cc (Add fields to NodeExecutionEvent (#315)) // Tasks and subworkflows (but not launch plans) that are run within a dynamic task are effectively independent of // the tasks that are registered in Admin's db. Confusingly, they are often identical, but sometimes they are not // even registered at all. Similar to the target_entity field, at the time Admin receives this event, it has no idea diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/nodes.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/nodes.go index 6554357031..2e4514638d 100644 --- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/nodes.go +++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/nodes.go @@ -224,11 +224,18 @@ func (in *NodeSpec) GetOutputAlias() []Alias { return in.OutputAliases } +// In functions below, explicitly strip out nil type information because NodeSpec's WorkflowNode is a struct type, +// not interface and downstream nil checks will not pass. +// See the test in TestPointersForNodeSpec for more information. + func (in *NodeSpec) GetWorkflowNode() ExecutableWorkflowNode { - if in.WorkflowNode == nil { - return nil + if in != nil { + if in.WorkflowNode == nil { + return nil + } + return in.WorkflowNode } - return in.WorkflowNode + return nil } func (in *NodeSpec) GetBranchNode() ExecutableBranchNode { diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/nodes_test.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/nodes_test.go new file mode 100644 index 0000000000..f36d874241 --- /dev/null +++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/nodes_test.go @@ -0,0 +1,51 @@ +package v1alpha1 + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +type CanDo interface { + MyDo() int +} + +type Concrete struct { + Doer CanDo +} + +func (c *Concrete) MyDo() int { + return 1 +} + +type Parent struct { + Concrete *Concrete +} + +func (p *Parent) GetDoer() CanDo { + return p.Concrete +} + +func (p *Parent) GetConcreteDoer() *Concrete { + return p.Concrete +} + +func TestPointersForNodeSpec(t *testing.T) { + p := &Parent{ + Concrete: nil, + } + // GetDoer returns a fake nil because it carries type information + // assert.NotNil(t, p.GetDoer()) funnily enough doesn't work, so use a regular if statement + if p.GetDoer() == nil { + assert.Fail(t, "GetDoer") + } + + assert.Nil(t, p.GetConcreteDoer()) +} + +func TestNodeSpec(t *testing.T) { + n := &NodeSpec{ + WorkflowNode: nil, + } + assert.Nil(t, n.GetWorkflowNode()) +} diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/subworkflow.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/subworkflow.go index a7d7532b97..4f1b95d399 100644 --- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/subworkflow.go +++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/subworkflow.go @@ -15,9 +15,15 @@ type WorkflowNodeSpec struct { } func (in *WorkflowNodeSpec) GetLaunchPlanRefID() *LaunchPlanRefID { - return in.LaunchPlanRefID + if in != nil { + return in.LaunchPlanRefID + } + return nil } func (in *WorkflowNodeSpec) GetSubWorkflowRef() *WorkflowID { - return in.SubWorkflowReference + if in != nil { + return in.SubWorkflowReference + } + return nil } diff --git a/flytepropeller/pkg/controller/executors/execution_context.go b/flytepropeller/pkg/controller/executors/execution_context.go index 07b5a6c450..b693d1aee8 100644 --- a/flytepropeller/pkg/controller/executors/execution_context.go +++ b/flytepropeller/pkg/controller/executors/execution_context.go @@ -28,6 +28,7 @@ type ParentInfoGetter interface { type ImmutableParentInfo interface { GetUniqueID() v1alpha1.NodeID CurrentAttempt() uint32 + IsInDynamicChain() bool } type ControlFlow interface { @@ -60,14 +61,19 @@ func (e execContext) GetParentInfo() ImmutableParentInfo { } type parentExecutionInfo struct { - uniqueID v1alpha1.NodeID - currentAttempts uint32 + uniqueID v1alpha1.NodeID + currentAttempts uint32 + isInDynamicChain bool } func (p *parentExecutionInfo) GetUniqueID() v1alpha1.NodeID { return p.uniqueID } +func (p *parentExecutionInfo) IsInDynamicChain() bool { + return p.isInDynamicChain +} + func (p *parentExecutionInfo) CurrentAttempt() uint32 { return p.currentAttempts } @@ -129,10 +135,11 @@ func NewExecutionContext(immExecContext ImmutableExecutionContext, tasksGetter T } } -func NewParentInfo(uniqueID string, currentAttempts uint32) ImmutableParentInfo { +func NewParentInfo(uniqueID string, currentAttempts uint32, isInDynamicChain bool) ImmutableParentInfo { return &parentExecutionInfo{ - currentAttempts: currentAttempts, - uniqueID: uniqueID, + currentAttempts: currentAttempts, + uniqueID: uniqueID, + isInDynamicChain: isInDynamicChain, } } diff --git a/flytepropeller/pkg/controller/executors/execution_context_test.go b/flytepropeller/pkg/controller/executors/execution_context_test.go index 6a1561ea7c..3e82b88841 100644 --- a/flytepropeller/pkg/controller/executors/execution_context_test.go +++ b/flytepropeller/pkg/controller/executors/execution_context_test.go @@ -66,16 +66,22 @@ func TestExecutionContext(t *testing.T) { func TestParentExecutionInfo_GetUniqueID(t *testing.T) { expectedID := "testID" - parentInfo := NewParentInfo(expectedID, 1) + parentInfo := NewParentInfo(expectedID, 1, false) assert.Equal(t, expectedID, parentInfo.GetUniqueID()) } func TestParentExecutionInfo_CurrentAttempt(t *testing.T) { expectedAttempt := uint32(123465) - parentInfo := NewParentInfo("testID", expectedAttempt) + parentInfo := NewParentInfo("testID", expectedAttempt, false) assert.Equal(t, expectedAttempt, parentInfo.CurrentAttempt()) } +func TestParentExecutionInfo_DynamicChain(t *testing.T) { + expectedAttempt := uint32(123465) + parentInfo := NewParentInfo("testID", expectedAttempt, true) + assert.True(t, parentInfo.IsInDynamicChain()) +} + func TestControlFlow_ControlFlowParallelism(t *testing.T) { cFlow := InitializeControlFlow().(*controlFlow) assert.Equal(t, uint32(0), cFlow.CurrentParallelism()) @@ -88,7 +94,7 @@ func TestControlFlow_ControlFlowParallelism(t *testing.T) { func TestNewParentInfo(t *testing.T) { expectedID := "testID" expectedAttempt := uint32(123465) - parentInfo := NewParentInfo(expectedID, expectedAttempt).(*parentExecutionInfo) + parentInfo := NewParentInfo(expectedID, expectedAttempt, false).(*parentExecutionInfo) assert.Equal(t, expectedID, parentInfo.uniqueID) assert.Equal(t, expectedAttempt, parentInfo.currentAttempts) } diff --git a/flytepropeller/pkg/controller/executors/mocks/immutable_parent_info.go b/flytepropeller/pkg/controller/executors/mocks/immutable_parent_info.go index 209a0ee10f..a65f619e46 100644 --- a/flytepropeller/pkg/controller/executors/mocks/immutable_parent_info.go +++ b/flytepropeller/pkg/controller/executors/mocks/immutable_parent_info.go @@ -72,3 +72,35 @@ func (_m *ImmutableParentInfo) GetUniqueID() string { return r0 } + +type ImmutableParentInfo_IsInDynamicChain struct { + *mock.Call +} + +func (_m ImmutableParentInfo_IsInDynamicChain) Return(_a0 bool) *ImmutableParentInfo_IsInDynamicChain { + return &ImmutableParentInfo_IsInDynamicChain{Call: _m.Call.Return(_a0)} +} + +func (_m *ImmutableParentInfo) OnIsInDynamicChain() *ImmutableParentInfo_IsInDynamicChain { + c_call := _m.On("IsInDynamicChain") + return &ImmutableParentInfo_IsInDynamicChain{Call: c_call} +} + +func (_m *ImmutableParentInfo) OnIsInDynamicChainMatch(matchers ...interface{}) *ImmutableParentInfo_IsInDynamicChain { + c_call := _m.On("IsInDynamicChain", matchers...) + return &ImmutableParentInfo_IsInDynamicChain{Call: c_call} +} + +// IsInDynamicChain provides a mock function with given fields: +func (_m *ImmutableParentInfo) IsInDynamicChain() bool { + ret := _m.Called() + + var r0 bool + if rf, ok := ret.Get(0).(func() bool); ok { + r0 = rf() + } else { + r0 = ret.Get(0).(bool) + } + + return r0 +} diff --git a/flytepropeller/pkg/controller/nodes/array/event_recorder.go b/flytepropeller/pkg/controller/nodes/array/event_recorder.go index 35120c069e..ac1ad3e39f 100644 --- a/flytepropeller/pkg/controller/nodes/array/event_recorder.go +++ b/flytepropeller/pkg/controller/nodes/array/event_recorder.go @@ -220,7 +220,11 @@ func sendEvents(ctx context.Context, nCtx interfaces.NodeExecutionContext, index timestamp := ptypes.TimestampNow() workflowExecutionID := nCtx.ExecutionContext().GetExecutionID().WorkflowExecutionIdentifier - // send NodeExecutionEvent + // Extract dynamic chain information. + var dynamic = false + if nCtx.ExecutionContext() != nil && nCtx.ExecutionContext().GetParentInfo() != nil && nCtx.ExecutionContext().GetParentInfo().IsInDynamicChain() { + dynamic = true + } nodeExecutionEvent := &event.NodeExecutionEvent{ Id: &idlcore.NodeExecutionIdentifier{ NodeId: subNodeID, @@ -231,14 +235,15 @@ func sendEvents(ctx context.Context, nCtx interfaces.NodeExecutionContext, index ParentNodeMetadata: &event.ParentNodeExecutionMetadata{ NodeId: nCtx.NodeID(), }, - ReportedAt: timestamp, + ReportedAt: timestamp, + IsInDynamicChain: dynamic, } if err := eventRecorder.RecordNodeEvent(ctx, nodeExecutionEvent, eventConfig); err != nil { return err } - // send TaskExeucutionEvent + // send TaskExecutionEvent taskExecutionEvent := &event.TaskExecutionEvent{ TaskId: &idlcore.Identifier{ ResourceType: idlcore.ResourceType_TASK, diff --git a/flytepropeller/pkg/controller/nodes/array/handler.go b/flytepropeller/pkg/controller/nodes/array/handler.go index 0f9e95f19b..5e571a0c48 100644 --- a/flytepropeller/pkg/controller/nodes/array/handler.go +++ b/flytepropeller/pkg/controller/nodes/array/handler.go @@ -94,6 +94,7 @@ func (a *arrayNodeHandler) Abort(ctx context.Context, nCtx interfaces.NodeExecut } else { // record events transitioning subNodes to aborted retryAttempt := uint32(arrayNodeState.SubNodeRetryAttempts.GetItem(i)) + if err := sendEvents(ctx, nCtx, i, retryAttempt, idlcore.NodeExecution_ABORTED, idlcore.TaskExecution_ABORTED, eventRecorder, a.eventConfig); err != nil { logger.Warnf(ctx, "failed to record ArrayNode events: %v", err) } @@ -707,7 +708,7 @@ func (a *arrayNodeHandler) buildArrayNodeContext(ctx context.Context, nCtx inter // initialize mocks arrayNodeLookup := newArrayNodeLookup(nCtx.ContextualNodeLookup(), subNodeID, &subNodeSpec, subNodeStatus) - newParentInfo, err := common.CreateParentInfo(nCtx.ExecutionContext().GetParentInfo(), nCtx.NodeID(), nCtx.CurrentAttempt()) + newParentInfo, err := common.CreateParentInfo(nCtx.ExecutionContext().GetParentInfo(), nCtx.NodeID(), nCtx.CurrentAttempt(), false) if err != nil { return nil, nil, nil, nil, nil, nil, err } diff --git a/flytepropeller/pkg/controller/nodes/branch/handler.go b/flytepropeller/pkg/controller/nodes/branch/handler.go index d2a4fcfa68..431f5fa3eb 100644 --- a/flytepropeller/pkg/controller/nodes/branch/handler.go +++ b/flytepropeller/pkg/controller/nodes/branch/handler.go @@ -116,7 +116,7 @@ func (b *branchHandler) Handle(ctx context.Context, nCtx interfaces.NodeExecutio } func (b *branchHandler) getExecutionContextForDownstream(nCtx interfaces.NodeExecutionContext) (executors.ExecutionContext, error) { - newParentInfo, err := common.CreateParentInfo(nCtx.ExecutionContext().GetParentInfo(), nCtx.NodeID(), nCtx.CurrentAttempt()) + newParentInfo, err := common.CreateParentInfo(nCtx.ExecutionContext().GetParentInfo(), nCtx.NodeID(), nCtx.CurrentAttempt(), false) if err != nil { return nil, err } diff --git a/flytepropeller/pkg/controller/nodes/branch/handler_test.go b/flytepropeller/pkg/controller/nodes/branch/handler_test.go index b26dd004c4..f7f2836018 100644 --- a/flytepropeller/pkg/controller/nodes/branch/handler_test.go +++ b/flytepropeller/pkg/controller/nodes/branch/handler_test.go @@ -75,6 +75,10 @@ func (parentInfo) CurrentAttempt() uint32 { return uint32(2) } +func (parentInfo) IsInDynamicChain() bool { + return false +} + func createNodeContext(phase v1alpha1.BranchNodePhase, childNodeID *v1alpha1.NodeID, n v1alpha1.ExecutableNode, inputs *core.LiteralMap, nl *execMocks.NodeLookup, eCtx executors.ExecutionContext) (*mocks.NodeExecutionContext, *branchNodeStateHolder) { branchNodeState := handler.BranchNodeState{ @@ -191,7 +195,7 @@ func TestBranchHandler_RecurseDownstream(t *testing.T) { } nCtx, _ := createNodeContext(v1alpha1.BranchNodeNotYetEvaluated, &childNodeID, n, nil, mockNodeLookup, eCtx) - newParentInfo, _ := common.CreateParentInfo(parentInfo{}, nCtx.NodeID(), nCtx.CurrentAttempt()) + newParentInfo, _ := common.CreateParentInfo(parentInfo{}, nCtx.NodeID(), nCtx.CurrentAttempt(), false) expectedExecContext := executors.NewExecutionContextWithParentInfo(nCtx.ExecutionContext(), newParentInfo) mockNodeExecutor := &mocks.Node{} mockNodeExecutor.OnRecursiveNodeHandlerMatch( @@ -319,7 +323,7 @@ func TestBranchHandler_AbortNode(t *testing.T) { eCtx := &execMocks.ExecutionContext{} eCtx.EXPECT().GetParentInfo().Return(parentInfo{}) nCtx, s := createNodeContext(v1alpha1.BranchNodeSuccess, &n1, n, nil, mockNodeLookup, eCtx) - newParentInfo, _ := common.CreateParentInfo(parentInfo{}, nCtx.NodeID(), nCtx.CurrentAttempt()) + newParentInfo, _ := common.CreateParentInfo(parentInfo{}, nCtx.NodeID(), nCtx.CurrentAttempt(), false) expectedExecContext := executors.NewExecutionContextWithParentInfo(nCtx.ExecutionContext(), newParentInfo) mockNodeExecutor.OnAbortHandlerMatch(mock.Anything, mock.MatchedBy(func(e executors.ExecutionContext) bool { return assert.Equal(t, e, expectedExecContext) }), diff --git a/flytepropeller/pkg/controller/nodes/common/utils.go b/flytepropeller/pkg/controller/nodes/common/utils.go index 19714da3d5..951e7e2b74 100644 --- a/flytepropeller/pkg/controller/nodes/common/utils.go +++ b/flytepropeller/pkg/controller/nodes/common/utils.go @@ -1,11 +1,15 @@ package common import ( + "context" "strconv" + "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core" "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/encoding" "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1" "github.com/flyteorg/flyte/flytepropeller/pkg/controller/executors" + "github.com/flyteorg/flyte/flytepropeller/pkg/controller/nodes/interfaces" + "github.com/flyteorg/flyte/flytestdlib/logger" ) const maxUniqueIDLength = 20 @@ -28,11 +32,36 @@ func GenerateUniqueID(parentInfo executors.ImmutableParentInfo, nodeID string) ( // CreateParentInfo creates a unique parent id, the unique id of parent is dependent on the unique id and the current // attempt of the grandparent to track the lineage. -func CreateParentInfo(grandParentInfo executors.ImmutableParentInfo, nodeID string, parentAttempt uint32) (executors.ImmutableParentInfo, error) { +func CreateParentInfo(grandParentInfo executors.ImmutableParentInfo, nodeID string, parentAttempt uint32, nodeIsDynamic bool) (executors.ImmutableParentInfo, error) { uniqueID, err := GenerateUniqueID(grandParentInfo, nodeID) if err != nil { return nil, err } - return executors.NewParentInfo(uniqueID, parentAttempt), nil + if nodeIsDynamic || (grandParentInfo != nil && grandParentInfo.IsInDynamicChain()) { + return executors.NewParentInfo(uniqueID, parentAttempt, true), nil + } + + return executors.NewParentInfo(uniqueID, parentAttempt, false), nil +} +func GetTargetEntity(ctx context.Context, nCtx interfaces.NodeExecutionContext) *core.Identifier { + var targetEntity *core.Identifier + if nCtx.Node().GetWorkflowNode() != nil { + subRef := nCtx.Node().GetWorkflowNode().GetSubWorkflowRef() + if subRef != nil && len(*subRef) > 0 { + subWorkflow := nCtx.ExecutionContext().FindSubWorkflow(*subRef) + targetEntity = subWorkflow.GetIdentifier() + } else if nCtx.Node().GetWorkflowNode().GetLaunchPlanRefID() != nil { + lpRef := nCtx.Node().GetWorkflowNode().GetLaunchPlanRefID() + targetEntity = lpRef.Identifier + } + } else if taskIDStr := nCtx.Node().GetTaskID(); taskIDStr != nil && len(*taskIDStr) > 0 { + taskID, err := nCtx.ExecutionContext().GetTask(*taskIDStr) + if err != nil { + // This doesn't feed a very important part of the node execution event, swallow it for now. + logger.Errorf(ctx, "Failed to get task [%v] with error [%v]", taskID, err) + } + targetEntity = taskID.CoreTask().Id + } + return targetEntity } diff --git a/flytepropeller/pkg/controller/nodes/common/utils_test.go b/flytepropeller/pkg/controller/nodes/common/utils_test.go index 0639605589..9e451da69a 100644 --- a/flytepropeller/pkg/controller/nodes/common/utils_test.go +++ b/flytepropeller/pkg/controller/nodes/common/utils_test.go @@ -9,8 +9,9 @@ import ( ) type ParentInfo struct { - uniqueID string - attempt uint32 + uniqueID string + attempt uint32 + isInDynamicChain bool } func (p ParentInfo) GetUniqueID() v1alpha1.NodeID { @@ -21,6 +22,10 @@ func (p ParentInfo) CurrentAttempt() uint32 { return p.attempt } +func (p ParentInfo) IsInDynamicChain() bool { + return p.isInDynamicChain +} + func TestGenerateUniqueID(t *testing.T) { p := ParentInfo{ uniqueID: "u1", @@ -43,18 +48,21 @@ func TestGenerateUniqueIDLong(t *testing.T) { func TestCreateParentInfo(t *testing.T) { gp := ParentInfo{ - uniqueID: "u1", - attempt: uint32(2), + uniqueID: "u1", + attempt: uint32(2), + isInDynamicChain: true, } - parent, err := CreateParentInfo(gp, "n1", uint32(1)) + parent, err := CreateParentInfo(gp, "n1", uint32(1), false) assert.Nil(t, err) assert.Equal(t, "u1-2-n1", parent.GetUniqueID()) assert.Equal(t, uint32(1), parent.CurrentAttempt()) + assert.True(t, parent.IsInDynamicChain()) } func TestCreateParentInfoNil(t *testing.T) { - parent, err := CreateParentInfo(nil, "n1", uint32(1)) + parent, err := CreateParentInfo(nil, "n1", uint32(1), true) assert.Nil(t, err) assert.Equal(t, "n1", parent.GetUniqueID()) assert.Equal(t, uint32(1), parent.CurrentAttempt()) + assert.True(t, parent.IsInDynamicChain()) } diff --git a/flytepropeller/pkg/controller/nodes/dynamic/dynamic_workflow.go b/flytepropeller/pkg/controller/nodes/dynamic/dynamic_workflow.go index cbc5414e11..c53827328e 100644 --- a/flytepropeller/pkg/controller/nodes/dynamic/dynamic_workflow.go +++ b/flytepropeller/pkg/controller/nodes/dynamic/dynamic_workflow.go @@ -169,7 +169,7 @@ func (d dynamicNodeTaskNodeHandler) buildContextualDynamicWorkflow(ctx context.C return dynamicWorkflowContext{}, errors.Wrapf(utils.ErrorCodeSystem, err, "failed to set ephemeral node execution attributions") } - newParentInfo, err := node_common.CreateParentInfo(nCtx.ExecutionContext().GetParentInfo(), nCtx.NodeID(), nCtx.CurrentAttempt()) + newParentInfo, err := node_common.CreateParentInfo(nCtx.ExecutionContext().GetParentInfo(), nCtx.NodeID(), nCtx.CurrentAttempt(), true) if err != nil { return dynamicWorkflowContext{}, errors.Wrapf(utils.ErrorCodeSystem, err, "failed to generate uniqueID") } @@ -207,7 +207,7 @@ func (d dynamicNodeTaskNodeHandler) buildContextualDynamicWorkflow(ctx context.C // The current node would end up becoming the parent for the dynamic task nodes. // This is done to track the lineage. For level zero, the CreateParentInfo will return nil - newParentInfo, err := node_common.CreateParentInfo(nCtx.ExecutionContext().GetParentInfo(), nCtx.NodeID(), nCtx.CurrentAttempt()) + newParentInfo, err := node_common.CreateParentInfo(nCtx.ExecutionContext().GetParentInfo(), nCtx.NodeID(), nCtx.CurrentAttempt(), true) if err != nil { return dynamicWorkflowContext{}, errors.Wrapf(utils.ErrorCodeSystem, err, "failed to generate uniqueID") } diff --git a/flytepropeller/pkg/controller/nodes/executor.go b/flytepropeller/pkg/controller/nodes/executor.go index 1c42357623..47c91edc51 100644 --- a/flytepropeller/pkg/controller/nodes/executor.go +++ b/flytepropeller/pkg/controller/nodes/executor.go @@ -900,6 +900,12 @@ func (c *nodeExecutor) Abort(ctx context.Context, h interfaces.NodeHandler, nCtx nodeExecutionID.NodeId = currentNodeUniqueID } + var dynamic = false + if nCtx.ExecutionContext().GetParentInfo() != nil && nCtx.ExecutionContext().GetParentInfo().IsInDynamicChain() { + dynamic = true + } + + targetEntity := common.GetTargetEntity(ctx, nCtx) err := nCtx.EventsRecorder().RecordNodeEvent(ctx, &event.NodeExecutionEvent{ Id: nodeExecutionID, Phase: core.NodeExecution_ABORTED, @@ -910,8 +916,10 @@ func (c *nodeExecutor) Abort(ctx context.Context, h interfaces.NodeHandler, nCtx Message: reason, }, }, - ProducerId: c.clusterID, - ReportedAt: ptypes.TimestampNow(), + ProducerId: c.clusterID, + ReportedAt: ptypes.TimestampNow(), + IsInDynamicChain: dynamic, + TargetEntity: targetEntity, }, c.eventConfig) if err != nil && !eventsErr.IsNotFound(err) && !eventsErr.IsEventIncompatibleClusterError(err) { if errors2.IsCausedBy(err, errors.IllegalStateError) { @@ -1003,10 +1011,12 @@ func (c *nodeExecutor) handleNotYetStartedNode(ctx context.Context, dag executor logger.Infof(ctx, "Change in node state detected from [%s] -> [%s]", nodeStatus.GetPhase().String(), np.String()) p = p.WithOccuredAt(occurredAt) + targetEntity := common.GetTargetEntity(ctx, nCtx) + nev, err := ToNodeExecutionEvent(nCtx.NodeExecutionMetadata().GetNodeExecutionID(), p, nCtx.InputReader().GetInputPath().String(), nodeStatus, nCtx.ExecutionContext().GetEventVersion(), nCtx.ExecutionContext().GetParentInfo(), nCtx.Node(), c.clusterID, nCtx.NodeStateReader().GetDynamicNodeState().Phase, - c.eventConfig) + c.eventConfig, targetEntity) if err != nil { return interfaces.NodeStatusUndefined, errors.Wrapf(errors.IllegalStateError, nCtx.NodeID(), err, "could not convert phase info to event") } @@ -1231,10 +1241,12 @@ func (c *nodeExecutor) handleQueuedOrRunningNode(ctx context.Context, nCtx inter // assert np == skipped, succeeding, failing or recovered logger.Infof(ctx, "Change in node state detected from [%s] -> [%s], (handler phase [%s])", nodeStatus.GetPhase().String(), np.String(), p.GetPhase().String()) + targetEntity := common.GetTargetEntity(ctx, nCtx) + nev, err := ToNodeExecutionEvent(nCtx.NodeExecutionMetadata().GetNodeExecutionID(), p, nCtx.InputReader().GetInputPath().String(), nCtx.NodeStatus(), nCtx.ExecutionContext().GetEventVersion(), nCtx.ExecutionContext().GetParentInfo(), nCtx.Node(), c.clusterID, nCtx.NodeStateReader().GetDynamicNodeState().Phase, - c.eventConfig) + c.eventConfig, targetEntity) if err != nil { return interfaces.NodeStatusUndefined, errors.Wrapf(errors.IllegalStateError, nCtx.NodeID(), err, "could not convert phase info to event") } @@ -1251,6 +1263,10 @@ func (c *nodeExecutor) handleQueuedOrRunningNode(ctx context.Context, nCtx inter np = v1alpha1.NodePhaseFailing p = handler.PhaseInfoFailure(core.ExecutionError_USER, "NodeFailed", err.Error(), p.GetInfo()) + var dynamic = false + if nCtx.ExecutionContext().GetParentInfo() != nil && nCtx.ExecutionContext().GetParentInfo().IsInDynamicChain() { + dynamic = true + } err = nCtx.EventsRecorder().RecordNodeEvent(ctx, &event.NodeExecutionEvent{ Id: nCtx.NodeExecutionMetadata().GetNodeExecutionID(), Phase: core.NodeExecution_FAILED, @@ -1261,7 +1277,9 @@ func (c *nodeExecutor) handleQueuedOrRunningNode(ctx context.Context, nCtx inter Message: err.Error(), }, }, - ReportedAt: ptypes.TimestampNow(), + ReportedAt: ptypes.TimestampNow(), + IsInDynamicChain: dynamic, + TargetEntity: targetEntity, }, c.eventConfig) if err != nil { diff --git a/flytepropeller/pkg/controller/nodes/executor_test.go b/flytepropeller/pkg/controller/nodes/executor_test.go index 194458d2b8..402a42c1af 100644 --- a/flytepropeller/pkg/controller/nodes/executor_test.go +++ b/flytepropeller/pkg/controller/nodes/executor_test.go @@ -602,6 +602,7 @@ func TestNodeExecutor_RecursiveNodeHandler_Recurse(t *testing.T) { mockNode.OnGetInputBindings().Return([]*v1alpha1.Binding{}) mockNode.OnIsInterruptible().Return(nil) mockNode.OnGetName().Return("name") + mockNode.OnGetWorkflowNode().Return(nil) mockNodeN0 := &mocks.ExecutableNode{} mockNodeN0.OnGetID().Return(nodeN0) @@ -612,6 +613,7 @@ func TestNodeExecutor_RecursiveNodeHandler_Recurse(t *testing.T) { mockNodeN0.OnGetTaskID().Return(&taskID0) mockNodeN0.OnIsInterruptible().Return(nil) mockNodeN0.OnGetName().Return("name") + mockNodeN0.OnGetWorkflowNode().Return(nil) mockN0Status := &mocks.ExecutableNodeStatus{} mockN0Status.OnGetPhase().Return(n0Phase) @@ -1323,6 +1325,7 @@ func TestNodeExecutor_RecursiveNodeHandler_BranchNode(t *testing.T) { branchTakenNode.OnIsStartNode().Return(false) branchTakenNode.OnIsEndNode().Return(false) branchTakenNode.OnGetInputBindings().Return(nil) + branchTakenNode.OnGetWorkflowNode().Return(nil) branchTakeNodeStatus := &mocks.ExecutableNodeStatus{} branchTakeNodeStatus.OnGetPhase().Return(test.currentNodePhase) branchTakeNodeStatus.OnIsDirty().Return(false) @@ -1647,6 +1650,7 @@ func TestNodeExecutor_AbortHandler(t *testing.T) { n.OnGetID().Return(id) n.OnGetKind().Return(v1alpha1.NodeKindStart) n.OnGetTaskID().Return(&id) + n.OnGetWorkflowNode().Return(nil) interruptible := false n.OnIsInterruptible().Return(&interruptible) nl := &mocks4.NodeLookup{} @@ -1678,10 +1682,33 @@ func TestNodeExecutor_AbortHandler(t *testing.T) { execContext := mocks4.ExecutionContext{} execContext.EXPECT().IsInterruptible().Return(false) r := v1alpha1.RawOutputDataConfig{} +<<<<<<< HEAD execContext.EXPECT().GetRawOutputDataConfig().Return(r) execContext.EXPECT().GetExecutionID().Return(v1alpha1.WorkflowExecutionIdentifier{}) execContext.EXPECT().GetLabels().Return(nil) execContext.EXPECT().GetEventVersion().Return(v1alpha1.EventVersion0) +======= + execContext.OnGetRawOutputDataConfig().Return(r) + execContext.OnGetExecutionID().Return(v1alpha1.WorkflowExecutionIdentifier{}) + execContext.OnGetLabels().Return(nil) + execContext.OnGetEventVersion().Return(v1alpha1.EventVersion0) + et := &mocks.ExecutableTask{} + et.OnCoreTask().Return(&core.TaskTemplate{ + Id: &core.Identifier{ + ResourceType: core.ResourceType_TASK, + Project: "p", + Domain: "d", + Name: "fake_task_name", + Version: "v", + }, + }) + execContext.OnGetTask("id").Return(et, nil) + parentInfo := &mocks4.ImmutableParentInfo{} + parentInfo.OnGetUniqueID().Return("someunique1") + parentInfo.OnCurrentAttempt().Return(uint32(1)) + parentInfo.OnIsInDynamicChain().Return(false) + execContext.OnGetParentInfo().Return(parentInfo) +>>>>>>> 5ec9fe3cc (Add fields to NodeExecutionEvent (#315)) assert.NoError(t, nExec.AbortHandler(ctx, &execContext, &dag, nl, n, "aborting")) }) @@ -1715,12 +1742,20 @@ func TestNodeExecutionEventStartNode(t *testing.T) { tID := &core.TaskExecutionIdentifier{ NodeExecutionId: nID, } + subWfID := &core.Identifier{ + ResourceType: core.ResourceType_WORKFLOW, + Project: "p", + Domain: "dev", + Name: "name", + Version: "123", + } p := handler.PhaseInfoQueued("r", &core.LiteralMap{}) inputReader := &mocks3.InputReader{} inputReader.OnGetInputPath().Return("reference") parentInfo := &mocks4.ImmutableParentInfo{} parentInfo.OnGetUniqueID().Return("np1") parentInfo.OnCurrentAttempt().Return(uint32(2)) + parentInfo.OnIsInDynamicChain().Return(false) id := "id" n := &mocks.ExecutableNode{} @@ -1736,7 +1771,7 @@ func TestNodeExecutionEventStartNode(t *testing.T) { ns.OnGetDynamicNodeStatus().Return(&v1alpha1.DynamicNodeStatus{}) ev, err := ToNodeExecutionEvent(nID, p, "reference", ns, v1alpha1.EventVersion0, parentInfo, n, testClusterID, v1alpha1.DynamicNodePhaseNone, &config.EventConfig{ RawOutputPolicy: config.RawOutputPolicyReference, - }) + }, subWfID) assert.NoError(t, err) assert.Equal(t, "start-node", ev.Id.NodeId) assert.Equal(t, execID, ev.Id.ExecutionId) @@ -1748,6 +1783,7 @@ func TestNodeExecutionEventStartNode(t *testing.T) { assert.Equal(t, "dummy://dummyOutUrl/outputs.pb", ev.OutputResult.(*event.NodeExecutionEvent_OutputUri).OutputUri) assert.Equal(t, ev.ProducerId, testClusterID) + assert.Equal(t, subWfID, ev.GetTargetEntity()) } func TestNodeExecutionEventV0(t *testing.T) { @@ -1767,6 +1803,7 @@ func TestNodeExecutionEventV0(t *testing.T) { parentInfo := &mocks4.ImmutableParentInfo{} parentInfo.OnGetUniqueID().Return("np1") parentInfo.OnCurrentAttempt().Return(uint32(2)) + parentInfo.OnIsInDynamicChain().Return(false).Twice() id := "id" n := &mocks.ExecutableNode{} @@ -1780,7 +1817,7 @@ func TestNodeExecutionEventV0(t *testing.T) { ns.OnGetParentTaskID().Return(tID) ev, err := ToNodeExecutionEvent(nID, p, "reference", ns, v1alpha1.EventVersion0, parentInfo, n, testClusterID, v1alpha1.DynamicNodePhaseNone, &config.EventConfig{ RawOutputPolicy: config.RawOutputPolicyReference, - }) + }, nil) assert.NoError(t, err) assert.Equal(t, "n1", ev.Id.NodeId) assert.Equal(t, execID, ev.Id.ExecutionId) @@ -1789,6 +1826,7 @@ func TestNodeExecutionEventV0(t *testing.T) { assert.Equal(t, tID, ev.ParentTaskMetadata.Id) assert.Empty(t, ev.NodeName) assert.Empty(t, ev.RetryGroup) + assert.Empty(t, ev.TargetEntity) } func TestNodeExecutionEventV1(t *testing.T) { @@ -1815,6 +1853,7 @@ func TestNodeExecutionEventV1(t *testing.T) { parentInfo := &mocks4.ImmutableParentInfo{} parentInfo.OnGetUniqueID().Return("np1") parentInfo.OnCurrentAttempt().Return(uint32(2)) + parentInfo.OnIsInDynamicChain().Return(false) id := "id" n := &mocks.ExecutableNode{} @@ -1828,7 +1867,7 @@ func TestNodeExecutionEventV1(t *testing.T) { ns.OnGetParentTaskID().Return(tID) eventOpt, err := ToNodeExecutionEvent(nID, p, "reference", ns, v1alpha1.EventVersion1, parentInfo, n, testClusterID, v1alpha1.DynamicNodePhaseNone, &config.EventConfig{ RawOutputPolicy: config.RawOutputPolicyInline, - }) + }, nil) assert.NoError(t, err) assert.Equal(t, "np1-2-n1", eventOpt.Id.NodeId) assert.Equal(t, execID, eventOpt.Id.ExecutionId) @@ -1841,6 +1880,7 @@ func TestNodeExecutionEventV1(t *testing.T) { assert.Equal(t, "name", eventOpt.NodeName) assert.Equal(t, "2", eventOpt.RetryGroup) assert.True(t, proto.Equal(eventOpt.GetInputData(), inputs)) + assert.Empty(t, eventOpt.TargetEntity) } func TestNodeExecutor_RecursiveNodeHandler_ParallelismLimit(t *testing.T) { diff --git a/flytepropeller/pkg/controller/nodes/node_exec_context_test.go b/flytepropeller/pkg/controller/nodes/node_exec_context_test.go index 10e12d35e4..0ad27d77ea 100644 --- a/flytepropeller/pkg/controller/nodes/node_exec_context_test.go +++ b/flytepropeller/pkg/controller/nodes/node_exec_context_test.go @@ -19,6 +19,8 @@ import ( "github.com/flyteorg/flyte/flytepropeller/pkg/controller/config" "github.com/flyteorg/flyte/flytepropeller/pkg/controller/executors" mocks2 "github.com/flyteorg/flyte/flytepropeller/pkg/controller/executors/mocks" + "github.com/flyteorg/flyte/flytepropeller/pkg/controller/nodes/common" + mocks3 "github.com/flyteorg/flyte/flytepropeller/pkg/controller/nodes/interfaces/mocks" "github.com/flyteorg/flyte/flytestdlib/promutils" "github.com/flyteorg/flyte/flytestdlib/promutils/labeled" "github.com/flyteorg/flyte/flytestdlib/storage" @@ -142,6 +144,115 @@ func Test_NodeContextDefault(t *testing.T) { nodeExecContext, err = nodeExecutor.BuildNodeExecutionContext(context.Background(), execContext, nodeLookup, "node-a") assert.NoError(t, err) assert.Equal(t, "s3://bucket-b", nodeExecContext.RawOutputPrefix().String()) + + // Test that retrieving task nodes + taskIdentifier := common.GetTargetEntity(ctx, nodeExecContext) + assert.Equal(t, w1.Tasks["taskID"].TaskTemplate.Id.Project, taskIdentifier.Project) + assert.Equal(t, w1.Tasks["taskID"].TaskTemplate.Id.Domain, taskIdentifier.Domain) + assert.Equal(t, w1.Tasks["taskID"].TaskTemplate.Id.Name, taskIdentifier.Name) + assert.Equal(t, w1.Tasks["taskID"].TaskTemplate.Id.Version, taskIdentifier.Version) +} + +func TestGetTargetEntity_SubWorkflowNode(t *testing.T) { + id := &core.Identifier{ + ResourceType: core.ResourceType_WORKFLOW, + Project: "proj", + Domain: "domain", + Name: "sub-sub", + Version: "v1", + } + exSubWf := &mocks.ExecutableSubWorkflow{} + exSubWf.OnGetIdentifier().Return(id) + ec := mocks2.ExecutionContext{} + ec.OnFindSubWorkflow("sub-workflow").Return(exSubWf) + + subWfNode := &mocks.ExecutableWorkflowNode{} + subWfID := "sub-workflow" + subWfNode.OnGetSubWorkflowRef().Return(&subWfID) + + n := &mocks.ExecutableNode{} + n.OnGetWorkflowNode().Return(subWfNode) + + nCtx := &mocks3.NodeExecutionContext{} + nCtx.OnNode().Return(n) + nCtx.OnExecutionContext().Return(&ec) + + fetchedID := common.GetTargetEntity(context.Background(), nCtx) + assert.Equal(t, id.Project, fetchedID.Project) + assert.Equal(t, id.Domain, fetchedID.Domain) + assert.Equal(t, id.Name, fetchedID.Name) + assert.Equal(t, id.Version, fetchedID.Version) +} + +func TestGetTargetEntity_LaunchPlanNode(t *testing.T) { + id := &core.Identifier{ + ResourceType: core.ResourceType_LAUNCH_PLAN, + Project: "proj", + Domain: "domain", + Name: "sub-lp", + Version: "v2", + } + + subWfNode := &mocks.ExecutableWorkflowNode{} + subWfNode.OnGetSubWorkflowRef().Return(nil) + subWfNode.OnGetLaunchPlanRefID().Return(&v1alpha1.LaunchPlanRefID{Identifier: id}) + + n := &mocks.ExecutableNode{} + n.OnGetWorkflowNode().Return(subWfNode) + + nCtx := &mocks3.NodeExecutionContext{} + nCtx.OnNode().Return(n) + + fetchedID := common.GetTargetEntity(context.Background(), nCtx) + assert.Equal(t, id.Project, fetchedID.Project) + assert.Equal(t, id.Domain, fetchedID.Domain) + assert.Equal(t, id.Name, fetchedID.Name) + assert.Equal(t, id.Version, fetchedID.Version) +} + +func TestGetTargetEntity_Task(t *testing.T) { + id := &core.Identifier{ + ResourceType: core.ResourceType_TASK, + Project: "proj", + Domain: "domain", + Name: "task", + Version: "v3", + } + + n := &mocks.ExecutableNode{} + n.OnGetWorkflowNode().Return(nil) + taskID := "task-id" + n.OnGetTaskID().Return(&taskID) + + taskTemplate := &core.TaskTemplate{Id: id} + + exTask := &mocks.ExecutableTask{} + exTask.OnCoreTask().Return(taskTemplate) + ec := mocks2.ExecutionContext{} + ec.OnGetTask(taskID).Return(exTask, nil) + + nCtx := &mocks3.NodeExecutionContext{} + nCtx.OnNode().Return(n) + nCtx.OnExecutionContext().Return(&ec) + + fetchedID := common.GetTargetEntity(context.Background(), nCtx) + assert.Equal(t, id.Project, fetchedID.Project) + assert.Equal(t, id.Domain, fetchedID.Domain) + assert.Equal(t, id.Name, fetchedID.Name) + assert.Equal(t, id.Version, fetchedID.Version) +} + +func TestGetTargetEntity_EmptyTask(t *testing.T) { + n := &mocks.ExecutableNode{} + n.OnGetWorkflowNode().Return(nil) + taskID := "" + n.OnGetTaskID().Return(&taskID) + + nCtx := &mocks3.NodeExecutionContext{} + nCtx.OnNode().Return(n) + + fetchedID := common.GetTargetEntity(context.Background(), nCtx) + assert.Nil(t, fetchedID) } func Test_NodeContextDefaultInterruptible(t *testing.T) { diff --git a/flytepropeller/pkg/controller/nodes/subworkflow/subworkflow.go b/flytepropeller/pkg/controller/nodes/subworkflow/subworkflow.go index d71f0b7e20..cd30fcf45b 100644 --- a/flytepropeller/pkg/controller/nodes/subworkflow/subworkflow.go +++ b/flytepropeller/pkg/controller/nodes/subworkflow/subworkflow.go @@ -152,7 +152,7 @@ func (s *subworkflowHandler) handleSubWorkflow(ctx context.Context, nCtx interfa } func (s *subworkflowHandler) getExecutionContextForDownstream(nCtx interfaces.NodeExecutionContext) (executors.ExecutionContext, error) { - newParentInfo, err := common.CreateParentInfo(nCtx.ExecutionContext().GetParentInfo(), nCtx.NodeID(), nCtx.CurrentAttempt()) + newParentInfo, err := common.CreateParentInfo(nCtx.ExecutionContext().GetParentInfo(), nCtx.NodeID(), nCtx.CurrentAttempt(), false) if err != nil { return nil, err } diff --git a/flytepropeller/pkg/controller/nodes/subworkflow/subworkflow_test.go b/flytepropeller/pkg/controller/nodes/subworkflow/subworkflow_test.go index 02de593463..9fa318e7f5 100644 --- a/flytepropeller/pkg/controller/nodes/subworkflow/subworkflow_test.go +++ b/flytepropeller/pkg/controller/nodes/subworkflow/subworkflow_test.go @@ -153,7 +153,7 @@ func Test_subworkflowHandler_HandleAbort(t *testing.T) { s := newSubworkflowHandler(nodeExec, eventConfig) n := &coreMocks.ExecutableNode{} swf.OnGetID().Return("swf") - newParentInfo, _ := common.CreateParentInfo(nil, nCtx.NodeID(), nCtx.CurrentAttempt()) + newParentInfo, _ := common.CreateParentInfo(nil, nCtx.NodeID(), nCtx.CurrentAttempt(), false) expectedExecContext := executors.NewExecutionContextWithParentInfo(nCtx.ExecutionContext(), newParentInfo) nodeExec.OnAbortHandlerMatch(mock.Anything, expectedExecContext, swf, mock.Anything, n, "reason").Return(fmt.Errorf("err")) assert.Error(t, s.HandleAbort(ctx, nCtx, "reason")) @@ -187,7 +187,7 @@ func Test_subworkflowHandler_HandleAbort(t *testing.T) { s := newSubworkflowHandler(nodeExec, eventConfig) n := &coreMocks.ExecutableNode{} swf.OnGetID().Return("swf") - newParentInfo, _ := common.CreateParentInfo(nil, nCtx.NodeID(), nCtx.CurrentAttempt()) + newParentInfo, _ := common.CreateParentInfo(nil, nCtx.NodeID(), nCtx.CurrentAttempt(), false) expectedExecContext := executors.NewExecutionContextWithParentInfo(nCtx.ExecutionContext(), newParentInfo) nodeExec.OnAbortHandlerMatch(mock.Anything, expectedExecContext, swf, mock.Anything, n, "reason").Return(nil) assert.NoError(t, s.HandleAbort(ctx, nCtx, "reason")) diff --git a/flytepropeller/pkg/controller/nodes/transformers.go b/flytepropeller/pkg/controller/nodes/transformers.go index 1c911b44f3..c9f7d5fc76 100644 --- a/flytepropeller/pkg/controller/nodes/transformers.go +++ b/flytepropeller/pkg/controller/nodes/transformers.go @@ -83,7 +83,9 @@ func ToNodeExecutionEvent(nodeExecID *core.NodeExecutionIdentifier, eventVersion v1alpha1.EventVersion, parentInfo executors.ImmutableParentInfo, node v1alpha1.ExecutableNode, clusterID string, dynamicNodePhase v1alpha1.DynamicNodePhase, - eventConfig *config.EventConfig) (*event.NodeExecutionEvent, error) { + eventConfig *config.EventConfig, + targetEntity *core.Identifier) (*event.NodeExecutionEvent, error) { + if info.GetPhase() == handler.EPhaseNotReady { return nil, nil } @@ -101,6 +103,12 @@ func ToNodeExecutionEvent(nodeExecID *core.NodeExecutionIdentifier, phase = core.NodeExecution_RUNNING } + // At some point, the entity that this event corresponds to came from a dynamic task. See the IDL for more info. + var dynamicChain = false + if parentInfo != nil && parentInfo.IsInDynamicChain() { + dynamicChain = true + } + var nev *event.NodeExecutionEvent // Start node is special case where the Inputs and Outputs are the same and hence here we copy the Output file // into the OutputResult and in admin we copy it over into input as well. @@ -112,19 +120,24 @@ func ToNodeExecutionEvent(nodeExecID *core.NodeExecutionIdentifier, OutputResult: ToNodeExecOutput(&handler.OutputInfo{ OutputURI: outputsFile, }), - OccurredAt: occurredTime, - ProducerId: clusterID, - EventVersion: nodeExecutionEventVersion, - ReportedAt: ptypes.TimestampNow(), + OccurredAt: occurredTime, + ProducerId: clusterID, + EventVersion: nodeExecutionEventVersion, + ReportedAt: ptypes.TimestampNow(), + TargetEntity: targetEntity, + IsInDynamicChain: dynamicChain, } } else { + // include target_entity from function caller. nev = &event.NodeExecutionEvent{ - Id: nodeExecID, - Phase: phase, - OccurredAt: occurredTime, - ProducerId: clusterID, - EventVersion: nodeExecutionEventVersion, - ReportedAt: ptypes.TimestampNow(), + Id: nodeExecID, + Phase: phase, + OccurredAt: occurredTime, + ProducerId: clusterID, + EventVersion: nodeExecutionEventVersion, + ReportedAt: ptypes.TimestampNow(), + TargetEntity: targetEntity, + IsInDynamicChain: dynamicChain, } } @@ -199,6 +212,7 @@ func ToNodeExecutionEvent(nodeExecID *core.NodeExecutionIdentifier, InputUri: inputPath, } } + return nev, nil } diff --git a/flytepropeller/pkg/controller/nodes/transformers_test.go b/flytepropeller/pkg/controller/nodes/transformers_test.go index f1d5202401..93a532a8d6 100644 --- a/flytepropeller/pkg/controller/nodes/transformers_test.go +++ b/flytepropeller/pkg/controller/nodes/transformers_test.go @@ -39,6 +39,7 @@ func TestToNodeExecutionEvent(t *testing.T) { parentInfo := mocks2.ImmutableParentInfo{} parentInfo.OnCurrentAttempt().Return(0) parentInfo.OnGetUniqueID().Return("u") + parentInfo.OnIsInDynamicChain().Return(true) node := mocks.ExecutableNode{} node.OnGetID().Return("n") node.OnGetName().Return("nodey") @@ -53,11 +54,12 @@ func TestToNodeExecutionEvent(t *testing.T) { }, }, info, "inputPath", &status, v1alpha1.EventVersion2, &parentInfo, &node, "clusterID", v1alpha1.DynamicNodePhaseParentFinalized, &config.EventConfig{ RawOutputPolicy: config.RawOutputPolicyReference, - }) + }, nil) assert.NoError(t, err) assert.True(t, nev.IsDynamic) assert.True(t, nev.IsParent) assert.Equal(t, nodeExecutionEventVersion, nev.EventVersion) + assert.True(t, nev.IsInDynamicChain) }) t.Run("is parent", func(t *testing.T) { info := handler.PhaseInfoDynamicRunning(&handler.ExecutionInfo{TaskNodeInfo: &handler.TaskNodeInfo{ @@ -69,6 +71,7 @@ func TestToNodeExecutionEvent(t *testing.T) { parentInfo := mocks2.ImmutableParentInfo{} parentInfo.OnCurrentAttempt().Return(0) parentInfo.OnGetUniqueID().Return("u") + parentInfo.OnIsInDynamicChain().Return(false) node := mocks.ExecutableNode{} node.OnGetID().Return("n") node.OnGetName().Return("nodey") @@ -87,7 +90,7 @@ func TestToNodeExecutionEvent(t *testing.T) { }, }, info, "inputPath", &status, v1alpha1.EventVersion2, &parentInfo, &node, "clusterID", v1alpha1.DynamicNodePhaseNone, &config.EventConfig{ RawOutputPolicy: config.RawOutputPolicyReference, - }) + }, nil) assert.NoError(t, err) assert.False(t, nev.IsDynamic) assert.True(t, nev.IsParent) @@ -116,7 +119,7 @@ func TestToNodeExecutionEvent(t *testing.T) { }, }, info, "inputPath", &status, v1alpha1.EventVersion2, nil, &node, "clusterID", v1alpha1.DynamicNodePhaseParentFinalized, &config.EventConfig{ RawOutputPolicy: config.RawOutputPolicyInline, - }) + }, nil) assert.NoError(t, err) assert.True(t, proto.Equal(inputs, nev.GetInputData())) }) diff --git a/flytestdlib/storage/stow_store.go b/flytestdlib/storage/stow_store.go index e859b51258..ce4a75a0a1 100644 --- a/flytestdlib/storage/stow_store.go +++ b/flytestdlib/storage/stow_store.go @@ -232,7 +232,7 @@ func (s *StowStore) Head(ctx context.Context, reference DataReference) (Metadata t.Stop() contentMD5, ok := metadata[strings.ToLower(FlyteContentMD5)].(string) if !ok { - logger.Warningf(ctx, "Failed to cast contentMD5 [%v] to string", contentMD5) + logger.Infof(ctx, "Failed to cast contentMD5 [%v] to string", contentMD5) } return StowMetadata{ exists: true, From f6f5f955edf9833992667c620a7d62808981a199 Mon Sep 17 00:00:00 2001 From: Yee Hing Tong Date: Mon, 1 Jul 2024 11:48:29 -0700 Subject: [PATCH 2/2] fix conflicts Signed-off-by: Yee Hing Tong --- flyteidl/clients/go/assets/admin.swagger.json | 4816 +---------------- flyteidl/gen/pb-es/flyteidl/event/event_pb.ts | 8 - flyteidl/gen/pb-go/flyteidl/event/event.pb.go | 8 - .../flyteidl/service/admin.swagger.json | 436 -- flyteidl/gen/pb_rust/flyteidl.event.rs | 8 - flyteidl/protos/flyteidl/event/event.proto | 8 - .../pkg/controller/nodes/common/utils.go | 6 +- .../pkg/controller/nodes/executor_test.go | 12 +- .../nodes/node_exec_context_test.go | 63 - 9 files changed, 13 insertions(+), 5352 deletions(-) diff --git a/flyteidl/clients/go/assets/admin.swagger.json b/flyteidl/clients/go/assets/admin.swagger.json index 884d8efeb2..4854a4e895 100644 --- a/flyteidl/clients/go/assets/admin.swagger.json +++ b/flyteidl/clients/go/assets/admin.swagger.json @@ -2339,4378 +2339,6 @@ ] } }, -<<<<<<< HEAD -======= - "/api/v1/org/active_launch_plans/{id.org}/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Fetch the active version of a :ref:`ref_flyteidl.admin.LaunchPlan`.", - "description": "Retrieve the active launch plan version specified by input request filters.", - "operationId": "AdminService_GetActiveLaunchPlan2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminLaunchPlan" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/active_launch_plans/{org}/{project}/{domain}": { - "get": { - "summary": "List active versions of :ref:`ref_flyteidl.admin.LaunchPlan`.", - "description": "Fetch the active launch plan versions specified by input request filters.", - "operationId": "AdminService_ListActiveLaunchPlans2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminLaunchPlanList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "project", - "description": "Name of the project that contains the identifiers.\n+required.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "domain", - "description": "Name of the domain the identifiers belongs to within the project.\n+required.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required.", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/children/{task_execution_id.node_execution_id.execution_id.org}/task_executions/{task_execution_id.node_execution_id.execution_id.project}/{task_execution_id.node_execution_id.execution_id.domain}/{task_execution_id.node_execution_id.execution_id.name}/{task_execution_id.node_execution_id.node_id}/{task_execution_id.task_id.project}/{task_execution_id.task_id.domain}/{task_execution_id.task_id.name}/{task_execution_id.task_id.version}/{task_execution_id.retry_attempt}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.NodeExecution` launched by the reference :ref:`ref_flyteidl.admin.TaskExecution`.", - "operationId": "AdminService_ListNodeExecutionsForTask2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminNodeExecutionList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "task_execution_id.node_execution_id.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "task_execution_id.node_execution_id.execution_id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "task_execution_id.node_execution_id.execution_id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "task_execution_id.node_execution_id.execution_id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "task_execution_id.node_execution_id.node_id", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "task_execution_id.task_id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "task_execution_id.task_id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "task_execution_id.task_id.name", - "description": "User provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "task_execution_id.task_id.version", - "description": "Specific version of the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "task_execution_id.retry_attempt", - "in": "path", - "required": true, - "type": "integer", - "format": "int64" - }, - { - "name": "task_execution_id.task_id.resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ], - "default": "UNSPECIFIED" - }, - { - "name": "task_execution_id.task_id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, the, server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/configuration/{id.org}/{id.domain}": { - "get": { - "summary": "Fetch a unified project attribute.", - "operationId": "AdminService_GetConfiguration4", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminConfigurationGetResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Name of the org the configuration belongs to.\n+optional", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the configuration belongs to.\n+optional", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the configuration belongs to.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "id.workflow", - "description": "Name of the workflow the configuration belongs to.\n+optional", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/configuration/{id.org}/{id.project}/{id.domain}": { - "get": { - "summary": "Fetch a unified project attribute.", - "operationId": "AdminService_GetConfiguration2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminConfigurationGetResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Name of the org the configuration belongs to.\n+optional", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the configuration belongs to.\n+optional", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the configuration belongs to.\n+optional", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.workflow", - "description": "Name of the workflow the configuration belongs to.\n+optional", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - }, - "post": { - "summary": "Update a unified project attribute.\nRequests will fail for stale values of version_to_update", - "operationId": "AdminService_UpdateProjectDomainConfiguration2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminConfigurationUpdateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Name of the org the configuration belongs to.\n+optional", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the configuration belongs to.\n+optional", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the configuration belongs to.\n+optional", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceUpdateProjectDomainConfigurationBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/count/executions/{org}/{project}/{domain}": { - "get": { - "summary": "Fetch the count of :ref:`ref_flyteidl.admin.Execution`.", - "operationId": "AdminService_GetExecutionCounts2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminExecutionCountsGetResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "org", - "description": "org filter applied to execution count request.\n+optional", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "project", - "description": "Name of the project the execution belongs to.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "domain", - "description": "Name of the domain the execution belongs to.\nA domain can be considered as a subset within a specific project.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\n+optional", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/data/executions/{id.org}/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Fetches input and output data for a :ref:`ref_flyteidl.admin.Execution`.", - "operationId": "AdminService_GetExecutionData2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminWorkflowExecutionGetDataResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/data/node_executions/{id.execution_id.org}/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}": { - "get": { - "summary": "Fetches input and output data for a :ref:`ref_flyteidl.admin.NodeExecution`.", - "operationId": "AdminService_GetNodeExecutionData2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminNodeExecutionGetDataResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.execution_id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.execution_id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.execution_id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_id", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/data/task_executions/{id.node_execution_id.execution_id.org}/{id.task_id.org}/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}": { - "get": { - "summary": "Fetches input and output data for a :ref:`ref_flyteidl.admin.TaskExecution`.", - "description": "Retrieve input and output data from an existing task execution.", - "operationId": "AdminService_GetTaskExecutionData2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminTaskExecutionGetDataResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.node_execution_id.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.task_id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_execution_id.execution_id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_execution_id.execution_id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_execution_id.execution_id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_execution_id.node_id", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.task_id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.task_id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.task_id.name", - "description": "User provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.task_id.version", - "description": "Specific version of the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.retry_attempt", - "in": "path", - "required": true, - "type": "integer", - "format": "int64" - }, - { - "name": "id.task_id.resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ], - "default": "UNSPECIFIED" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/description_entities/{id.org}/{id.resource_type}/{id.project}/{id.domain}/{id.name}/{id.version}": { - "get": { - "summary": "Fetch a :ref:`ref_flyteidl.admin.DescriptionEntity` object.", - "description": "Retrieve an existing description entity description.", - "operationId": "AdminService_GetDescriptionEntity2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminDescriptionEntity" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ] - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.version", - "description": "Specific version of the resource.", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/description_entities/{id.org}/{resource_type}/{id.project}/{id.domain}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions.", - "description": "Fetch existing description entity definitions matching input filters.", - "operationId": "AdminService_ListDescriptionEntities4", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminDescriptionEntityList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ] - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/description_entities/{id.org}/{resource_type}/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions.", - "description": "Fetch existing description entity definitions matching input filters.", - "operationId": "AdminService_ListDescriptionEntities2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminDescriptionEntityList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ] - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/events/{event.execution_id.org}/workflows": { - "post": { - "summary": "Indicates a :ref:`ref_flyteidl.event.WorkflowExecutionEvent` has occurred.", - "description": "Create a workflow execution event recording a phase transition.", - "operationId": "AdminService_CreateWorkflowEvent2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminWorkflowExecutionEventResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "event.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceCreateWorkflowEventBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/events/{event.id.execution_id.org}/nodes": { - "post": { - "summary": "Indicates a :ref:`ref_flyteidl.event.NodeExecutionEvent` has occurred.", - "description": "Create a node execution event recording a phase transition.", - "operationId": "AdminService_CreateNodeEvent2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminNodeExecutionEventResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "event.id.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceCreateNodeEventBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/events/{event.parent_node_execution_id.execution_id.org}/tasks": { - "post": { - "summary": "Indicates a :ref:`ref_flyteidl.event.TaskExecutionEvent` has occurred.", - "description": "Create a task execution event recording a phase transition.", - "operationId": "AdminService_CreateTaskEvent2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminTaskExecutionEventResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "event.parent_node_execution_id.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceCreateTaskEventBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/executions/{id.org}/recover": { - "post": { - "summary": "Recreates a previously-run workflow execution that will only start executing from the last known failure point.\nIn Recover mode, users cannot change any input parameters or update the version of the execution.\nThis is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures,\ndownstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again.\nSee :ref:`ref_flyteidl.admin.ExecutionRecoverRequest` for more details.", - "description": "Recreates a previously-run workflow execution that will only start executing from the last known failure point. In Recover mode, users cannot change any input parameters or update the version of the execution. This is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures, downstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again.", - "operationId": "AdminService_RecoverExecution2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminExecutionCreateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceRecoverExecutionBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/executions/{id.org}/relaunch": { - "post": { - "summary": "Triggers the creation of an identical :ref:`ref_flyteidl.admin.Execution`", - "description": "Relaunch a workflow execution.", - "operationId": "AdminService_RelaunchExecution2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminExecutionCreateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceRelaunchExecutionBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/executions/{id.org}/{id.project}/{id.domain}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.Execution`.", - "operationId": "AdminService_ListExecutions2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminExecutionList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/executions/{id.org}/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Fetches a :ref:`ref_flyteidl.admin.Execution`.", - "description": "Retrieve an existing workflow execution.", - "operationId": "AdminService_GetExecution2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminExecution" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - }, - "delete": { - "summary": "Terminates an in-progress :ref:`ref_flyteidl.admin.Execution`.", - "operationId": "AdminService_TerminateExecution2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminExecutionTerminateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceTerminateExecutionBody" - } - } - ], - "tags": [ - "AdminService" - ] - }, - "put": { - "summary": "Update execution belonging to project domain :ref:`ref_flyteidl.admin.Execution`.", - "operationId": "AdminService_UpdateExecution2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminExecutionUpdateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceUpdateExecutionBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/executions/{org}": { - "post": { - "summary": "Triggers the creation of a :ref:`ref_flyteidl.admin.Execution`", - "description": "Create a workflow execution.", - "operationId": "AdminService_CreateExecution2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminExecutionCreateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceCreateExecutionBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/launch_plan_ids/{org}/{project}/{domain}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.NamedEntityIdentifier` of launch plan objects.", - "description": "Fetch existing launch plan definition identifiers matching input filters.", - "operationId": "AdminService_ListLaunchPlanIds2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminNamedEntityIdentifierList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "project", - "description": "Name of the project that contains the identifiers.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "domain", - "description": "Name of the domain the identifiers belongs to within the project.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\n+optional", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/launch_plans/{id.org}": { - "post": { - "summary": "Create and upload a :ref:`ref_flyteidl.admin.LaunchPlan` definition", - "description": "Create and register a launch plan definition.", - "operationId": "AdminService_CreateLaunchPlan2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminLaunchPlanCreateResponse" - } - }, - "400": { - "description": "Returned for bad request that may have failed validation.", - "schema": {} - }, - "409": { - "description": "Returned for a request that references an identical entity that has already been registered.", - "schema": {} - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceCreateLaunchPlanBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/launch_plans/{id.org}/{id.project}/{id.domain}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.LaunchPlan` definitions.", - "description": "Fetch existing launch plan definitions matching input filters.", - "operationId": "AdminService_ListLaunchPlans4", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminLaunchPlanList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/launch_plans/{id.org}/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.LaunchPlan` definitions.", - "description": "Fetch existing launch plan definitions matching input filters.", - "operationId": "AdminService_ListLaunchPlans2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminLaunchPlanList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/launch_plans/{id.org}/{id.project}/{id.domain}/{id.name}/{id.version}": { - "get": { - "summary": "Fetch a :ref:`ref_flyteidl.admin.LaunchPlan` definition.", - "description": "Retrieve an existing launch plan definition.", - "operationId": "AdminService_GetLaunchPlan2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminLaunchPlan" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.version", - "description": "Specific version of the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ], - "default": "UNSPECIFIED" - } - ], - "tags": [ - "AdminService" - ] - }, - "put": { - "summary": "Updates the status of a registered :ref:`ref_flyteidl.admin.LaunchPlan`.", - "description": "Update the status of an existing launch plan definition. At most one launch plan version for a given {project, domain, name} can be active at a time. If this call sets a launch plan to active and existing version is already active, the result of this call will be that the formerly active launch plan will be made inactive and specified launch plan in this request will be made active. In the event that the formerly active launch plan had a schedule associated it with it, this schedule will be disabled. If the reference launch plan in this request is being set to active and has a schedule associated with it, the schedule will be enabled.", - "operationId": "AdminService_UpdateLaunchPlan2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminLaunchPlanUpdateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.version", - "description": "Specific version of the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceUpdateLaunchPlanBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/matchable_attributes/{org}": { - "get": { - "summary": "Lists custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a specific resource type.", - "description": "Retrieve a list of MatchableAttributesConfiguration objects.", - "operationId": "AdminService_ListMatchableAttributes2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminListMatchableAttributesResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "org", - "description": "Optional, org filter applied to list project requests.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "resource_type", - "description": "+required\n\n - TASK_RESOURCE: Applies to customizable task resource requests and limits.\n - CLUSTER_RESOURCE: Applies to configuring templated kubernetes cluster resources.\n - EXECUTION_QUEUE: Configures task and dynamic task execution queue assignment.\n - EXECUTION_CLUSTER_LABEL: Configures the K8s cluster label to be used for execution to be run\n - QUALITY_OF_SERVICE_SPECIFICATION: Configures default quality of service when undefined in an execution spec.\n - PLUGIN_OVERRIDE: Selects configurable plugin implementation behavior for a given task type.\n - WORKFLOW_EXECUTION_CONFIG: Adds defaults for customizable workflow-execution specifications and overrides.\n - CLUSTER_ASSIGNMENT: Controls how to select an available cluster on which this execution should run.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "TASK_RESOURCE", - "CLUSTER_RESOURCE", - "EXECUTION_QUEUE", - "EXECUTION_CLUSTER_LABEL", - "QUALITY_OF_SERVICE_SPECIFICATION", - "PLUGIN_OVERRIDE", - "WORKFLOW_EXECUTION_CONFIG", - "CLUSTER_ASSIGNMENT" - ], - "default": "TASK_RESOURCE" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/metrics/executions/{id.org}/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Fetches runtime metrics for a :ref:`ref_flyteidl.admin.Execution`.", - "description": "Retrieve metrics from an existing workflow execution.", - "operationId": "AdminService_GetExecutionMetrics2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminWorkflowExecutionGetMetricsResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "depth", - "description": "depth defines the number of Flyte entity levels to traverse when breaking down execution details.", - "in": "query", - "required": false, - "type": "integer", - "format": "int32" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/named_entities/{id.org}/{resource_type}/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Returns a :ref:`ref_flyteidl.admin.NamedEntity` object.", - "description": "Retrieve a NamedEntity object.", - "operationId": "AdminService_GetNamedEntity2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminNamedEntity" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "resource_type", - "description": "Resource type of the metadata to get. One of Task, Workflow or LaunchPlan.\n+required", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ] - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - }, - "put": { - "summary": "Updates a :ref:`ref_flyteidl.admin.NamedEntity` object.", - "description": "Update the fields associated with a NamedEntity", - "operationId": "AdminService_UpdateNamedEntity2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminNamedEntityUpdateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "resource_type", - "description": "Resource type of the metadata to update\n+required", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ] - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceUpdateNamedEntityBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/named_entities/{org}/{resource_type}/{project}/{domain}": { - "get": { - "summary": "Returns a list of :ref:`ref_flyteidl.admin.NamedEntity` objects.", - "description": "Retrieve a list of NamedEntity objects sharing a common resource type, project, and domain.", - "operationId": "AdminService_ListNamedEntities2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminNamedEntityList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "resource_type", - "description": "Resource type of the metadata to query. One of Task, Workflow or LaunchPlan.\n+required", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ] - }, - { - "name": "project", - "description": "Name of the project that contains the identifiers.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "domain", - "description": "Name of the domain the identifiers belongs to within the project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\n+optional", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/node_executions/{id.execution_id.org}/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}": { - "get": { - "summary": "Fetches a :ref:`ref_flyteidl.admin.NodeExecution`.", - "operationId": "AdminService_GetNodeExecution2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/flyteidladminNodeExecution" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.execution_id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.execution_id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.execution_id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_id", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/node_executions/{id.execution_id.org}/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}/dynamic_workflow": { - "get": { - "summary": "Fetches a :ref:`ref_flyteidl.admin.DynamicNodeWorkflowResponse`.", - "operationId": "AdminService_GetDynamicNodeWorkflow2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminDynamicNodeWorkflowResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.execution_id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.execution_id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.execution_id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_id", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/node_executions/{workflow_execution_id.org}/{workflow_execution_id.project}/{workflow_execution_id.domain}/{workflow_execution_id.name}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.NodeExecution`.", - "operationId": "AdminService_ListNodeExecutions2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminNodeExecutionList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "workflow_execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "workflow_execution_id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "workflow_execution_id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "workflow_execution_id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - }, - { - "name": "unique_parent_id", - "description": "Unique identifier of the parent node in the execution\n+optional", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/project_domain_attributes/{attributes.org}/{attributes.project}": { - "put": { - "summary": "Creates or updates custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` at the project level", - "description": "Update the customized resource attributes associated with a project", - "operationId": "AdminService_UpdateProjectAttributes2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminProjectAttributesUpdateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "attributes.org", - "description": "Optional, org key applied to the project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "attributes.project", - "description": "Unique project id for which this set of attributes will be applied.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceUpdateProjectAttributesBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/project_domain_attributes/{attributes.org}/{attributes.project}/{attributes.domain}": { - "put": { - "summary": "Creates or updates custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", - "description": "Update the customized resource attributes associated with a project-domain combination", - "operationId": "AdminService_UpdateProjectDomainAttributes2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminProjectDomainAttributesUpdateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "attributes.org", - "description": "Optional, org key applied to the attributes.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "attributes.project", - "description": "Unique project id for which this set of attributes will be applied.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "attributes.domain", - "description": "Unique domain id for which this set of attributes will be applied.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceUpdateProjectDomainAttributesBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/project_domain_attributes/{org}/{project}": { - "get": { - "summary": "Fetches custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", - "description": "Retrieve the customized resource attributes associated with a project", - "operationId": "AdminService_GetProjectAttributes2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminProjectAttributesGetResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "org", - "description": "Optional, org key applied to the project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "project", - "description": "Unique project id which this set of attributes references.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "resource_type", - "description": "Which type of matchable attributes to return.\n+required\n\n - TASK_RESOURCE: Applies to customizable task resource requests and limits.\n - CLUSTER_RESOURCE: Applies to configuring templated kubernetes cluster resources.\n - EXECUTION_QUEUE: Configures task and dynamic task execution queue assignment.\n - EXECUTION_CLUSTER_LABEL: Configures the K8s cluster label to be used for execution to be run\n - QUALITY_OF_SERVICE_SPECIFICATION: Configures default quality of service when undefined in an execution spec.\n - PLUGIN_OVERRIDE: Selects configurable plugin implementation behavior for a given task type.\n - WORKFLOW_EXECUTION_CONFIG: Adds defaults for customizable workflow-execution specifications and overrides.\n - CLUSTER_ASSIGNMENT: Controls how to select an available cluster on which this execution should run.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "TASK_RESOURCE", - "CLUSTER_RESOURCE", - "EXECUTION_QUEUE", - "EXECUTION_CLUSTER_LABEL", - "QUALITY_OF_SERVICE_SPECIFICATION", - "PLUGIN_OVERRIDE", - "WORKFLOW_EXECUTION_CONFIG", - "CLUSTER_ASSIGNMENT" - ], - "default": "TASK_RESOURCE" - } - ], - "tags": [ - "AdminService" - ] - }, - "delete": { - "summary": "Deletes custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", - "description": "Delete the customized resource attributes associated with a project", - "operationId": "AdminService_DeleteProjectAttributes2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminProjectAttributesDeleteResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "org", - "description": "Optional, org key applied to the project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "project", - "description": "Unique project id which this set of attributes references.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceDeleteProjectAttributesBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/project_domain_attributes/{org}/{project}/{domain}": { - "get": { - "summary": "Fetches custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", - "description": "Retrieve the customized resource attributes associated with a project-domain combination", - "operationId": "AdminService_GetProjectDomainAttributes2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminProjectDomainAttributesGetResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "org", - "description": "Optional, org key applied to the attributes.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "project", - "description": "Unique project id which this set of attributes references.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "domain", - "description": "Unique domain id which this set of attributes references.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "resource_type", - "description": "Which type of matchable attributes to return.\n+required\n\n - TASK_RESOURCE: Applies to customizable task resource requests and limits.\n - CLUSTER_RESOURCE: Applies to configuring templated kubernetes cluster resources.\n - EXECUTION_QUEUE: Configures task and dynamic task execution queue assignment.\n - EXECUTION_CLUSTER_LABEL: Configures the K8s cluster label to be used for execution to be run\n - QUALITY_OF_SERVICE_SPECIFICATION: Configures default quality of service when undefined in an execution spec.\n - PLUGIN_OVERRIDE: Selects configurable plugin implementation behavior for a given task type.\n - WORKFLOW_EXECUTION_CONFIG: Adds defaults for customizable workflow-execution specifications and overrides.\n - CLUSTER_ASSIGNMENT: Controls how to select an available cluster on which this execution should run.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "TASK_RESOURCE", - "CLUSTER_RESOURCE", - "EXECUTION_QUEUE", - "EXECUTION_CLUSTER_LABEL", - "QUALITY_OF_SERVICE_SPECIFICATION", - "PLUGIN_OVERRIDE", - "WORKFLOW_EXECUTION_CONFIG", - "CLUSTER_ASSIGNMENT" - ], - "default": "TASK_RESOURCE" - } - ], - "tags": [ - "AdminService" - ] - }, - "delete": { - "summary": "Deletes custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain.", - "description": "Delete the customized resource attributes associated with a project-domain combination", - "operationId": "AdminService_DeleteProjectDomainAttributes2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminProjectDomainAttributesDeleteResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "org", - "description": "Optional, org key applied to the attributes.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "project", - "description": "Unique project id which this set of attributes references.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "domain", - "description": "Unique domain id which this set of attributes references.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceDeleteProjectDomainAttributesBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/projects/{org}": { - "get": { - "summary": "Fetches a list of :ref:`ref_flyteidl.admin.Project`", - "description": "Fetch registered projects.", - "operationId": "AdminService_ListProjects2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminProjects" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "org", - "description": "Optional, org filter applied to list project requests.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of projects to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/projects/{org}/{id}": { - "get": { - "summary": "Fetches a :ref:`ref_flyteidl.admin.Project`", - "description": "Fetch a registered project.", - "operationId": "AdminService_GetProject2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminProject" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id", - "description": "Indicates a unique project.\n+required", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - }, - "put": { - "summary": "Updates an existing :ref:`ref_flyteidl.admin.Project`\nflyteidl.admin.Project should be passed but the domains property should be empty;\nit will be ignored in the handler as domains cannot be updated via this API.", - "description": "Update a project.", - "operationId": "AdminService_UpdateProject2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminProjectUpdateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id", - "description": "Globally unique project name.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceUpdateProjectBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/projects/{project.org}": { - "post": { - "summary": "Registers a :ref:`ref_flyteidl.admin.Project` with the Flyte deployment.", - "operationId": "AdminService_RegisterProject2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminProjectRegisterResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "project.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceRegisterProjectBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/running_count/executions/{org}/{project}/{domain}": { - "get": { - "operationId": "AdminService_GetRunningExecutionsCount2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminRunningExecutionsCountGetResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "org", - "description": "org filter applied to execution count request.\n+optional", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "project", - "description": "Name of the project the execution belongs to.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "domain", - "description": "Name of the domain the execution belongs to.\nA domain can be considered as a subset within a specific project.\n+required", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/task_executions/{id.node_execution_id.execution_id.org}/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}": { - "get": { - "summary": "Fetches a :ref:`ref_flyteidl.admin.TaskExecution`.", - "description": "Retrieve an existing task execution.", - "operationId": "AdminService_GetTaskExecution2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/flyteidladminTaskExecution" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.node_execution_id.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_execution_id.execution_id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_execution_id.execution_id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_execution_id.execution_id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.node_execution_id.node_id", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.task_id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.task_id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.task_id.name", - "description": "User provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.task_id.version", - "description": "Specific version of the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.retry_attempt", - "in": "path", - "required": true, - "type": "integer", - "format": "int64" - }, - { - "name": "id.task_id.resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ], - "default": "UNSPECIFIED" - }, - { - "name": "id.task_id.org", - "description": "Optional, org key applied to the resource.", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/task_executions/{node_execution_id.execution_id.org}/{node_execution_id.execution_id.project}/{node_execution_id.execution_id.domain}/{node_execution_id.execution_id.name}/{node_execution_id.node_id}": { - "get": { - "summary": "Fetches a list of :ref:`ref_flyteidl.admin.TaskExecution`.", - "description": "Fetch existing task executions matching input filters.", - "operationId": "AdminService_ListTaskExecutions2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminTaskExecutionList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "node_execution_id.execution_id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "node_execution_id.execution_id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "node_execution_id.execution_id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "node_execution_id.execution_id.name", - "description": "User or system provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "node_execution_id.node_id", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/tasks/{id.org}": { - "post": { - "summary": "Create and upload a :ref:`ref_flyteidl.admin.Task` definition", - "description": "Create and register a task definition.", - "operationId": "AdminService_CreateTask2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/flyteidladminTaskCreateResponse" - } - }, - "400": { - "description": "Returned for bad request that may have failed validation.", - "schema": {} - }, - "409": { - "description": "Returned for a request that references an identical entity that has already been registered.", - "schema": {} - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/serviceAdminServiceCreateTaskBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/tasks/{id.org}/{id.project}/{id.domain}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.Task` definitions.", - "description": "Fetch existing task definitions matching input filters.", - "operationId": "AdminService_ListTasks4", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminTaskList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/tasks/{id.org}/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.Task` definitions.", - "description": "Fetch existing task definitions matching input filters.", - "operationId": "AdminService_ListTasks2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminTaskList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/tasks/{id.org}/{id.project}/{id.domain}/{id.name}/{id.version}": { - "get": { - "summary": "Fetch a :ref:`ref_flyteidl.admin.Task` definition.", - "description": "Retrieve an existing task definition.", - "operationId": "AdminService_GetTask2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminTask" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.version", - "description": "Specific version of the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ], - "default": "UNSPECIFIED" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/tasks/{org}/{project}/{domain}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.NamedEntityIdentifier` of task objects.", - "description": "Fetch existing task definition identifiers matching input filters.", - "operationId": "AdminService_ListTaskIds2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminNamedEntityIdentifierList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "project", - "description": "Name of the project that contains the identifiers.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "domain", - "description": "Name of the domain the identifiers belongs to within the project.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\n+optional", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/workflow_attributes/{attributes.org}/{attributes.project}/{attributes.domain}/{attributes.workflow}": { - "put": { - "summary": "Creates or updates custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project, domain and workflow.", - "description": "Update the customized resource attributes associated with a project, domain and workflow combination", - "operationId": "AdminService_UpdateWorkflowAttributes2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminWorkflowAttributesUpdateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "attributes.org", - "description": "Optional, org key applied to the attributes.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "attributes.project", - "description": "Unique project id for which this set of attributes will be applied.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "attributes.domain", - "description": "Unique domain id for which this set of attributes will be applied.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "attributes.workflow", - "description": "Workflow name for which this set of attributes will be applied.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceUpdateWorkflowAttributesBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/workflow_attributes/{org}/{project}/{domain}/{workflow}": { - "get": { - "summary": "Fetches custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project, domain and workflow.", - "description": "Retrieve the customized resource attributes associated with a project, domain and workflow combination", - "operationId": "AdminService_GetWorkflowAttributes2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminWorkflowAttributesGetResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "org", - "description": "Optional, org key applied to the attributes.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "project", - "description": "Unique project id which this set of attributes references.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "domain", - "description": "Unique domain id which this set of attributes references.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "workflow", - "description": "Workflow name which this set of attributes references.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "resource_type", - "description": "Which type of matchable attributes to return.\n+required\n\n - TASK_RESOURCE: Applies to customizable task resource requests and limits.\n - CLUSTER_RESOURCE: Applies to configuring templated kubernetes cluster resources.\n - EXECUTION_QUEUE: Configures task and dynamic task execution queue assignment.\n - EXECUTION_CLUSTER_LABEL: Configures the K8s cluster label to be used for execution to be run\n - QUALITY_OF_SERVICE_SPECIFICATION: Configures default quality of service when undefined in an execution spec.\n - PLUGIN_OVERRIDE: Selects configurable plugin implementation behavior for a given task type.\n - WORKFLOW_EXECUTION_CONFIG: Adds defaults for customizable workflow-execution specifications and overrides.\n - CLUSTER_ASSIGNMENT: Controls how to select an available cluster on which this execution should run.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "TASK_RESOURCE", - "CLUSTER_RESOURCE", - "EXECUTION_QUEUE", - "EXECUTION_CLUSTER_LABEL", - "QUALITY_OF_SERVICE_SPECIFICATION", - "PLUGIN_OVERRIDE", - "WORKFLOW_EXECUTION_CONFIG", - "CLUSTER_ASSIGNMENT" - ], - "default": "TASK_RESOURCE" - } - ], - "tags": [ - "AdminService" - ] - }, - "delete": { - "summary": "Deletes custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project, domain and workflow.", - "description": "Delete the customized resource attributes associated with a project, domain and workflow combination", - "operationId": "AdminService_DeleteWorkflowAttributes2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminWorkflowAttributesDeleteResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "org", - "description": "Optional, org key applied to the attributes.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "project", - "description": "Unique project id which this set of attributes references.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "domain", - "description": "Unique domain id which this set of attributes references.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "workflow", - "description": "Workflow name which this set of attributes references.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceDeleteWorkflowAttributesBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/workflows/{id.org}": { - "post": { - "summary": "Create and upload a :ref:`ref_flyteidl.admin.Workflow` definition", - "description": "Create and register a workflow definition.", - "operationId": "AdminService_CreateWorkflow2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminWorkflowCreateResponse" - } - }, - "400": { - "description": "Returned for bad request that may have failed validation.", - "schema": {} - }, - "409": { - "description": "Returned for a request that references an identical entity that has already been registered.", - "schema": {} - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AdminServiceCreateWorkflowBody" - } - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/workflows/{id.org}/{id.project}/{id.domain}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.Workflow` definitions.", - "description": "Fetch existing workflow definitions matching input filters.", - "operationId": "AdminService_ListWorkflows4", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminWorkflowList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/workflows/{id.org}/{id.project}/{id.domain}/{id.name}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.Workflow` definitions.", - "description": "Fetch existing workflow definitions matching input filters.", - "operationId": "AdminService_ListWorkflows2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminWorkflowList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.\nThe combination of project + domain + name uniquely identifies the resource.\n+optional - in certain contexts - like 'List API', 'Launch plans'", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, this server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\nMore info on constructing filters : \u003cLink\u003e\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/workflows/{id.org}/{id.project}/{id.domain}/{id.name}/{id.version}": { - "get": { - "summary": "Fetch a :ref:`ref_flyteidl.admin.Workflow` definition.", - "description": "Retrieve an existing workflow definition.", - "operationId": "AdminService_GetWorkflow2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminWorkflow" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "id.org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.project", - "description": "Name of the project the resource belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.domain", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.name", - "description": "User provided value for the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.version", - "description": "Specific version of the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id.resource_type", - "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "UNSPECIFIED", - "TASK", - "WORKFLOW", - "LAUNCH_PLAN", - "DATASET" - ], - "default": "UNSPECIFIED" - } - ], - "tags": [ - "AdminService" - ] - } - }, - "/api/v1/org/workflows/{org}/{project}/{domain}": { - "get": { - "summary": "Fetch a list of :ref:`ref_flyteidl.admin.NamedEntityIdentifier` of workflow objects.", - "operationId": "AdminService_ListWorkflowIds2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/adminNamedEntityIdentifierList" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/googlerpcStatus" - } - } - }, - "parameters": [ - { - "name": "org", - "description": "Optional, org key applied to the resource.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "project", - "description": "Name of the project that contains the identifiers.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "domain", - "description": "Name of the domain the identifiers belongs to within the project.\n+required", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "limit", - "description": "Indicates the number of resources to be returned.\n+required", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "token", - "description": "In the case of multiple pages of results, the server-provided token can be used to fetch the next page\nin a query.\n+optional", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.key", - "description": "Indicates an attribute to sort the response values.\n+required", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "sort_by.direction", - "description": "Indicates the direction to apply sort key for response values.\n+optional\n\n - DESCENDING: By default, fields are sorted in descending order.", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "DESCENDING", - "ASCENDING" - ], - "default": "DESCENDING" - }, - { - "name": "filters", - "description": "Indicates a list of filters passed as string.\n+optional", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "AdminService" - ] - } - }, ->>>>>>> 5ec9fe3cc (Add fields to NodeExecutionEvent (#315)) "/api/v1/project_attributes/{attributes.project}": { "put": { "summary": "Creates or updates custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` at the project level", @@ -8406,434 +4034,6 @@ } }, "definitions": { -<<<<<<< HEAD -======= - "AdminServiceCreateExecutionBody": { - "type": "object", - "properties": { - "project": { - "type": "string", - "title": "Name of the project the execution belongs to.\n+required" - }, - "domain": { - "type": "string", - "title": "Name of the domain the execution belongs to.\nA domain can be considered as a subset within a specific project.\n+required" - }, - "name": { - "type": "string", - "title": "User provided value for the resource.\nIf none is provided the system will generate a unique string.\n+optional" - }, - "spec": { - "$ref": "#/definitions/adminExecutionSpec", - "title": "Additional fields necessary to launch the execution.\n+optional" - }, - "inputs": { - "$ref": "#/definitions/coreLiteralMap", - "title": "The inputs required to start the execution. All required inputs must be\nincluded in this map. If not required and not provided, defaults apply.\n+optional" - } - }, - "description": "Request to launch an execution with the given project, domain and optionally-assigned name." - }, - "AdminServiceCreateLaunchPlanBody": { - "type": "object", - "properties": { - "id": { - "type": "object", - "properties": { - "resource_type": { - "$ref": "#/definitions/coreResourceType", - "description": "Identifies the specific type of resource that this identifier corresponds to." - }, - "project": { - "type": "string", - "description": "Name of the project the resource belongs to." - }, - "domain": { - "type": "string", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." - }, - "name": { - "type": "string", - "description": "User provided value for the resource." - }, - "version": { - "type": "string", - "description": "Specific version of the resource." - } - }, - "description": "Uniquely identifies a launch plan entity.", - "title": "Uniquely identifies a launch plan entity." - }, - "spec": { - "$ref": "#/definitions/adminLaunchPlanSpec", - "description": "User-provided launch plan details, including reference workflow, inputs and other metadata." - } - }, - "description": "Request to register a launch plan. The included LaunchPlanSpec may have a complete or incomplete set of inputs required\nto launch a workflow execution. By default all launch plans are registered in state INACTIVE. If you wish to\nset the state to ACTIVE, you must submit a LaunchPlanUpdateRequest, after you have successfully created a launch plan." - }, - "AdminServiceCreateNodeEventBody": { - "type": "object", - "properties": { - "request_id": { - "type": "string", - "title": "Unique ID for this request that can be traced between services" - }, - "event": { - "type": "object", - "properties": { - "id": { - "type": "object", - "properties": { - "node_id": { - "type": "string" - }, - "execution_id": { - "type": "object", - "properties": { - "project": { - "type": "string", - "description": "Name of the project the resource belongs to." - }, - "domain": { - "type": "string", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." - }, - "name": { - "type": "string", - "description": "User or system provided value for the resource." - } - }, - "title": "Encapsulation of fields that uniquely identifies a Flyte workflow execution" - } - }, - "title": "Unique identifier for this node execution" - }, - "producer_id": { - "type": "string", - "title": "the id of the originator (Propeller) of the event" - }, - "phase": { - "$ref": "#/definitions/coreNodeExecutionPhase" - }, - "occurred_at": { - "type": "string", - "format": "date-time", - "description": "This timestamp represents when the original event occurred, it is generated\nby the executor of the node." - }, - "input_uri": { - "type": "string" - }, - "input_data": { - "$ref": "#/definitions/coreLiteralMap", - "description": "Raw input data consumed by this node execution." - }, - "output_uri": { - "type": "string", - "description": "URL to the output of the execution, it encodes all the information\nincluding Cloud source provider. ie., s3://..." - }, - "error": { - "$ref": "#/definitions/coreExecutionError", - "title": "Error information for the execution" - }, - "output_data": { - "$ref": "#/definitions/coreLiteralMap", - "description": "Raw output data produced by this node execution." - }, - "workflow_node_metadata": { - "$ref": "#/definitions/flyteidleventWorkflowNodeMetadata" - }, - "task_node_metadata": { - "$ref": "#/definitions/flyteidleventTaskNodeMetadata" - }, - "parent_task_metadata": { - "$ref": "#/definitions/eventParentTaskExecutionMetadata", - "description": "[To be deprecated] Specifies which task (if any) launched this node." - }, - "parent_node_metadata": { - "$ref": "#/definitions/eventParentNodeExecutionMetadata", - "description": "Specifies the parent node of the current node execution. Node executions at level zero will not have a parent node." - }, - "retry_group": { - "type": "string", - "title": "Retry group to indicate grouping of nodes by retries" - }, - "spec_node_id": { - "type": "string", - "title": "Identifier of the node in the original workflow/graph\nThis maps to value of WorkflowTemplate.nodes[X].id" - }, - "node_name": { - "type": "string", - "title": "Friendly readable name for the node" - }, - "event_version": { - "type": "integer", - "format": "int32" - }, - "is_parent": { - "type": "boolean", - "description": "Whether this node launched a subworkflow." - }, - "is_dynamic": { - "type": "boolean", - "description": "Whether this node yielded a dynamic workflow." - }, - "deck_uri": { - "type": "string", - "title": "String location uniquely identifying where the deck HTML file is\nNativeUrl specifies the url in the format of the configured storage provider (e.g. s3://my-bucket/randomstring/suffix.tar)" - }, - "reported_at": { - "type": "string", - "format": "date-time", - "description": "This timestamp represents the instant when the event was reported by the executing framework. For example,\nwhen first processing a node the `occurred_at` timestamp should be the instant propeller makes progress, so when\nliteral inputs are initially copied. The event however will not be sent until after the copy completes.\nExtracting both of these timestamps facilitates a more accurate portrayal of the evaluation time-series." - }, - "is_array": { - "type": "boolean", - "description": "Indicates if this node is an ArrayNode." - }, - "target_entity": { - "$ref": "#/definitions/coreIdentifier", - "description": "So that Admin doesn't have to rebuild the node execution graph to find the target entity, propeller will fill this\nin optionally - currently this is only filled in for subworkflows. This is the ID of the subworkflow corresponding\nto this node execution. It is difficult to find because Admin only sees one node at a time. A subworkflow could be\nnested multiple layers deep, and you'd need to access the correct workflow template to know the target subworkflow." - }, - "is_in_dynamic_chain": { - "type": "boolean", - "description": "Tasks and subworkflows (but not launch plans) that are run within a dynamic task are effectively independent of\nthe tasks that are registered in Admin's db. Confusingly, they are often identical, but sometimes they are not\neven registered at all. Similar to the target_entity field, at the time Admin receives this event, it has no idea\nif the relevant execution entity is was registered, or dynamic. This field indicates that the target_entity ID,\nas well as task IDs in any corresponding Task Executions, should not be used to looked up the task in Admin's db." - } - }, - "description": "Details about the event that occurred.", - "title": "Details about the event that occurred." - } - }, - "description": "Request to send a notification that a node execution event has occurred." - }, - "AdminServiceCreateTaskEventBody": { - "type": "object", - "properties": { - "request_id": { - "type": "string", - "title": "Unique ID for this request that can be traced between services" - }, - "event": { - "type": "object", - "properties": { - "task_id": { - "$ref": "#/definitions/coreIdentifier", - "description": "ID of the task. In combination with the retryAttempt this will indicate\nthe task execution uniquely for a given parent node execution." - }, - "parent_node_execution_id": { - "type": "object", - "properties": { - "node_id": { - "type": "string" - }, - "execution_id": { - "type": "object", - "properties": { - "project": { - "type": "string", - "description": "Name of the project the resource belongs to." - }, - "domain": { - "type": "string", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." - }, - "name": { - "type": "string", - "description": "User or system provided value for the resource." - } - }, - "title": "Encapsulation of fields that uniquely identifies a Flyte workflow execution" - } - }, - "title": "A task execution is always kicked off by a node execution, the event consumer\nwill use the parent_id to relate the task to it's parent node execution" - }, - "retry_attempt": { - "type": "integer", - "format": "int64", - "title": "retry attempt number for this task, ie., 2 for the second attempt" - }, - "phase": { - "$ref": "#/definitions/coreTaskExecutionPhase", - "title": "Phase associated with the event" - }, - "producer_id": { - "type": "string", - "title": "id of the process that sent this event, mainly for trace debugging" - }, - "logs": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/coreTaskLog" - }, - "title": "log information for the task execution" - }, - "occurred_at": { - "type": "string", - "format": "date-time", - "description": "This timestamp represents when the original event occurred, it is generated\nby the executor of the task." - }, - "input_uri": { - "type": "string", - "description": "URI of the input file, it encodes all the information\nincluding Cloud source provider. ie., s3://..." - }, - "input_data": { - "$ref": "#/definitions/coreLiteralMap", - "description": "Raw input data consumed by this task execution." - }, - "output_uri": { - "type": "string", - "description": "URI to the output of the execution, it will be in a format that encodes all the information\nincluding Cloud source provider. ie., s3://..." - }, - "error": { - "$ref": "#/definitions/coreExecutionError", - "title": "Error information for the execution" - }, - "output_data": { - "$ref": "#/definitions/coreLiteralMap", - "description": "Raw output data produced by this task execution." - }, - "custom_info": { - "type": "object", - "description": "Custom data that the task plugin sends back. This is extensible to allow various plugins in the system." - }, - "phase_version": { - "type": "integer", - "format": "int64", - "description": "Some phases, like RUNNING, can send multiple events with changed metadata (new logs, additional custom_info, etc)\nthat should be recorded regardless of the lack of phase change.\nThe version field should be incremented when metadata changes across the duration of an individual phase." - }, - "reason": { - "type": "string", - "description": "An optional explanation for the phase transition.\nDeprecated: Use reasons instead." - }, - "reasons": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/eventEventReason" - }, - "description": "An optional list of explanations for the phase transition." - }, - "task_type": { - "type": "string", - "description": "A predefined yet extensible Task type identifier. If the task definition is already registered in flyte admin\nthis type will be identical, but not all task executions necessarily use pre-registered definitions and this\ntype is useful to render the task in the UI, filter task executions, etc." - }, - "metadata": { - "$ref": "#/definitions/flyteidleventTaskExecutionMetadata", - "description": "Metadata around how a task was executed." - }, - "event_version": { - "type": "integer", - "format": "int32", - "description": "The event version is used to indicate versioned changes in how data is reported using this\nproto message. For example, event_verison \u003e 0 means that maps tasks report logs using the\nTaskExecutionMetadata ExternalResourceInfo fields for each subtask rather than the TaskLog\nin this message." - }, - "reported_at": { - "type": "string", - "format": "date-time", - "description": "This timestamp represents the instant when the event was reported by the executing framework. For example, a k8s\npod task may be marked completed at (ie. `occurred_at`) the instant the container running user code completes,\nbut this event will not be reported until the pod is marked as completed. Extracting both of these timestamps\nfacilitates a more accurate portrayal of the evaluation time-series." - } - }, - "description": "Details about the event that occurred.", - "title": "Details about the event that occurred." - } - }, - "description": "Request to send a notification that a task execution event has occurred." - }, - "AdminServiceCreateWorkflowBody": { - "type": "object", - "properties": { - "id": { - "type": "object", - "properties": { - "resource_type": { - "$ref": "#/definitions/coreResourceType", - "description": "Identifies the specific type of resource that this identifier corresponds to." - }, - "project": { - "type": "string", - "description": "Name of the project the resource belongs to." - }, - "domain": { - "type": "string", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." - }, - "name": { - "type": "string", - "description": "User provided value for the resource." - }, - "version": { - "type": "string", - "description": "Specific version of the resource." - } - }, - "title": "id represents the unique identifier of the workflow.\n+required" - }, - "spec": { - "$ref": "#/definitions/adminWorkflowSpec", - "title": "Represents the specification for workflow.\n+required" - } - }, - "title": "Represents a request structure to create a revision of a workflow.\nSee :ref:`ref_flyteidl.admin.Workflow` for more details" - }, - "AdminServiceCreateWorkflowEventBody": { - "type": "object", - "properties": { - "request_id": { - "type": "string", - "title": "Unique ID for this request that can be traced between services" - }, - "event": { - "type": "object", - "properties": { - "execution_id": { - "type": "object", - "properties": { - "project": { - "type": "string", - "description": "Name of the project the resource belongs to." - }, - "domain": { - "type": "string", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." - }, - "name": { - "type": "string", - "description": "User or system provided value for the resource." - } - }, - "title": "Workflow execution id" - }, - "producer_id": { - "type": "string", - "title": "the id of the originator (Propeller) of the event" - }, - "phase": { - "$ref": "#/definitions/coreWorkflowExecutionPhase" - }, - "occurred_at": { - "type": "string", - "format": "date-time", - "description": "This timestamp represents when the original event occurred, it is generated\nby the executor of the workflow." - }, - "output_uri": { - "type": "string", - "description": "URL to the output of the execution, it encodes all the information\nincluding Cloud source provider. ie., s3://..." - }, - "error": { - "$ref": "#/definitions/coreExecutionError", - "title": "Error information for the execution" - }, - "output_data": { - "$ref": "#/definitions/coreLiteralMap", - "description": "Raw output data produced by this workflow execution." - } - }, - "description": "Details about the event that occurred.", - "title": "Details about the event that occurred." - } - }, - "description": "Request to send a notification that a workflow execution event has occurred." - }, ->>>>>>> 5ec9fe3cc (Add fields to NodeExecutionEvent (#315)) "AdminServiceDeleteProjectAttributesBody": { "type": "object", "properties": { @@ -11876,9 +7076,9 @@ "coreExecutionEnv": { "type": "object", "properties": { - "id": { + "name": { "type": "string", - "description": "id is a unique identifier for the execution environment." + "description": "name is a human-readable identifier for the execution environment. This is combined with the\nproject, domain, and version to uniquely identify an execution environment." }, "type": { "type": "string", @@ -11891,6 +7091,10 @@ "spec": { "type": "object", "description": "spec is a specification of the environment." + }, + "version": { + "type": "string", + "description": "version is the version of the execution environment. This may be used differently by each\nindividual environment type (ex. auto-generated or manually provided), but is intended to\nallow variance in environment specifications with the same ID." } }, "description": "ExecutionEnv is a message that is used to specify the execution environment." @@ -13507,19 +8711,11 @@ }, "target_entity": { "$ref": "#/definitions/coreIdentifier", -<<<<<<< HEAD - "description": "Holding this field here for now, this will be upstreamed soon.\nSo that Admin doesn't have to rebuild the node execution graph to find the target entity, propeller will fill this\nin optionally - currently this is only filled in for subworkflows. This is the ID of the subworkflow corresponding\nto this node execution. It is difficult to find because Admin only sees one node at a time. A subworkflow could be\nnested multiple layers deep, and you'd need to access the correct workflow template to know the target subworkflow." - }, - "is_in_dynamic_chain": { - "type": "boolean", - "description": "Holding this field here for now, this will be upstreamed soon.\nTasks and subworkflows (but not launch plans) that are run within a dynamic task are effectively independent of\nthe tasks that are registered in Admin's db. Confusingly, they are often identical, but sometimes they are not\neven registered at all. Similar to the target_entity field, at the time Admin receives this event, it has no idea\nif the relevant execution entity is was registered, or dynamic. This field indicates that the target_entity ID,\nas well as task IDs in any corresponding Task Executions, should not be used to looked up the task in Admin's db." -======= "description": "So that Admin doesn't have to rebuild the node execution graph to find the target entity, propeller will fill this\nin optionally - currently this is only filled in for subworkflows. This is the ID of the subworkflow corresponding\nto this node execution. It is difficult to find because Admin only sees one node at a time. A subworkflow could be\nnested multiple layers deep, and you'd need to access the correct workflow template to know the target subworkflow." }, "is_in_dynamic_chain": { "type": "boolean", "description": "Tasks and subworkflows (but not launch plans) that are run within a dynamic task are effectively independent of\nthe tasks that are registered in Admin's db. Confusingly, they are often identical, but sometimes they are not\neven registered at all. Similar to the target_entity field, at the time Admin receives this event, it has no idea\nif the relevant execution entity is was registered, or dynamic. This field indicates that the target_entity ID,\nas well as task IDs in any corresponding Task Executions, should not be used to looked up the task in Admin's db." ->>>>>>> 5ec9fe3cc (Add fields to NodeExecutionEvent (#315)) } } }, diff --git a/flyteidl/gen/pb-es/flyteidl/event/event_pb.ts b/flyteidl/gen/pb-es/flyteidl/event/event_pb.ts index e4245559f6..9e5fd39c1d 100644 --- a/flyteidl/gen/pb-es/flyteidl/event/event_pb.ts +++ b/flyteidl/gen/pb-es/flyteidl/event/event_pb.ts @@ -287,10 +287,6 @@ export class NodeExecutionEvent extends Message { isArray = false; /** -<<<<<<< HEAD - * Holding this field here for now, this will be upstreamed soon. -======= ->>>>>>> 5ec9fe3cc (Add fields to NodeExecutionEvent (#315)) * So that Admin doesn't have to rebuild the node execution graph to find the target entity, propeller will fill this * in optionally - currently this is only filled in for subworkflows. This is the ID of the subworkflow corresponding * to this node execution. It is difficult to find because Admin only sees one node at a time. A subworkflow could be @@ -301,10 +297,6 @@ export class NodeExecutionEvent extends Message { targetEntity?: Identifier; /** -<<<<<<< HEAD - * Holding this field here for now, this will be upstreamed soon. -======= ->>>>>>> 5ec9fe3cc (Add fields to NodeExecutionEvent (#315)) * Tasks and subworkflows (but not launch plans) that are run within a dynamic task are effectively independent of * the tasks that are registered in Admin's db. Confusingly, they are often identical, but sometimes they are not * even registered at all. Similar to the target_entity field, at the time Admin receives this event, it has no idea diff --git a/flyteidl/gen/pb-go/flyteidl/event/event.pb.go b/flyteidl/gen/pb-go/flyteidl/event/event.pb.go index 01c35514a5..963ed02ff6 100644 --- a/flyteidl/gen/pb-go/flyteidl/event/event.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/event/event.pb.go @@ -265,19 +265,11 @@ type NodeExecutionEvent struct { ReportedAt *timestamppb.Timestamp `protobuf:"bytes,21,opt,name=reported_at,json=reportedAt,proto3" json:"reported_at,omitempty"` // Indicates if this node is an ArrayNode. IsArray bool `protobuf:"varint,22,opt,name=is_array,json=isArray,proto3" json:"is_array,omitempty"` -<<<<<<< HEAD - // Holding this field here for now, this will be upstreamed soon. -======= ->>>>>>> 5ec9fe3cc (Add fields to NodeExecutionEvent (#315)) // So that Admin doesn't have to rebuild the node execution graph to find the target entity, propeller will fill this // in optionally - currently this is only filled in for subworkflows. This is the ID of the subworkflow corresponding // to this node execution. It is difficult to find because Admin only sees one node at a time. A subworkflow could be // nested multiple layers deep, and you'd need to access the correct workflow template to know the target subworkflow. TargetEntity *core.Identifier `protobuf:"bytes,23,opt,name=target_entity,json=targetEntity,proto3" json:"target_entity,omitempty"` -<<<<<<< HEAD - // Holding this field here for now, this will be upstreamed soon. -======= ->>>>>>> 5ec9fe3cc (Add fields to NodeExecutionEvent (#315)) // Tasks and subworkflows (but not launch plans) that are run within a dynamic task are effectively independent of // the tasks that are registered in Admin's db. Confusingly, they are often identical, but sometimes they are not // even registered at all. Similar to the target_entity field, at the time Admin receives this event, it has no idea 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 05fd391156..4854a4e895 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json @@ -4034,434 +4034,6 @@ } }, "definitions": { -<<<<<<< HEAD -======= - "AdminServiceCreateExecutionBody": { - "type": "object", - "properties": { - "project": { - "type": "string", - "title": "Name of the project the execution belongs to.\n+required" - }, - "domain": { - "type": "string", - "title": "Name of the domain the execution belongs to.\nA domain can be considered as a subset within a specific project.\n+required" - }, - "name": { - "type": "string", - "title": "User provided value for the resource.\nIf none is provided the system will generate a unique string.\n+optional" - }, - "spec": { - "$ref": "#/definitions/adminExecutionSpec", - "title": "Additional fields necessary to launch the execution.\n+optional" - }, - "inputs": { - "$ref": "#/definitions/coreLiteralMap", - "title": "The inputs required to start the execution. All required inputs must be\nincluded in this map. If not required and not provided, defaults apply.\n+optional" - } - }, - "description": "Request to launch an execution with the given project, domain and optionally-assigned name." - }, - "AdminServiceCreateLaunchPlanBody": { - "type": "object", - "properties": { - "id": { - "type": "object", - "properties": { - "resource_type": { - "$ref": "#/definitions/coreResourceType", - "description": "Identifies the specific type of resource that this identifier corresponds to." - }, - "project": { - "type": "string", - "description": "Name of the project the resource belongs to." - }, - "domain": { - "type": "string", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." - }, - "name": { - "type": "string", - "description": "User provided value for the resource." - }, - "version": { - "type": "string", - "description": "Specific version of the resource." - } - }, - "description": "Uniquely identifies a launch plan entity.", - "title": "Uniquely identifies a launch plan entity." - }, - "spec": { - "$ref": "#/definitions/adminLaunchPlanSpec", - "description": "User-provided launch plan details, including reference workflow, inputs and other metadata." - } - }, - "description": "Request to register a launch plan. The included LaunchPlanSpec may have a complete or incomplete set of inputs required\nto launch a workflow execution. By default all launch plans are registered in state INACTIVE. If you wish to\nset the state to ACTIVE, you must submit a LaunchPlanUpdateRequest, after you have successfully created a launch plan." - }, - "AdminServiceCreateNodeEventBody": { - "type": "object", - "properties": { - "request_id": { - "type": "string", - "title": "Unique ID for this request that can be traced between services" - }, - "event": { - "type": "object", - "properties": { - "id": { - "type": "object", - "properties": { - "node_id": { - "type": "string" - }, - "execution_id": { - "type": "object", - "properties": { - "project": { - "type": "string", - "description": "Name of the project the resource belongs to." - }, - "domain": { - "type": "string", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." - }, - "name": { - "type": "string", - "description": "User or system provided value for the resource." - } - }, - "title": "Encapsulation of fields that uniquely identifies a Flyte workflow execution" - } - }, - "title": "Unique identifier for this node execution" - }, - "producer_id": { - "type": "string", - "title": "the id of the originator (Propeller) of the event" - }, - "phase": { - "$ref": "#/definitions/coreNodeExecutionPhase" - }, - "occurred_at": { - "type": "string", - "format": "date-time", - "description": "This timestamp represents when the original event occurred, it is generated\nby the executor of the node." - }, - "input_uri": { - "type": "string" - }, - "input_data": { - "$ref": "#/definitions/coreLiteralMap", - "description": "Raw input data consumed by this node execution." - }, - "output_uri": { - "type": "string", - "description": "URL to the output of the execution, it encodes all the information\nincluding Cloud source provider. ie., s3://..." - }, - "error": { - "$ref": "#/definitions/coreExecutionError", - "title": "Error information for the execution" - }, - "output_data": { - "$ref": "#/definitions/coreLiteralMap", - "description": "Raw output data produced by this node execution." - }, - "workflow_node_metadata": { - "$ref": "#/definitions/flyteidleventWorkflowNodeMetadata" - }, - "task_node_metadata": { - "$ref": "#/definitions/flyteidleventTaskNodeMetadata" - }, - "parent_task_metadata": { - "$ref": "#/definitions/eventParentTaskExecutionMetadata", - "description": "[To be deprecated] Specifies which task (if any) launched this node." - }, - "parent_node_metadata": { - "$ref": "#/definitions/eventParentNodeExecutionMetadata", - "description": "Specifies the parent node of the current node execution. Node executions at level zero will not have a parent node." - }, - "retry_group": { - "type": "string", - "title": "Retry group to indicate grouping of nodes by retries" - }, - "spec_node_id": { - "type": "string", - "title": "Identifier of the node in the original workflow/graph\nThis maps to value of WorkflowTemplate.nodes[X].id" - }, - "node_name": { - "type": "string", - "title": "Friendly readable name for the node" - }, - "event_version": { - "type": "integer", - "format": "int32" - }, - "is_parent": { - "type": "boolean", - "description": "Whether this node launched a subworkflow." - }, - "is_dynamic": { - "type": "boolean", - "description": "Whether this node yielded a dynamic workflow." - }, - "deck_uri": { - "type": "string", - "title": "String location uniquely identifying where the deck HTML file is\nNativeUrl specifies the url in the format of the configured storage provider (e.g. s3://my-bucket/randomstring/suffix.tar)" - }, - "reported_at": { - "type": "string", - "format": "date-time", - "description": "This timestamp represents the instant when the event was reported by the executing framework. For example,\nwhen first processing a node the `occurred_at` timestamp should be the instant propeller makes progress, so when\nliteral inputs are initially copied. The event however will not be sent until after the copy completes.\nExtracting both of these timestamps facilitates a more accurate portrayal of the evaluation time-series." - }, - "is_array": { - "type": "boolean", - "description": "Indicates if this node is an ArrayNode." - }, - "target_entity": { - "$ref": "#/definitions/coreIdentifier", - "description": "So that Admin doesn't have to rebuild the node execution graph to find the target entity, propeller will fill this\nin optionally - currently this is only filled in for subworkflows. This is the ID of the subworkflow corresponding\nto this node execution. It is difficult to find because Admin only sees one node at a time. A subworkflow could be\nnested multiple layers deep, and you'd need to access the correct workflow template to know the target subworkflow." - }, - "is_in_dynamic_chain": { - "type": "boolean", - "description": "Tasks and subworkflows (but not launch plans) that are run within a dynamic task are effectively independent of\nthe tasks that are registered in Admin's db. Confusingly, they are often identical, but sometimes they are not\neven registered at all. Similar to the target_entity field, at the time Admin receives this event, it has no idea\nif the relevant execution entity is was registered, or dynamic. This field indicates that the target_entity ID,\nas well as task IDs in any corresponding Task Executions, should not be used to looked up the task in Admin's db." - } - }, - "description": "Details about the event that occurred.", - "title": "Details about the event that occurred." - } - }, - "description": "Request to send a notification that a node execution event has occurred." - }, - "AdminServiceCreateTaskEventBody": { - "type": "object", - "properties": { - "request_id": { - "type": "string", - "title": "Unique ID for this request that can be traced between services" - }, - "event": { - "type": "object", - "properties": { - "task_id": { - "$ref": "#/definitions/coreIdentifier", - "description": "ID of the task. In combination with the retryAttempt this will indicate\nthe task execution uniquely for a given parent node execution." - }, - "parent_node_execution_id": { - "type": "object", - "properties": { - "node_id": { - "type": "string" - }, - "execution_id": { - "type": "object", - "properties": { - "project": { - "type": "string", - "description": "Name of the project the resource belongs to." - }, - "domain": { - "type": "string", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." - }, - "name": { - "type": "string", - "description": "User or system provided value for the resource." - } - }, - "title": "Encapsulation of fields that uniquely identifies a Flyte workflow execution" - } - }, - "title": "A task execution is always kicked off by a node execution, the event consumer\nwill use the parent_id to relate the task to it's parent node execution" - }, - "retry_attempt": { - "type": "integer", - "format": "int64", - "title": "retry attempt number for this task, ie., 2 for the second attempt" - }, - "phase": { - "$ref": "#/definitions/coreTaskExecutionPhase", - "title": "Phase associated with the event" - }, - "producer_id": { - "type": "string", - "title": "id of the process that sent this event, mainly for trace debugging" - }, - "logs": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/coreTaskLog" - }, - "title": "log information for the task execution" - }, - "occurred_at": { - "type": "string", - "format": "date-time", - "description": "This timestamp represents when the original event occurred, it is generated\nby the executor of the task." - }, - "input_uri": { - "type": "string", - "description": "URI of the input file, it encodes all the information\nincluding Cloud source provider. ie., s3://..." - }, - "input_data": { - "$ref": "#/definitions/coreLiteralMap", - "description": "Raw input data consumed by this task execution." - }, - "output_uri": { - "type": "string", - "description": "URI to the output of the execution, it will be in a format that encodes all the information\nincluding Cloud source provider. ie., s3://..." - }, - "error": { - "$ref": "#/definitions/coreExecutionError", - "title": "Error information for the execution" - }, - "output_data": { - "$ref": "#/definitions/coreLiteralMap", - "description": "Raw output data produced by this task execution." - }, - "custom_info": { - "type": "object", - "description": "Custom data that the task plugin sends back. This is extensible to allow various plugins in the system." - }, - "phase_version": { - "type": "integer", - "format": "int64", - "description": "Some phases, like RUNNING, can send multiple events with changed metadata (new logs, additional custom_info, etc)\nthat should be recorded regardless of the lack of phase change.\nThe version field should be incremented when metadata changes across the duration of an individual phase." - }, - "reason": { - "type": "string", - "description": "An optional explanation for the phase transition.\nDeprecated: Use reasons instead." - }, - "reasons": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/eventEventReason" - }, - "description": "An optional list of explanations for the phase transition." - }, - "task_type": { - "type": "string", - "description": "A predefined yet extensible Task type identifier. If the task definition is already registered in flyte admin\nthis type will be identical, but not all task executions necessarily use pre-registered definitions and this\ntype is useful to render the task in the UI, filter task executions, etc." - }, - "metadata": { - "$ref": "#/definitions/flyteidleventTaskExecutionMetadata", - "description": "Metadata around how a task was executed." - }, - "event_version": { - "type": "integer", - "format": "int32", - "description": "The event version is used to indicate versioned changes in how data is reported using this\nproto message. For example, event_verison \u003e 0 means that maps tasks report logs using the\nTaskExecutionMetadata ExternalResourceInfo fields for each subtask rather than the TaskLog\nin this message." - }, - "reported_at": { - "type": "string", - "format": "date-time", - "description": "This timestamp represents the instant when the event was reported by the executing framework. For example, a k8s\npod task may be marked completed at (ie. `occurred_at`) the instant the container running user code completes,\nbut this event will not be reported until the pod is marked as completed. Extracting both of these timestamps\nfacilitates a more accurate portrayal of the evaluation time-series." - } - }, - "description": "Details about the event that occurred.", - "title": "Details about the event that occurred." - } - }, - "description": "Request to send a notification that a task execution event has occurred." - }, - "AdminServiceCreateWorkflowBody": { - "type": "object", - "properties": { - "id": { - "type": "object", - "properties": { - "resource_type": { - "$ref": "#/definitions/coreResourceType", - "description": "Identifies the specific type of resource that this identifier corresponds to." - }, - "project": { - "type": "string", - "description": "Name of the project the resource belongs to." - }, - "domain": { - "type": "string", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." - }, - "name": { - "type": "string", - "description": "User provided value for the resource." - }, - "version": { - "type": "string", - "description": "Specific version of the resource." - } - }, - "title": "id represents the unique identifier of the workflow.\n+required" - }, - "spec": { - "$ref": "#/definitions/adminWorkflowSpec", - "title": "Represents the specification for workflow.\n+required" - } - }, - "title": "Represents a request structure to create a revision of a workflow.\nSee :ref:`ref_flyteidl.admin.Workflow` for more details" - }, - "AdminServiceCreateWorkflowEventBody": { - "type": "object", - "properties": { - "request_id": { - "type": "string", - "title": "Unique ID for this request that can be traced between services" - }, - "event": { - "type": "object", - "properties": { - "execution_id": { - "type": "object", - "properties": { - "project": { - "type": "string", - "description": "Name of the project the resource belongs to." - }, - "domain": { - "type": "string", - "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." - }, - "name": { - "type": "string", - "description": "User or system provided value for the resource." - } - }, - "title": "Workflow execution id" - }, - "producer_id": { - "type": "string", - "title": "the id of the originator (Propeller) of the event" - }, - "phase": { - "$ref": "#/definitions/coreWorkflowExecutionPhase" - }, - "occurred_at": { - "type": "string", - "format": "date-time", - "description": "This timestamp represents when the original event occurred, it is generated\nby the executor of the workflow." - }, - "output_uri": { - "type": "string", - "description": "URL to the output of the execution, it encodes all the information\nincluding Cloud source provider. ie., s3://..." - }, - "error": { - "$ref": "#/definitions/coreExecutionError", - "title": "Error information for the execution" - }, - "output_data": { - "$ref": "#/definitions/coreLiteralMap", - "description": "Raw output data produced by this workflow execution." - } - }, - "description": "Details about the event that occurred.", - "title": "Details about the event that occurred." - } - }, - "description": "Request to send a notification that a workflow execution event has occurred." - }, ->>>>>>> 5ec9fe3cc (Add fields to NodeExecutionEvent (#315)) "AdminServiceDeleteProjectAttributesBody": { "type": "object", "properties": { @@ -9139,19 +8711,11 @@ }, "target_entity": { "$ref": "#/definitions/coreIdentifier", -<<<<<<< HEAD - "description": "Holding this field here for now, this will be upstreamed soon.\nSo that Admin doesn't have to rebuild the node execution graph to find the target entity, propeller will fill this\nin optionally - currently this is only filled in for subworkflows. This is the ID of the subworkflow corresponding\nto this node execution. It is difficult to find because Admin only sees one node at a time. A subworkflow could be\nnested multiple layers deep, and you'd need to access the correct workflow template to know the target subworkflow." - }, - "is_in_dynamic_chain": { - "type": "boolean", - "description": "Holding this field here for now, this will be upstreamed soon.\nTasks and subworkflows (but not launch plans) that are run within a dynamic task are effectively independent of\nthe tasks that are registered in Admin's db. Confusingly, they are often identical, but sometimes they are not\neven registered at all. Similar to the target_entity field, at the time Admin receives this event, it has no idea\nif the relevant execution entity is was registered, or dynamic. This field indicates that the target_entity ID,\nas well as task IDs in any corresponding Task Executions, should not be used to looked up the task in Admin's db." -======= "description": "So that Admin doesn't have to rebuild the node execution graph to find the target entity, propeller will fill this\nin optionally - currently this is only filled in for subworkflows. This is the ID of the subworkflow corresponding\nto this node execution. It is difficult to find because Admin only sees one node at a time. A subworkflow could be\nnested multiple layers deep, and you'd need to access the correct workflow template to know the target subworkflow." }, "is_in_dynamic_chain": { "type": "boolean", "description": "Tasks and subworkflows (but not launch plans) that are run within a dynamic task are effectively independent of\nthe tasks that are registered in Admin's db. Confusingly, they are often identical, but sometimes they are not\neven registered at all. Similar to the target_entity field, at the time Admin receives this event, it has no idea\nif the relevant execution entity is was registered, or dynamic. This field indicates that the target_entity ID,\nas well as task IDs in any corresponding Task Executions, should not be used to looked up the task in Admin's db." ->>>>>>> 5ec9fe3cc (Add fields to NodeExecutionEvent (#315)) } } }, diff --git a/flyteidl/gen/pb_rust/flyteidl.event.rs b/flyteidl/gen/pb_rust/flyteidl.event.rs index 500bf6e6c7..281ee07daa 100644 --- a/flyteidl/gen/pb_rust/flyteidl.event.rs +++ b/flyteidl/gen/pb_rust/flyteidl.event.rs @@ -86,20 +86,12 @@ pub struct NodeExecutionEvent { /// Indicates if this node is an ArrayNode. #[prost(bool, tag="22")] pub is_array: bool, -<<<<<<< HEAD - /// Holding this field here for now, this will be upstreamed soon. -======= ->>>>>>> 5ec9fe3cc (Add fields to NodeExecutionEvent (#315)) /// So that Admin doesn't have to rebuild the node execution graph to find the target entity, propeller will fill this /// in optionally - currently this is only filled in for subworkflows. This is the ID of the subworkflow corresponding /// to this node execution. It is difficult to find because Admin only sees one node at a time. A subworkflow could be /// nested multiple layers deep, and you'd need to access the correct workflow template to know the target subworkflow. #[prost(message, optional, tag="23")] pub target_entity: ::core::option::Option, -<<<<<<< HEAD - /// Holding this field here for now, this will be upstreamed soon. -======= ->>>>>>> 5ec9fe3cc (Add fields to NodeExecutionEvent (#315)) /// Tasks and subworkflows (but not launch plans) that are run within a dynamic task are effectively independent of /// the tasks that are registered in Admin's db. Confusingly, they are often identical, but sometimes they are not /// even registered at all. Similar to the target_entity field, at the time Admin receives this event, it has no idea diff --git a/flyteidl/protos/flyteidl/event/event.proto b/flyteidl/protos/flyteidl/event/event.proto index fcbe0e619a..640b4804e9 100644 --- a/flyteidl/protos/flyteidl/event/event.proto +++ b/flyteidl/protos/flyteidl/event/event.proto @@ -115,20 +115,12 @@ message NodeExecutionEvent { // Indicates if this node is an ArrayNode. bool is_array = 22; -<<<<<<< HEAD - // Holding this field here for now, this will be upstreamed soon. -======= ->>>>>>> 5ec9fe3cc (Add fields to NodeExecutionEvent (#315)) // So that Admin doesn't have to rebuild the node execution graph to find the target entity, propeller will fill this // in optionally - currently this is only filled in for subworkflows. This is the ID of the subworkflow corresponding // to this node execution. It is difficult to find because Admin only sees one node at a time. A subworkflow could be // nested multiple layers deep, and you'd need to access the correct workflow template to know the target subworkflow. core.Identifier target_entity = 23; -<<<<<<< HEAD - // Holding this field here for now, this will be upstreamed soon. -======= ->>>>>>> 5ec9fe3cc (Add fields to NodeExecutionEvent (#315)) // Tasks and subworkflows (but not launch plans) that are run within a dynamic task are effectively independent of // the tasks that are registered in Admin's db. Confusingly, they are often identical, but sometimes they are not // even registered at all. Similar to the target_entity field, at the time Admin receives this event, it has no idea diff --git a/flytepropeller/pkg/controller/nodes/common/utils.go b/flytepropeller/pkg/controller/nodes/common/utils.go index 951e7e2b74..04ddc5183d 100644 --- a/flytepropeller/pkg/controller/nodes/common/utils.go +++ b/flytepropeller/pkg/controller/nodes/common/utils.go @@ -49,8 +49,10 @@ func GetTargetEntity(ctx context.Context, nCtx interfaces.NodeExecutionContext) if nCtx.Node().GetWorkflowNode() != nil { subRef := nCtx.Node().GetWorkflowNode().GetSubWorkflowRef() if subRef != nil && len(*subRef) > 0 { - subWorkflow := nCtx.ExecutionContext().FindSubWorkflow(*subRef) - targetEntity = subWorkflow.GetIdentifier() + // todo: uncomment this if Support caching subworkflows and launchplans (v2) is upstreamed + // for now, we can leave it empty + //nCtx.ExecutionContext().FindSubWorkflow(*subRef) + //targetEntity = subWorkflow.GetIdentifier() } else if nCtx.Node().GetWorkflowNode().GetLaunchPlanRefID() != nil { lpRef := nCtx.Node().GetWorkflowNode().GetLaunchPlanRefID() targetEntity = lpRef.Identifier diff --git a/flytepropeller/pkg/controller/nodes/executor_test.go b/flytepropeller/pkg/controller/nodes/executor_test.go index 402a42c1af..783821c9ab 100644 --- a/flytepropeller/pkg/controller/nodes/executor_test.go +++ b/flytepropeller/pkg/controller/nodes/executor_test.go @@ -1682,16 +1682,11 @@ func TestNodeExecutor_AbortHandler(t *testing.T) { execContext := mocks4.ExecutionContext{} execContext.EXPECT().IsInterruptible().Return(false) r := v1alpha1.RawOutputDataConfig{} -<<<<<<< HEAD execContext.EXPECT().GetRawOutputDataConfig().Return(r) execContext.EXPECT().GetExecutionID().Return(v1alpha1.WorkflowExecutionIdentifier{}) execContext.EXPECT().GetLabels().Return(nil) execContext.EXPECT().GetEventVersion().Return(v1alpha1.EventVersion0) -======= - execContext.OnGetRawOutputDataConfig().Return(r) - execContext.OnGetExecutionID().Return(v1alpha1.WorkflowExecutionIdentifier{}) - execContext.OnGetLabels().Return(nil) - execContext.OnGetEventVersion().Return(v1alpha1.EventVersion0) + et := &mocks.ExecutableTask{} et.OnCoreTask().Return(&core.TaskTemplate{ Id: &core.Identifier{ @@ -1702,13 +1697,12 @@ func TestNodeExecutor_AbortHandler(t *testing.T) { Version: "v", }, }) - execContext.OnGetTask("id").Return(et, nil) + execContext.EXPECT().GetTask("id").Return(et, nil) parentInfo := &mocks4.ImmutableParentInfo{} parentInfo.OnGetUniqueID().Return("someunique1") parentInfo.OnCurrentAttempt().Return(uint32(1)) parentInfo.OnIsInDynamicChain().Return(false) - execContext.OnGetParentInfo().Return(parentInfo) ->>>>>>> 5ec9fe3cc (Add fields to NodeExecutionEvent (#315)) + execContext.EXPECT().GetParentInfo().Return(parentInfo) assert.NoError(t, nExec.AbortHandler(ctx, &execContext, &dag, nl, n, "aborting")) }) diff --git a/flytepropeller/pkg/controller/nodes/node_exec_context_test.go b/flytepropeller/pkg/controller/nodes/node_exec_context_test.go index 0ad27d77ea..4614d0f035 100644 --- a/flytepropeller/pkg/controller/nodes/node_exec_context_test.go +++ b/flytepropeller/pkg/controller/nodes/node_exec_context_test.go @@ -153,37 +153,6 @@ func Test_NodeContextDefault(t *testing.T) { assert.Equal(t, w1.Tasks["taskID"].TaskTemplate.Id.Version, taskIdentifier.Version) } -func TestGetTargetEntity_SubWorkflowNode(t *testing.T) { - id := &core.Identifier{ - ResourceType: core.ResourceType_WORKFLOW, - Project: "proj", - Domain: "domain", - Name: "sub-sub", - Version: "v1", - } - exSubWf := &mocks.ExecutableSubWorkflow{} - exSubWf.OnGetIdentifier().Return(id) - ec := mocks2.ExecutionContext{} - ec.OnFindSubWorkflow("sub-workflow").Return(exSubWf) - - subWfNode := &mocks.ExecutableWorkflowNode{} - subWfID := "sub-workflow" - subWfNode.OnGetSubWorkflowRef().Return(&subWfID) - - n := &mocks.ExecutableNode{} - n.OnGetWorkflowNode().Return(subWfNode) - - nCtx := &mocks3.NodeExecutionContext{} - nCtx.OnNode().Return(n) - nCtx.OnExecutionContext().Return(&ec) - - fetchedID := common.GetTargetEntity(context.Background(), nCtx) - assert.Equal(t, id.Project, fetchedID.Project) - assert.Equal(t, id.Domain, fetchedID.Domain) - assert.Equal(t, id.Name, fetchedID.Name) - assert.Equal(t, id.Version, fetchedID.Version) -} - func TestGetTargetEntity_LaunchPlanNode(t *testing.T) { id := &core.Identifier{ ResourceType: core.ResourceType_LAUNCH_PLAN, @@ -210,38 +179,6 @@ func TestGetTargetEntity_LaunchPlanNode(t *testing.T) { assert.Equal(t, id.Version, fetchedID.Version) } -func TestGetTargetEntity_Task(t *testing.T) { - id := &core.Identifier{ - ResourceType: core.ResourceType_TASK, - Project: "proj", - Domain: "domain", - Name: "task", - Version: "v3", - } - - n := &mocks.ExecutableNode{} - n.OnGetWorkflowNode().Return(nil) - taskID := "task-id" - n.OnGetTaskID().Return(&taskID) - - taskTemplate := &core.TaskTemplate{Id: id} - - exTask := &mocks.ExecutableTask{} - exTask.OnCoreTask().Return(taskTemplate) - ec := mocks2.ExecutionContext{} - ec.OnGetTask(taskID).Return(exTask, nil) - - nCtx := &mocks3.NodeExecutionContext{} - nCtx.OnNode().Return(n) - nCtx.OnExecutionContext().Return(&ec) - - fetchedID := common.GetTargetEntity(context.Background(), nCtx) - assert.Equal(t, id.Project, fetchedID.Project) - assert.Equal(t, id.Domain, fetchedID.Domain) - assert.Equal(t, id.Name, fetchedID.Name) - assert.Equal(t, id.Version, fetchedID.Version) -} - func TestGetTargetEntity_EmptyTask(t *testing.T) { n := &mocks.ExecutableNode{} n.OnGetWorkflowNode().Return(nil)