From f96fda59e0d5f92ad542499fc6f66de21182e2e5 Mon Sep 17 00:00:00 2001 From: Shivam Saraf Date: Fri, 31 Jan 2025 11:55:50 -0500 Subject: [PATCH 1/2] update metadata api --- openapi/openapiv2.json | 136 ++++++++++++++++++ openapi/openapiv3.yaml | 104 ++++++++++++++ .../workflowservice/v1/request_response.proto | 15 ++ temporal/api/workflowservice/v1/service.proto | 11 ++ 4 files changed, 266 insertions(+) diff --git a/openapi/openapiv2.json b/openapi/openapiv2.json index de88041a..837bdc4e 100644 --- a/openapi/openapiv2.json +++ b/openapi/openapiv2.json @@ -2047,6 +2047,58 @@ ] } }, + "/api/v1/namespaces/{namespace}/worker-deployments/{version.deploymentName}/version/{version.buildId}/update-metadata": { + "post": { + "operationId": "UpdateWorkerVersionMetadata2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1UpdateWorkerVersionMetadataResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "version.deploymentName", + "description": "The name of the Deployment this version belongs too.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "version.buildId", + "description": "Build ID uniquely identifies the Deployment Version within a Deployment, but the same Build\nID can be used in multiple Deployments.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/WorkflowServiceUpdateWorkerVersionMetadataBody" + } + } + ], + "tags": [ + "WorkflowService" + ] + } + }, "/api/v1/namespaces/{namespace}/worker-task-reachability": { "get": { "summary": "Deprecated. Use `DescribeTaskQueue`.", @@ -5294,6 +5346,58 @@ ] } }, + "/namespaces/{namespace}/worker-deployments/{version.deploymentName}/version/{version.buildId}/update-metadata": { + "post": { + "operationId": "UpdateWorkerVersionMetadata", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1UpdateWorkerVersionMetadataResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "version.deploymentName", + "description": "The name of the Deployment this version belongs too.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "version.buildId", + "description": "Build ID uniquely identifies the Deployment Version within a Deployment, but the same Build\nID can be used in multiple Deployments.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/WorkflowServiceUpdateWorkerVersionMetadataBody" + } + } + ], + "tags": [ + "WorkflowService" + ] + } + }, "/namespaces/{namespace}/worker-task-reachability": { "get": { "summary": "Deprecated. Use `DescribeTaskQueue`.", @@ -7441,6 +7545,29 @@ } } }, + "WorkflowServiceUpdateWorkerVersionMetadataBody": { + "type": "object", + "properties": { + "version": { + "type": "object", + "description": "Identifies a Worker Deployment Version. The combination of `deployment_name` and `build_id`\nserve as the identifier." + }, + "upsertEntries": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/v1Payload" + } + }, + "removeEntries": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of keys to remove from the metadata." + } + }, + "description": "Used to update the user-defined metadata of a Worker Deployment Version." + }, "WorkflowServiceUpdateWorkflowExecutionBody": { "type": "object", "properties": { @@ -13479,6 +13606,15 @@ "type": "object", "title": "[cleanup-wv-pre-release]" }, + "v1UpdateWorkerVersionMetadataResponse": { + "type": "object", + "properties": { + "metadata": { + "$ref": "#/definitions/v1VersionMetadata", + "description": "Full metadata after performing the update." + } + } + }, "v1UpdateWorkerVersioningRulesResponse": { "type": "object", "properties": { diff --git a/openapi/openapiv3.yaml b/openapi/openapiv3.yaml index 8f36508e..c050eb00 100644 --- a/openapi/openapiv3.yaml +++ b/openapi/openapiv3.yaml @@ -1820,6 +1820,46 @@ paths: application/json: schema: $ref: '#/components/schemas/Status' + /api/v1/namespaces/{namespace}/worker-deployments/{version.deployment_name}/version/{version.build_id}/update-metadata: + post: + tags: + - WorkflowService + operationId: UpdateWorkerVersionMetadata + parameters: + - name: namespace + in: path + required: true + schema: + type: string + - name: version.deployment_name + in: path + required: true + schema: + type: string + - name: version.build_id + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateWorkerVersionMetadataRequest' + required: true + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateWorkerVersionMetadataResponse' + default: + description: Default error response + content: + application/json: + schema: + $ref: '#/components/schemas/Status' /api/v1/namespaces/{namespace}/worker-task-reachability: get: tags: @@ -4717,6 +4757,46 @@ paths: application/json: schema: $ref: '#/components/schemas/Status' + /namespaces/{namespace}/worker-deployments/{version.deployment_name}/version/{version.build_id}/update-metadata: + post: + tags: + - WorkflowService + operationId: UpdateWorkerVersionMetadata + parameters: + - name: namespace + in: path + required: true + schema: + type: string + - name: version.deployment_name + in: path + required: true + schema: + type: string + - name: version.build_id + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateWorkerVersionMetadataRequest' + required: true + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateWorkerVersionMetadataResponse' + default: + description: Default error response + content: + application/json: + schema: + $ref: '#/components/schemas/Status' /namespaces/{namespace}/worker-task-reachability: get: tags: @@ -10888,6 +10968,30 @@ components: UpdateScheduleResponse: type: object properties: {} + UpdateWorkerVersionMetadataRequest: + type: object + properties: + namespace: + type: string + version: + $ref: '#/components/schemas/WorkerDeploymentVersion' + upsertEntries: + type: object + additionalProperties: + $ref: '#/components/schemas/Payload' + removeEntries: + type: array + items: + type: string + description: List of keys to remove from the metadata. + description: Used to update the user-defined metadata of a Worker Deployment Version. + UpdateWorkerVersionMetadataResponse: + type: object + properties: + metadata: + allOf: + - $ref: '#/components/schemas/VersionMetadata' + description: Full metadata after performing the update. UpdateWorkflowExecutionOptionsRequest: type: object properties: diff --git a/temporal/api/workflowservice/v1/request_response.proto b/temporal/api/workflowservice/v1/request_response.proto index f8ed56ad..29ab5df5 100644 --- a/temporal/api/workflowservice/v1/request_response.proto +++ b/temporal/api/workflowservice/v1/request_response.proto @@ -2142,6 +2142,21 @@ message DeleteWorkerDeploymentRequest { message DeleteWorkerDeploymentResponse { } +// Used to update the user-defined metadata of a Worker Deployment Version. +message UpdateWorkerVersionMetadataRequest { + string namespace = 1; + temporal.api.deployment.v1.WorkerDeploymentVersion version = 2; + map upsert_entries = 3; + // List of keys to remove from the metadata. + repeated string remove_entries = 4; +} + +message UpdateWorkerVersionMetadataResponse { + // Full metadata after performing the update. + temporal.api.deployment.v1.VersionMetadata metadata = 1; +} + + // Returns the Current Deployment of a deployment series. // [cleanup-wv-pre-release] Pre-release deployment APIs, clean up later message GetCurrentDeploymentRequest { diff --git a/temporal/api/workflowservice/v1/service.proto b/temporal/api/workflowservice/v1/service.proto index d5441d65..5afec82a 100644 --- a/temporal/api/workflowservice/v1/service.proto +++ b/temporal/api/workflowservice/v1/service.proto @@ -917,6 +917,17 @@ service WorkflowService { }; } + rpc UpdateWorkerVersionMetadata (UpdateWorkerVersionMetadataRequest) returns (UpdateWorkerVersionMetadataResponse) { + option (google.api.http) = { + post: "/namespaces/{namespace}/worker-deployments/{version.deployment_name}/version/{version.build_id}/update-metadata" + body: "*" + additional_bindings { + post: "/api/v1/namespaces/{namespace}/worker-deployments/{version.deployment_name}/version/{version.build_id}/update-metadata" + body: "*" + } + }; + } + // Invokes the specified Update function on user Workflow code. rpc UpdateWorkflowExecution(UpdateWorkflowExecutionRequest) returns (UpdateWorkflowExecutionResponse) { option (google.api.http) = { From 59d4c676ca3ac94909c05050e767ea5ec0e19f9d Mon Sep 17 00:00:00 2001 From: Shivam Saraf Date: Fri, 31 Jan 2025 11:58:16 -0500 Subject: [PATCH 2/2] fix weird spacing issue --- temporal/api/workflowservice/v1/request_response.proto | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/temporal/api/workflowservice/v1/request_response.proto b/temporal/api/workflowservice/v1/request_response.proto index 29ab5df5..d4b2f7dc 100644 --- a/temporal/api/workflowservice/v1/request_response.proto +++ b/temporal/api/workflowservice/v1/request_response.proto @@ -2144,7 +2144,7 @@ message DeleteWorkerDeploymentResponse { // Used to update the user-defined metadata of a Worker Deployment Version. message UpdateWorkerVersionMetadataRequest { - string namespace = 1; + string namespace = 1; temporal.api.deployment.v1.WorkerDeploymentVersion version = 2; map upsert_entries = 3; // List of keys to remove from the metadata. @@ -2152,8 +2152,8 @@ message UpdateWorkerVersionMetadataRequest { } message UpdateWorkerVersionMetadataResponse { - // Full metadata after performing the update. - temporal.api.deployment.v1.VersionMetadata metadata = 1; + // Full metadata after performing the update. + temporal.api.deployment.v1.VersionMetadata metadata = 1; }