From b39420151b9d8502d9b35610de5c41fce7afeb4a Mon Sep 17 00:00:00 2001 From: Laura Trotta <153528055+l-trotta@users.noreply.github.com> Date: Wed, 25 Sep 2024 10:57:12 +0200 Subject: [PATCH] approximate snapshot verify integrity mapping (#2930) --- output/openapi/elasticsearch-openapi.json | 119 ++++++++++++ output/schema/schema.json | 180 ++++++++++++++++++ output/schema/validation-errors.json | 6 + output/typescript/types.ts | 14 ++ .../snapshot.repository_verify_integrity.json | 61 ++++++ ...napshotRepositoryVerifyIntegrityRequest.ts | 43 +++++ ...apshotRepositoryVerifyIntegrityResponse.ts | 24 +++ 7 files changed, 447 insertions(+) create mode 100644 specification/_json_spec/snapshot.repository_verify_integrity.json create mode 100644 specification/snapshot/repository_verify_integrity/SnapshotRepositoryVerifyIntegrityRequest.ts create mode 100644 specification/snapshot/repository_verify_integrity/SnapshotRepositoryVerifyIntegrityResponse.ts diff --git a/output/openapi/elasticsearch-openapi.json b/output/openapi/elasticsearch-openapi.json index c86cf9a60a..6302c42f29 100644 --- a/output/openapi/elasticsearch-openapi.json +++ b/output/openapi/elasticsearch-openapi.json @@ -33298,6 +33298,125 @@ "x-available-since": "0.0.0" } }, + "/_snapshot/{repository}/_verify_integrity": { + "post": { + "tags": [ + "snapshot.repository_verify_integrity" + ], + "summary": "Verifies the integrity of the contents of a snapshot repository", + "externalDocs": { + "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html" + }, + "operationId": "snapshot-repository-verify-integrity", + "parameters": [ + { + "in": "path", + "name": "repository", + "description": "A repository name", + "required": true, + "deprecated": false, + "schema": { + "$ref": "#/components/schemas/_types:Names" + }, + "style": "simple" + }, + { + "in": "query", + "name": "meta_thread_pool_concurrency", + "description": "Number of threads to use for reading metadata", + "deprecated": false, + "schema": { + "type": "number" + }, + "style": "form" + }, + { + "in": "query", + "name": "blob_thread_pool_concurrency", + "description": "Number of threads to use for reading blob contents", + "deprecated": false, + "schema": { + "type": "number" + }, + "style": "form" + }, + { + "in": "query", + "name": "snapshot_verification_concurrency", + "description": "Number of snapshots to verify concurrently", + "deprecated": false, + "schema": { + "type": "number" + }, + "style": "form" + }, + { + "in": "query", + "name": "index_verification_concurrency", + "description": "Number of indices to verify concurrently", + "deprecated": false, + "schema": { + "type": "number" + }, + "style": "form" + }, + { + "in": "query", + "name": "index_snapshot_verification_concurrency", + "description": "Number of snapshots to verify concurrently within each index", + "deprecated": false, + "schema": { + "type": "number" + }, + "style": "form" + }, + { + "in": "query", + "name": "max_failed_shard_snapshots", + "description": "Maximum permitted number of failed shard snapshots", + "deprecated": false, + "schema": { + "type": "number" + }, + "style": "form" + }, + { + "in": "query", + "name": "verify_blob_contents", + "description": "Whether to verify the contents of individual blobs", + "deprecated": false, + "schema": { + "type": "boolean" + }, + "style": "form" + }, + { + "in": "query", + "name": "max_bytes_per_sec", + "description": "Rate limit for individual blob verification", + "deprecated": false, + "schema": { + "type": "string" + }, + "style": "form" + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + } + }, + "x-available-since": "8.16.0", + "x-technical-preview": true + } + }, "/_snapshot/{repository}/{snapshot}/_restore": { "post": { "tags": [ diff --git a/output/schema/schema.json b/output/schema/schema.json index ad7dc7e35a..fdf6b997ef 100644 --- a/output/schema/schema.json +++ b/output/schema/schema.json @@ -17972,6 +17972,38 @@ } ] }, + { + "availability": { + "stack": { + "since": "8.16.0", + "stability": "experimental", + "visibility": "private" + } + }, + "description": "Verifies the integrity of the contents of a snapshot repository", + "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html", + "name": "snapshot.repository_verify_integrity", + "request": { + "name": "Request", + "namespace": "snapshot.repository_verify_integrity" + }, + "requestBodyRequired": false, + "response": { + "name": "Response", + "namespace": "snapshot.repository_verify_integrity" + }, + "responseMediaType": [ + "application/json" + ], + "urls": [ + { + "methods": [ + "POST" + ], + "path": "/_snapshot/{repository}/_verify_integrity" + } + ] + }, { "availability": { "serverless": { @@ -200412,6 +200444,154 @@ }, "specLocation": "snapshot/get_repository/SnapshotGetRepositoryResponse.ts#L23-L25" }, + { + "kind": "request", + "attachedBehaviors": [ + "CommonQueryParameters" + ], + "body": { + "kind": "no_body" + }, + "description": "Verifies the integrity of the contents of a snapshot repository", + "inherits": { + "type": { + "name": "RequestBase", + "namespace": "_types" + } + }, + "name": { + "name": "Request", + "namespace": "snapshot.repository_verify_integrity" + }, + "path": [ + { + "codegenName": "name", + "description": "A repository name", + "name": "repository", + "required": false, + "type": { + "kind": "instance_of", + "type": { + "name": "Names", + "namespace": "_types" + } + } + } + ], + "query": [ + { + "description": "Number of threads to use for reading metadata", + "name": "meta_thread_pool_concurrency", + "required": false, + "type": { + "kind": "instance_of", + "type": { + "name": "integer", + "namespace": "_types" + } + } + }, + { + "description": "Number of threads to use for reading blob contents", + "name": "blob_thread_pool_concurrency", + "required": false, + "type": { + "kind": "instance_of", + "type": { + "name": "integer", + "namespace": "_types" + } + } + }, + { + "description": "Number of snapshots to verify concurrently", + "name": "snapshot_verification_concurrency", + "required": false, + "type": { + "kind": "instance_of", + "type": { + "name": "integer", + "namespace": "_types" + } + } + }, + { + "description": "Number of indices to verify concurrently", + "name": "index_verification_concurrency", + "required": false, + "type": { + "kind": "instance_of", + "type": { + "name": "integer", + "namespace": "_types" + } + } + }, + { + "description": "Number of snapshots to verify concurrently within each index", + "name": "index_snapshot_verification_concurrency", + "required": false, + "type": { + "kind": "instance_of", + "type": { + "name": "integer", + "namespace": "_types" + } + } + }, + { + "description": "Maximum permitted number of failed shard snapshots", + "name": "max_failed_shard_snapshots", + "required": false, + "type": { + "kind": "instance_of", + "type": { + "name": "integer", + "namespace": "_types" + } + } + }, + { + "description": "Whether to verify the contents of individual blobs", + "name": "verify_blob_contents", + "required": false, + "type": { + "kind": "instance_of", + "type": { + "name": "boolean", + "namespace": "_builtins" + } + } + }, + { + "description": "Rate limit for individual blob verification", + "name": "max_bytes_per_sec", + "required": false, + "type": { + "kind": "instance_of", + "type": { + "name": "string", + "namespace": "_builtins" + } + } + } + ], + "specLocation": "snapshot/repository_verify_integrity/SnapshotRepositoryVerifyIntegrityRequest.ts#L24-L43" + }, + { + "kind": "response", + "body": { + "kind": "value", + "value": { + "kind": "user_defined_value" + } + }, + "name": { + "name": "Response", + "namespace": "snapshot.repository_verify_integrity" + }, + "specLocation": "snapshot/repository_verify_integrity/SnapshotRepositoryVerifyIntegrityResponse.ts#L22-L24" + }, { "kind": "request", "attachedBehaviors": [ diff --git a/output/schema/validation-errors.json b/output/schema/validation-errors.json index 081c20aa7b..c5cff32d90 100644 --- a/output/schema/validation-errors.json +++ b/output/schema/validation-errors.json @@ -1194,6 +1194,12 @@ ], "response": [] }, + "snapshot.repository_verify_integrity": { + "request": [ + "Request: path parameter 'repository' is required in the json spec" + ], + "response": [] + }, "tasks.list": { "request": [ "Request: query parameter 'node_id' does not exist in the json spec", diff --git a/output/typescript/types.ts b/output/typescript/types.ts index 510e4b2639..b4030abda8 100644 --- a/output/typescript/types.ts +++ b/output/typescript/types.ts @@ -19059,6 +19059,20 @@ export interface SnapshotGetRepositoryRequest extends RequestBase { export type SnapshotGetRepositoryResponse = Record +export interface SnapshotRepositoryVerifyIntegrityRequest extends RequestBase { + name?: Names + meta_thread_pool_concurrency?: integer + blob_thread_pool_concurrency?: integer + snapshot_verification_concurrency?: integer + index_verification_concurrency?: integer + index_snapshot_verification_concurrency?: integer + max_failed_shard_snapshots?: integer + verify_blob_contents?: boolean + max_bytes_per_sec?: string +} + +export type SnapshotRepositoryVerifyIntegrityResponse = any + export interface SnapshotRestoreRequest extends RequestBase { repository: Name snapshot: Name diff --git a/specification/_json_spec/snapshot.repository_verify_integrity.json b/specification/_json_spec/snapshot.repository_verify_integrity.json new file mode 100644 index 0000000000..11af7355ac --- /dev/null +++ b/specification/_json_spec/snapshot.repository_verify_integrity.json @@ -0,0 +1,61 @@ +{ + "snapshot.repository_verify_integrity": { + "documentation": { + "url": "https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html", + "description": "Verifies the integrity of the contents of a snapshot repository" + }, + "stability": "experimental", + "visibility": "private", + "headers": { + "accept": ["application/json"] + }, + "url": { + "paths": [ + { + "path": "/_snapshot/{repository}/_verify_integrity", + "methods": ["POST"], + "parts": { + "repository": { + "type": "string", + "description": "A repository name" + } + } + } + ] + }, + "params": { + "meta_thread_pool_concurrency": { + "type": "number", + "description": "Number of threads to use for reading metadata" + }, + "blob_thread_pool_concurrency": { + "type": "number", + "description": "Number of threads to use for reading blob contents" + }, + "snapshot_verification_concurrency": { + "type": "number", + "description": "Number of snapshots to verify concurrently" + }, + "index_verification_concurrency": { + "type": "number", + "description": "Number of indices to verify concurrently" + }, + "index_snapshot_verification_concurrency": { + "type": "number", + "description": "Number of snapshots to verify concurrently within each index" + }, + "max_failed_shard_snapshots": { + "type": "number", + "description": "Maximum permitted number of failed shard snapshots" + }, + "verify_blob_contents": { + "type": "boolean", + "description": "Whether to verify the contents of individual blobs" + }, + "max_bytes_per_sec": { + "type": "string", + "description": "Rate limit for individual blob verification" + } + } + } +} diff --git a/specification/snapshot/repository_verify_integrity/SnapshotRepositoryVerifyIntegrityRequest.ts b/specification/snapshot/repository_verify_integrity/SnapshotRepositoryVerifyIntegrityRequest.ts new file mode 100644 index 0000000000..9791c9b216 --- /dev/null +++ b/specification/snapshot/repository_verify_integrity/SnapshotRepositoryVerifyIntegrityRequest.ts @@ -0,0 +1,43 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { RequestBase } from '@_types/Base' +import { Names } from '@_types/common' +import { integer } from '@_types/Numeric' + +/** + * @rest_spec_name snapshot.repository_verify_integrity + * @availability stack since=8.16.0 stability=experimental visibility=private + */ +export interface Request extends RequestBase { + path_parts: { + /** @codegen_name name */ + repository?: Names + } + query_parameters: { + meta_thread_pool_concurrency?: integer + blob_thread_pool_concurrency?: integer + snapshot_verification_concurrency?: integer + index_verification_concurrency?: integer + index_snapshot_verification_concurrency?: integer + max_failed_shard_snapshots?: integer + verify_blob_contents?: boolean + max_bytes_per_sec?: string + } +} diff --git a/specification/snapshot/repository_verify_integrity/SnapshotRepositoryVerifyIntegrityResponse.ts b/specification/snapshot/repository_verify_integrity/SnapshotRepositoryVerifyIntegrityResponse.ts new file mode 100644 index 0000000000..f4ed729ed2 --- /dev/null +++ b/specification/snapshot/repository_verify_integrity/SnapshotRepositoryVerifyIntegrityResponse.ts @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { UserDefinedValue } from '@spec_utils/UserDefinedValue' + +export class Response { + body: UserDefinedValue +}