From f66da789503fa266b36d842a072fbd254af5d0c1 Mon Sep 17 00:00:00 2001 From: Fernando Briano Date: Fri, 26 Jan 2024 09:38:25 +0000 Subject: [PATCH 1/3] [API] Adds connector.update_native connector.update_service_type APIs --- .../api/actions/connector/update_native.rb | 67 +++++++++++++++++++ .../actions/connector/update_service_type.rb | 67 +++++++++++++++++++ .../actions/connector/update_native_spec.rb | 38 +++++++++++ .../connector/update_service_type_spec.rb | 38 +++++++++++ 4 files changed, 210 insertions(+) create mode 100644 elasticsearch-api/lib/elasticsearch/api/actions/connector/update_native.rb create mode 100644 elasticsearch-api/lib/elasticsearch/api/actions/connector/update_service_type.rb create mode 100644 elasticsearch-api/spec/elasticsearch/api/actions/connector/update_native_spec.rb create mode 100644 elasticsearch-api/spec/elasticsearch/api/actions/connector/update_service_type_spec.rb diff --git a/elasticsearch-api/lib/elasticsearch/api/actions/connector/update_native.rb b/elasticsearch-api/lib/elasticsearch/api/actions/connector/update_native.rb new file mode 100644 index 0000000000..52e0015fb5 --- /dev/null +++ b/elasticsearch-api/lib/elasticsearch/api/actions/connector/update_native.rb @@ -0,0 +1,67 @@ +# 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 build hash f284cc16f4d4b4289bc679aa1529bb504190fe80 +# @see https://github.com/elastic/elasticsearch/tree/main/rest-api-spec +# +module Elasticsearch + module API + module Connector + module Actions + # Updates the is_native flag of the connector. + # 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] :connector_id The unique identifier of the connector to be updated. + # @option arguments [Hash] :headers Custom HTTP headers + # @option arguments [Hash] :body An object containing the connector's is_native flag (*Required*) + # + # @see https://www.elastic.co/guide/en/elasticsearch/reference/current/connector-apis.html + # + def update_native(arguments = {}) + request_opts = { endpoint: arguments[:endpoint] || "connector.update_native" } + + defined_params = [:connector_id].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 'connector_id' missing" unless arguments[:connector_id] + + arguments = arguments.clone + headers = arguments.delete(:headers) || {} + + body = arguments.delete(:body) + + _connector_id = arguments.delete(:connector_id) + + method = Elasticsearch::API::HTTP_PUT + path = "_connector/#{Utils.__listify(_connector_id)}/_native" + 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/connector/update_service_type.rb b/elasticsearch-api/lib/elasticsearch/api/actions/connector/update_service_type.rb new file mode 100644 index 0000000000..8c0a7717b7 --- /dev/null +++ b/elasticsearch-api/lib/elasticsearch/api/actions/connector/update_service_type.rb @@ -0,0 +1,67 @@ +# 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 build hash f284cc16f4d4b4289bc679aa1529bb504190fe80 +# @see https://github.com/elastic/elasticsearch/tree/main/rest-api-spec +# +module Elasticsearch + module API + module Connector + module Actions + # Updates the service type of the connector. + # 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] :connector_id The unique identifier of the connector to be updated. + # @option arguments [Hash] :headers Custom HTTP headers + # @option arguments [Hash] :body An object containing the connector's service type. (*Required*) + # + # @see https://www.elastic.co/guide/en/elasticsearch/reference/current/connector-apis.html + # + def update_service_type(arguments = {}) + request_opts = { endpoint: arguments[:endpoint] || "connector.update_service_type" } + + defined_params = [:connector_id].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 'connector_id' missing" unless arguments[:connector_id] + + arguments = arguments.clone + headers = arguments.delete(:headers) || {} + + body = arguments.delete(:body) + + _connector_id = arguments.delete(:connector_id) + + method = Elasticsearch::API::HTTP_PUT + path = "_connector/#{Utils.__listify(_connector_id)}/_service_type" + 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/elasticsearch/api/actions/connector/update_native_spec.rb b/elasticsearch-api/spec/elasticsearch/api/actions/connector/update_native_spec.rb new file mode 100644 index 0000000000..4f4ca0d869 --- /dev/null +++ b/elasticsearch-api/spec/elasticsearch/api/actions/connector/update_native_spec.rb @@ -0,0 +1,38 @@ +# 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.connector#update_native' do + let(:expected_args) do + [ + 'PUT', + '_connector/foo/_native', + {}, + {}, + {}, + { + :defined_params=>{ connector_id: 'foo' }, + endpoint: 'connector.update_native' + } + ] + end + + it 'performs the request' do + expect(client_double.connector.update_native(body: {}, connector_id: 'foo')).to be_a Elasticsearch::API::Response + end +end diff --git a/elasticsearch-api/spec/elasticsearch/api/actions/connector/update_service_type_spec.rb b/elasticsearch-api/spec/elasticsearch/api/actions/connector/update_service_type_spec.rb new file mode 100644 index 0000000000..389c7b3515 --- /dev/null +++ b/elasticsearch-api/spec/elasticsearch/api/actions/connector/update_service_type_spec.rb @@ -0,0 +1,38 @@ +# 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.connector#update_service_type' do + let(:expected_args) do + [ + 'PUT', + '_connector/foo/_service_type', + {}, + {}, + {}, + { + :defined_params=>{ connector_id: 'foo' }, + endpoint: 'connector.update_service_type' + } + ] + end + + it 'performs the request' do + expect(client_double.connector.update_service_type(body: {}, connector_id: 'foo')).to be_a Elasticsearch::API::Response + end +end From d7fbe6d759a49a287cf84a3c61bfb0b5b0196996 Mon Sep 17 00:00:00 2001 From: Fernando Briano Date: Fri, 26 Jan 2024 09:44:14 +0000 Subject: [PATCH 2/3] [API] Adds text_structure.test_grok_pattern API --- .../text_structure/test_grok_pattern.rb | 54 +++++++++++++++++++ .../text_structure/test_grok_pattern_spec.rb | 35 ++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 elasticsearch-api/lib/elasticsearch/api/actions/text_structure/test_grok_pattern.rb create mode 100644 elasticsearch-api/spec/elasticsearch/api/actions/text_structure/test_grok_pattern_spec.rb diff --git a/elasticsearch-api/lib/elasticsearch/api/actions/text_structure/test_grok_pattern.rb b/elasticsearch-api/lib/elasticsearch/api/actions/text_structure/test_grok_pattern.rb new file mode 100644 index 0000000000..c6b2f22339 --- /dev/null +++ b/elasticsearch-api/lib/elasticsearch/api/actions/text_structure/test_grok_pattern.rb @@ -0,0 +1,54 @@ +# 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 build hash f284cc16f4d4b4289bc679aa1529bb504190fe80 +# @see https://github.com/elastic/elasticsearch/tree/main/rest-api-spec +# +module Elasticsearch + module API + module TextStructure + module Actions + # Tests a Grok pattern on some text. + # + # @option arguments [String] :ecs_compatibility Optional parameter to specify the compatibility mode with ECS Grok patterns - may be either 'v1' or 'disabled' + # @option arguments [Hash] :headers Custom HTTP headers + # @option arguments [Hash] :body The Grok pattern and text. (*Required*) + # + # @see https://www.elastic.co/guide/en/elasticsearch/reference/current/test-grok-pattern-api.html + # + def test_grok_pattern(arguments = {}) + request_opts = { endpoint: arguments[:endpoint] || "text_structure.test_grok_pattern" } + + 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 = "_text_structure/test_grok_pattern" + params = Utils.process_params(arguments) + + Elasticsearch::API::Response.new( + perform_request(method, path, params, body, headers, request_opts) + ) + end + end + end + end +end diff --git a/elasticsearch-api/spec/elasticsearch/api/actions/text_structure/test_grok_pattern_spec.rb b/elasticsearch-api/spec/elasticsearch/api/actions/text_structure/test_grok_pattern_spec.rb new file mode 100644 index 0000000000..a541750c6a --- /dev/null +++ b/elasticsearch-api/spec/elasticsearch/api/actions/text_structure/test_grok_pattern_spec.rb @@ -0,0 +1,35 @@ +# 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.text_structure#test_grok_pattern' do + let(:expected_args) do + [ + 'POST', + '_text_structure/test_grok_pattern', + {}, + {}, + {}, + { endpoint: 'text_structure.test_grok_pattern' } + ] + end + + it 'performs the request' do + expect(client_double.text_structure.test_grok_pattern(body: {})).to be_a Elasticsearch::API::Response + end +end From 2883a8a7a1217c8cd13b62274e0ee0ed42014c4d Mon Sep 17 00:00:00 2001 From: Fernando Briano Date: Fri, 26 Jan 2024 09:44:28 +0000 Subject: [PATCH 3/3] [API] Migrates find_structure test to RSpec --- .../text_structure/find_structure_spec.rb} | 33 ++++++++----------- 1 file changed, 14 insertions(+), 19 deletions(-) rename elasticsearch-api/spec/{platinum/unit/text_structure/find_structure_test.rb => elasticsearch/api/actions/text_structure/find_structure_spec.rb} (54%) diff --git a/elasticsearch-api/spec/platinum/unit/text_structure/find_structure_test.rb b/elasticsearch-api/spec/elasticsearch/api/actions/text_structure/find_structure_spec.rb similarity index 54% rename from elasticsearch-api/spec/platinum/unit/text_structure/find_structure_test.rb rename to elasticsearch-api/spec/elasticsearch/api/actions/text_structure/find_structure_spec.rb index 0f5ef0aca0..da6c2525a2 100644 --- a/elasticsearch-api/spec/platinum/unit/text_structure/find_structure_test.rb +++ b/elasticsearch-api/spec/elasticsearch/api/actions/text_structure/find_structure_spec.rb @@ -15,26 +15,21 @@ # specific language governing permissions and limitations # under the License. -require 'test_helper' +require 'spec_helper' -module Elasticsearch - module Test - class XPackTextStructureFindStructureTest < Minitest::Test - context "XPack Text Structure: Find structure" do - subject { FakeClient.new } - - should "perform correct request" do - subject.expects(:perform_request).with do |method, url, params, body| - assert_equal('POST', method) - assert_equal('_text_structure/find_structure', url) - assert_equal(params, {}) - assert_equal(body, {}) - true - end.returns(FakeResponse.new) +describe 'client.text_structure#test_grok_pattern' do + let(:expected_args) do + [ + 'POST', + '_text_structure/find_structure', + {}, + {}, + {"Content-Type"=>"application/x-ndjson"}, + { endpoint: 'text_structure.find_structure' } + ] + end - subject.text_structure.find_structure(body: {}) - end - end - end + it 'performs the request' do + expect(client_double.text_structure.find_structure(body: {})).to be_a Elasticsearch::API::Response end end