diff --git a/elasticsearch-api/lib/elasticsearch/api/actions/indices/cancel_migrate_reindex.rb b/elasticsearch-api/lib/elasticsearch/api/actions/indices/cancel_migrate_reindex.rb new file mode 100644 index 0000000000..45cdae60ff --- /dev/null +++ b/elasticsearch-api/lib/elasticsearch/api/actions/indices/cancel_migrate_reindex.rb @@ -0,0 +1,66 @@ +# 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. +# +# Auto generated from commit dcb1c1df18a84a0182caa631b4577d89a4602cfe +# @see https://github.com/elastic/elasticsearch-specification +# +module Elasticsearch + module API + module Indices + module Actions + # Cancel a migration reindex operation. + # Cancel a migration reindex attempt for a data stream or index. + # This functionality is Experimental and may be changed or removed + # completely in a future release. Elastic will take a best effort approach + # to fix any issues, but experimental features are not subject to the + # support SLA of official GA features. + # + # @option arguments [String, Array] :index The index or data stream name (*Required*) + # @option arguments [Hash] :headers Custom HTTP headers + # + # @see https://www.elastic.co/guide/en/elasticsearch/reference/current/migrate-data-stream.html + # + def cancel_migrate_reindex(arguments = {}) + request_opts = { endpoint: arguments[:endpoint] || 'indices.cancel_migrate_reindex' } + + defined_params = [:index].inject({}) do |set_variables, variable| + set_variables[variable] = arguments[variable] if arguments.key?(variable) + set_variables + end + request_opts[:defined_params] = defined_params unless defined_params.empty? + + raise ArgumentError, "Required argument 'index' missing" unless arguments[:index] + + arguments = arguments.clone + headers = arguments.delete(:headers) || {} + + body = nil + + _index = arguments.delete(:index) + + method = Elasticsearch::API::HTTP_POST + path = "_migration/reindex/#{Utils.__listify(_index)}/_cancel" + params = {} + + Elasticsearch::API::Response.new( + perform_request(method, path, params, body, headers, request_opts) + ) + end + end + end + end +end diff --git a/elasticsearch-api/lib/elasticsearch/api/actions/indices/create_from.rb b/elasticsearch-api/lib/elasticsearch/api/actions/indices/create_from.rb new file mode 100644 index 0000000000..e3292b439e --- /dev/null +++ b/elasticsearch-api/lib/elasticsearch/api/actions/indices/create_from.rb @@ -0,0 +1,72 @@ +# 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. +# +# Auto generated from commit dcb1c1df18a84a0182caa631b4577d89a4602cfe +# @see https://github.com/elastic/elasticsearch-specification +# +module Elasticsearch + module API + module Indices + module Actions + # Create an index from a source index. + # Copy the mappings and settings from the source index to a destination index while allowing request settings and mappings to override the source values. + # This functionality is Experimental and may be changed or removed + # completely in a future release. Elastic will take a best effort approach + # to fix any issues, but experimental features are not subject to the + # support SLA of official GA features. + # + # @option arguments [String] :source The source index or data stream name (*Required*) + # @option arguments [String] :dest The destination index or data stream name (*Required*) + # @option arguments [Hash] :headers Custom HTTP headers + # @option arguments [Hash] :body create_from + # + # @see https://www.elastic.co/guide/en/elasticsearch/reference/current/migrate-data-stream.html + # + def create_from(arguments = {}) + request_opts = { endpoint: arguments[:endpoint] || 'indices.create_from' } + + defined_params = [:source, :dest].inject({}) do |set_variables, variable| + set_variables[variable] = arguments[variable] if arguments.key?(variable) + set_variables + end + request_opts[:defined_params] = defined_params unless defined_params.empty? + + raise ArgumentError, "Required argument 'body' missing" unless arguments[:body] + raise ArgumentError, "Required argument 'source' missing" unless arguments[:source] + raise ArgumentError, "Required argument 'dest' missing" unless arguments[:dest] + + arguments = arguments.clone + headers = arguments.delete(:headers) || {} + + body = arguments.delete(:body) + + _source = arguments.delete(:source) + + _dest = arguments.delete(:dest) + + method = Elasticsearch::API::HTTP_PUT + path = "_create_from/#{Utils.__listify(_source)}/#{Utils.__listify(_dest)}" + params = {} + + Elasticsearch::API::Response.new( + perform_request(method, path, params, body, headers, request_opts) + ) + end + end + end + end +end diff --git a/elasticsearch-api/lib/elasticsearch/api/actions/indices/get_migrate_reindex_status.rb b/elasticsearch-api/lib/elasticsearch/api/actions/indices/get_migrate_reindex_status.rb new file mode 100644 index 0000000000..de308edebc --- /dev/null +++ b/elasticsearch-api/lib/elasticsearch/api/actions/indices/get_migrate_reindex_status.rb @@ -0,0 +1,66 @@ +# 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. +# +# Auto generated from commit dcb1c1df18a84a0182caa631b4577d89a4602cfe +# @see https://github.com/elastic/elasticsearch-specification +# +module Elasticsearch + module API + module Indices + module Actions + # Get the migration reindexing status. + # Get the status of a migration reindex attempt for a data stream or index. + # This functionality is Experimental and may be changed or removed + # completely in a future release. Elastic will take a best effort approach + # to fix any issues, but experimental features are not subject to the + # support SLA of official GA features. + # + # @option arguments [String, Array] :index The index or data stream name. (*Required*) + # @option arguments [Hash] :headers Custom HTTP headers + # + # @see https://www.elastic.co/guide/en/elasticsearch/reference/current/migrate-data-stream.html + # + def get_migrate_reindex_status(arguments = {}) + request_opts = { endpoint: arguments[:endpoint] || 'indices.get_migrate_reindex_status' } + + defined_params = [:index].inject({}) do |set_variables, variable| + set_variables[variable] = arguments[variable] if arguments.key?(variable) + set_variables + end + request_opts[:defined_params] = defined_params unless defined_params.empty? + + raise ArgumentError, "Required argument 'index' missing" unless arguments[:index] + + arguments = arguments.clone + headers = arguments.delete(:headers) || {} + + body = nil + + _index = arguments.delete(:index) + + method = Elasticsearch::API::HTTP_GET + path = "_migration/reindex/#{Utils.__listify(_index)}/_status" + params = {} + + Elasticsearch::API::Response.new( + perform_request(method, path, params, body, headers, request_opts) + ) + end + end + end + end +end diff --git a/elasticsearch-api/lib/elasticsearch/api/actions/indices/migrate_reindex.rb b/elasticsearch-api/lib/elasticsearch/api/actions/indices/migrate_reindex.rb new file mode 100644 index 0000000000..de5cc44e6a --- /dev/null +++ b/elasticsearch-api/lib/elasticsearch/api/actions/indices/migrate_reindex.rb @@ -0,0 +1,60 @@ +# 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. +# +# Auto generated from commit dcb1c1df18a84a0182caa631b4577d89a4602cfe +# @see https://github.com/elastic/elasticsearch-specification +# +module Elasticsearch + module API + module Indices + module Actions + # Reindex legacy backing indices. + # Reindex all legacy backing indices for a data stream. + # This operation occurs in a persistent task. + # The persistent task ID is returned immediately and the reindexing work is completed in that task. + # This functionality is Experimental and may be changed or removed + # completely in a future release. Elastic will take a best effort approach + # to fix any issues, but experimental features are not subject to the + # support SLA of official GA features. + # + # @option arguments [Hash] :headers Custom HTTP headers + # @option arguments [Hash] :body reindex + # + # @see https://www.elastic.co/guide/en/elasticsearch/reference/current/migrate-data-stream.html + # + def migrate_reindex(arguments = {}) + request_opts = { endpoint: arguments[:endpoint] || 'indices.migrate_reindex' } + + raise ArgumentError, "Required argument 'body' missing" unless arguments[:body] + + arguments = arguments.clone + headers = arguments.delete(:headers) || {} + + body = arguments.delete(:body) + + method = Elasticsearch::API::HTTP_POST + path = "_migration/reindex" + params = {} + + Elasticsearch::API::Response.new( + perform_request(method, path, params, body, headers, request_opts) + ) + end + end + end + end +end diff --git a/elasticsearch-api/spec/unit/actions/indices/indices_migrate_spec.rb b/elasticsearch-api/spec/unit/actions/indices/indices_migrate_spec.rb new file mode 100644 index 0000000000..7a53de9155 --- /dev/null +++ b/elasticsearch-api/spec/unit/actions/indices/indices_migrate_spec.rb @@ -0,0 +1,88 @@ +# 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. + +require 'spec_helper' + +describe 'client.indices' do + context 'migrate_reindex' do + let(:expected_args) do + [ + 'POST', + '_migration/reindex', + {}, + {}, + {}, + { endpoint: 'indices.migrate_reindex' } + ] + end + + it 'performs the request' do + expect(client_double.indices.migrate_reindex(body: {})).to be_a Elasticsearch::API::Response + end + end + + context 'get_migrate_reindex_status' do + let(:expected_args) do + [ + 'GET', + '_migration/reindex/foo/_status', + {}, + nil, + {}, + { endpoint: 'indices.get_migrate_reindex_status', defined_params: { index: 'foo' } } + ] + end + + it 'performs the request' do + expect(client_double.indices.get_migrate_reindex_status(index: 'foo')).to be_a Elasticsearch::API::Response + end + end + + context 'cancel_migrate_reindex' do + let(:expected_args) do + [ + 'POST', + '_migration/reindex/foo/_cancel', + {}, + nil, + {}, + { endpoint: 'indices.cancel_migrate_reindex', defined_params: { index: 'foo' } } + ] + end + + it 'performs the request' do + expect(client_double.indices.cancel_migrate_reindex(index: 'foo')).to be_a Elasticsearch::API::Response + end + end + + context 'create_from' do + let(:expected_args) do + [ + 'PUT', + '_create_from/foo/bar', + {}, + {}, + {}, + { endpoint: 'indices.create_from', defined_params: { source: 'foo', dest: 'bar' } } + ] + end + + it 'performs the request' do + expect(client_double.indices.create_from(body: {}, source: 'foo', dest: 'bar')).to be_a Elasticsearch::API::Response + end + end +end