HLRC: split xpack request converters (#33444)
In an effort to encapsulate the different clients, the request converters are being shuffled around. This splits the XPackClient request converters.
This commit is contained in:
parent
43592305a1
commit
8d61457d9c
|
@ -98,8 +98,9 @@ import org.elasticsearch.index.reindex.AbstractBulkByScrollRequest;
|
||||||
import org.elasticsearch.index.reindex.DeleteByQueryRequest;
|
import org.elasticsearch.index.reindex.DeleteByQueryRequest;
|
||||||
import org.elasticsearch.index.reindex.ReindexRequest;
|
import org.elasticsearch.index.reindex.ReindexRequest;
|
||||||
import org.elasticsearch.index.reindex.UpdateByQueryRequest;
|
import org.elasticsearch.index.reindex.UpdateByQueryRequest;
|
||||||
import org.elasticsearch.protocol.xpack.XPackInfoRequest;
|
import org.elasticsearch.protocol.xpack.license.DeleteLicenseRequest;
|
||||||
import org.elasticsearch.protocol.xpack.XPackUsageRequest;
|
import org.elasticsearch.protocol.xpack.license.GetLicenseRequest;
|
||||||
|
import org.elasticsearch.protocol.xpack.license.PutLicenseRequest;
|
||||||
import org.elasticsearch.protocol.xpack.watcher.DeleteWatchRequest;
|
import org.elasticsearch.protocol.xpack.watcher.DeleteWatchRequest;
|
||||||
import org.elasticsearch.protocol.xpack.watcher.PutWatchRequest;
|
import org.elasticsearch.protocol.xpack.watcher.PutWatchRequest;
|
||||||
import org.elasticsearch.rest.action.search.RestSearchAction;
|
import org.elasticsearch.rest.action.search.RestSearchAction;
|
||||||
|
@ -113,10 +114,8 @@ import java.io.IOException;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
import java.nio.charset.Charset;
|
import java.nio.charset.Charset;
|
||||||
import java.util.EnumSet;
|
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.StringJoiner;
|
import java.util.StringJoiner;
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
final class RequestConverters {
|
final class RequestConverters {
|
||||||
static final XContentType REQUEST_BODY_CONTENT_TYPE = XContentType.JSON;
|
static final XContentType REQUEST_BODY_CONTENT_TYPE = XContentType.JSON;
|
||||||
|
@ -976,19 +975,6 @@ final class RequestConverters {
|
||||||
return request;
|
return request;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Request xPackInfo(XPackInfoRequest infoRequest) {
|
|
||||||
Request request = new Request(HttpGet.METHOD_NAME, "/_xpack");
|
|
||||||
if (false == infoRequest.isVerbose()) {
|
|
||||||
request.addParameter("human", "false");
|
|
||||||
}
|
|
||||||
if (false == infoRequest.getCategories().equals(EnumSet.allOf(XPackInfoRequest.Category.class))) {
|
|
||||||
request.addParameter("categories", infoRequest.getCategories().stream()
|
|
||||||
.map(c -> c.toString().toLowerCase(Locale.ROOT))
|
|
||||||
.collect(Collectors.joining(",")));
|
|
||||||
}
|
|
||||||
return request;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Request xPackWatcherPutWatch(PutWatchRequest putWatchRequest) {
|
static Request xPackWatcherPutWatch(PutWatchRequest putWatchRequest) {
|
||||||
String endpoint = new EndpointBuilder()
|
String endpoint = new EndpointBuilder()
|
||||||
.addPathPartAsIs("_xpack")
|
.addPathPartAsIs("_xpack")
|
||||||
|
@ -1020,10 +1006,38 @@ final class RequestConverters {
|
||||||
return request;
|
return request;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Request xpackUsage(XPackUsageRequest usageRequest) {
|
static Request putLicense(PutLicenseRequest putLicenseRequest) {
|
||||||
Request request = new Request(HttpGet.METHOD_NAME, "/_xpack/usage");
|
String endpoint = new EndpointBuilder()
|
||||||
|
.addPathPartAsIs("_xpack")
|
||||||
|
.addPathPartAsIs("license")
|
||||||
|
.build();
|
||||||
|
Request request = new Request(HttpPut.METHOD_NAME, endpoint);
|
||||||
Params parameters = new Params(request);
|
Params parameters = new Params(request);
|
||||||
parameters.withMasterTimeout(usageRequest.masterNodeTimeout());
|
parameters.withTimeout(putLicenseRequest.timeout());
|
||||||
|
parameters.withMasterTimeout(putLicenseRequest.masterNodeTimeout());
|
||||||
|
if (putLicenseRequest.isAcknowledge()) {
|
||||||
|
parameters.putParam("acknowledge", "true");
|
||||||
|
}
|
||||||
|
request.setJsonEntity(putLicenseRequest.getLicenseDefinition());
|
||||||
|
return request;
|
||||||
|
}
|
||||||
|
|
||||||
|
static Request getLicense(GetLicenseRequest getLicenseRequest) {
|
||||||
|
String endpoint = new EndpointBuilder()
|
||||||
|
.addPathPartAsIs("_xpack")
|
||||||
|
.addPathPartAsIs("license")
|
||||||
|
.build();
|
||||||
|
Request request = new Request(HttpGet.METHOD_NAME, endpoint);
|
||||||
|
Params parameters = new Params(request);
|
||||||
|
parameters.withLocal(getLicenseRequest.local());
|
||||||
|
return request;
|
||||||
|
}
|
||||||
|
|
||||||
|
static Request deleteLicense(DeleteLicenseRequest deleteLicenseRequest) {
|
||||||
|
Request request = new Request(HttpDelete.METHOD_NAME, "/_xpack/license");
|
||||||
|
Params parameters = new Params(request);
|
||||||
|
parameters.withTimeout(deleteLicenseRequest.timeout());
|
||||||
|
parameters.withMasterTimeout(deleteLicenseRequest.masterNodeTimeout());
|
||||||
return request;
|
return request;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -56,7 +56,7 @@ public final class XPackClient {
|
||||||
* @throws IOException in case there is a problem sending the request or parsing back the response
|
* @throws IOException in case there is a problem sending the request or parsing back the response
|
||||||
*/
|
*/
|
||||||
public XPackInfoResponse info(XPackInfoRequest request, RequestOptions options) throws IOException {
|
public XPackInfoResponse info(XPackInfoRequest request, RequestOptions options) throws IOException {
|
||||||
return restHighLevelClient.performRequestAndParseEntity(request, RequestConverters::xPackInfo, options,
|
return restHighLevelClient.performRequestAndParseEntity(request, XPackRequestConverters::info, options,
|
||||||
XPackInfoResponse::fromXContent, emptySet());
|
XPackInfoResponse::fromXContent, emptySet());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -70,7 +70,7 @@ public final class XPackClient {
|
||||||
*/
|
*/
|
||||||
public void infoAsync(XPackInfoRequest request, RequestOptions options,
|
public void infoAsync(XPackInfoRequest request, RequestOptions options,
|
||||||
ActionListener<XPackInfoResponse> listener) {
|
ActionListener<XPackInfoResponse> listener) {
|
||||||
restHighLevelClient.performRequestAsyncAndParseEntity(request, RequestConverters::xPackInfo, options,
|
restHighLevelClient.performRequestAsyncAndParseEntity(request, XPackRequestConverters::info, options,
|
||||||
XPackInfoResponse::fromXContent, listener, emptySet());
|
XPackInfoResponse::fromXContent, listener, emptySet());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,7 +81,7 @@ public final class XPackClient {
|
||||||
* @throws IOException in case there is a problem sending the request or parsing back the response
|
* @throws IOException in case there is a problem sending the request or parsing back the response
|
||||||
*/
|
*/
|
||||||
public XPackUsageResponse usage(XPackUsageRequest request, RequestOptions options) throws IOException {
|
public XPackUsageResponse usage(XPackUsageRequest request, RequestOptions options) throws IOException {
|
||||||
return restHighLevelClient.performRequestAndParseEntity(request, RequestConverters::xpackUsage, options,
|
return restHighLevelClient.performRequestAndParseEntity(request, XPackRequestConverters::usage, options,
|
||||||
XPackUsageResponse::fromXContent, emptySet());
|
XPackUsageResponse::fromXContent, emptySet());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@ public final class XPackClient {
|
||||||
* @param listener the listener to be notified upon request completion
|
* @param listener the listener to be notified upon request completion
|
||||||
*/
|
*/
|
||||||
public void usageAsync(XPackUsageRequest request, RequestOptions options, ActionListener<XPackUsageResponse> listener) {
|
public void usageAsync(XPackUsageRequest request, RequestOptions options, ActionListener<XPackUsageResponse> listener) {
|
||||||
restHighLevelClient.performRequestAsyncAndParseEntity(request, RequestConverters::xpackUsage, options,
|
restHighLevelClient.performRequestAsyncAndParseEntity(request, XPackRequestConverters::usage, options,
|
||||||
XPackUsageResponse::fromXContent, listener, emptySet());
|
XPackUsageResponse::fromXContent, listener, emptySet());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,51 @@
|
||||||
|
/*
|
||||||
|
* Licensed to Elasticsearch under one or more contributor
|
||||||
|
* license agreements. See the NOTICE file distributed with
|
||||||
|
* this work for additional information regarding copyright
|
||||||
|
* ownership. Elasticsearch 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.elasticsearch.client;
|
||||||
|
|
||||||
|
import org.apache.http.client.methods.HttpGet;
|
||||||
|
import org.elasticsearch.protocol.xpack.XPackInfoRequest;
|
||||||
|
import org.elasticsearch.protocol.xpack.XPackUsageRequest;
|
||||||
|
|
||||||
|
import java.util.EnumSet;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
public class XPackRequestConverters {
|
||||||
|
|
||||||
|
static Request info(XPackInfoRequest infoRequest) {
|
||||||
|
Request request = new Request(HttpGet.METHOD_NAME, "/_xpack");
|
||||||
|
if (false == infoRequest.isVerbose()) {
|
||||||
|
request.addParameter("human", "false");
|
||||||
|
}
|
||||||
|
if (false == infoRequest.getCategories().equals(EnumSet.allOf(XPackInfoRequest.Category.class))) {
|
||||||
|
request.addParameter("categories", infoRequest.getCategories().stream()
|
||||||
|
.map(c -> c.toString().toLowerCase(Locale.ROOT))
|
||||||
|
.collect(Collectors.joining(",")));
|
||||||
|
}
|
||||||
|
return request;
|
||||||
|
}
|
||||||
|
|
||||||
|
static Request usage(XPackUsageRequest usageRequest) {
|
||||||
|
Request request = new Request(HttpGet.METHOD_NAME, "/_xpack/usage");
|
||||||
|
RequestConverters.Params parameters = new RequestConverters.Params(request);
|
||||||
|
parameters.withMasterTimeout(usageRequest.masterNodeTimeout());
|
||||||
|
return request;
|
||||||
|
}
|
||||||
|
}
|
|
@ -112,7 +112,6 @@ import org.elasticsearch.index.reindex.DeleteByQueryRequest;
|
||||||
import org.elasticsearch.index.reindex.ReindexRequest;
|
import org.elasticsearch.index.reindex.ReindexRequest;
|
||||||
import org.elasticsearch.index.reindex.RemoteInfo;
|
import org.elasticsearch.index.reindex.RemoteInfo;
|
||||||
import org.elasticsearch.index.reindex.UpdateByQueryRequest;
|
import org.elasticsearch.index.reindex.UpdateByQueryRequest;
|
||||||
import org.elasticsearch.protocol.xpack.XPackInfoRequest;
|
|
||||||
import org.elasticsearch.protocol.xpack.watcher.DeleteWatchRequest;
|
import org.elasticsearch.protocol.xpack.watcher.DeleteWatchRequest;
|
||||||
import org.elasticsearch.protocol.xpack.watcher.PutWatchRequest;
|
import org.elasticsearch.protocol.xpack.watcher.PutWatchRequest;
|
||||||
import org.elasticsearch.rest.action.search.RestSearchAction;
|
import org.elasticsearch.rest.action.search.RestSearchAction;
|
||||||
|
@ -140,7 +139,6 @@ import java.nio.charset.StandardCharsets;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.EnumSet;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -2259,37 +2257,6 @@ public class RequestConvertersTests extends ESTestCase {
|
||||||
+ "previous requests have content-type [" + xContentType + "]", exception.getMessage());
|
+ "previous requests have content-type [" + xContentType + "]", exception.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testXPackInfo() {
|
|
||||||
XPackInfoRequest infoRequest = new XPackInfoRequest();
|
|
||||||
Map<String, String> expectedParams = new HashMap<>();
|
|
||||||
infoRequest.setVerbose(randomBoolean());
|
|
||||||
if (false == infoRequest.isVerbose()) {
|
|
||||||
expectedParams.put("human", "false");
|
|
||||||
}
|
|
||||||
int option = between(0, 2);
|
|
||||||
switch (option) {
|
|
||||||
case 0:
|
|
||||||
infoRequest.setCategories(EnumSet.allOf(XPackInfoRequest.Category.class));
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
infoRequest.setCategories(EnumSet.of(XPackInfoRequest.Category.FEATURES));
|
|
||||||
expectedParams.put("categories", "features");
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
infoRequest.setCategories(EnumSet.of(XPackInfoRequest.Category.FEATURES, XPackInfoRequest.Category.BUILD));
|
|
||||||
expectedParams.put("categories", "build,features");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw new IllegalArgumentException("invalid option [" + option + "]");
|
|
||||||
}
|
|
||||||
|
|
||||||
Request request = RequestConverters.xPackInfo(infoRequest);
|
|
||||||
assertEquals(HttpGet.METHOD_NAME, request.getMethod());
|
|
||||||
assertEquals("/_xpack", request.getEndpoint());
|
|
||||||
assertNull(request.getEntity());
|
|
||||||
assertEquals(expectedParams, request.getParameters());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testXPackPutWatch() throws Exception {
|
public void testXPackPutWatch() throws Exception {
|
||||||
PutWatchRequest putWatchRequest = new PutWatchRequest();
|
PutWatchRequest putWatchRequest = new PutWatchRequest();
|
||||||
String watchId = randomAlphaOfLength(10);
|
String watchId = randomAlphaOfLength(10);
|
||||||
|
|
|
@ -0,0 +1,63 @@
|
||||||
|
/*
|
||||||
|
* Licensed to Elasticsearch under one or more contributor
|
||||||
|
* license agreements. See the NOTICE file distributed with
|
||||||
|
* this work for additional information regarding copyright
|
||||||
|
* ownership. Elasticsearch 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.elasticsearch.client;
|
||||||
|
|
||||||
|
import org.apache.http.client.methods.HttpGet;
|
||||||
|
import org.elasticsearch.protocol.xpack.XPackInfoRequest;
|
||||||
|
import org.elasticsearch.test.ESTestCase;
|
||||||
|
import org.junit.Assert;
|
||||||
|
|
||||||
|
import java.util.EnumSet;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class XPackRequestConvertersTests extends ESTestCase {
|
||||||
|
|
||||||
|
public void testXPackInfo() {
|
||||||
|
XPackInfoRequest infoRequest = new XPackInfoRequest();
|
||||||
|
Map<String, String> expectedParams = new HashMap<>();
|
||||||
|
infoRequest.setVerbose(ESTestCase.randomBoolean());
|
||||||
|
if (false == infoRequest.isVerbose()) {
|
||||||
|
expectedParams.put("human", "false");
|
||||||
|
}
|
||||||
|
int option = ESTestCase.between(0, 2);
|
||||||
|
switch (option) {
|
||||||
|
case 0:
|
||||||
|
infoRequest.setCategories(EnumSet.allOf(XPackInfoRequest.Category.class));
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
infoRequest.setCategories(EnumSet.of(XPackInfoRequest.Category.FEATURES));
|
||||||
|
expectedParams.put("categories", "features");
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
infoRequest.setCategories(EnumSet.of(XPackInfoRequest.Category.FEATURES, XPackInfoRequest.Category.BUILD));
|
||||||
|
expectedParams.put("categories", "build,features");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new IllegalArgumentException("invalid option [" + option + "]");
|
||||||
|
}
|
||||||
|
|
||||||
|
Request request = XPackRequestConverters.info(infoRequest);
|
||||||
|
Assert.assertEquals(HttpGet.METHOD_NAME, request.getMethod());
|
||||||
|
Assert.assertEquals("/_xpack", request.getEndpoint());
|
||||||
|
Assert.assertNull(request.getEntity());
|
||||||
|
Assert.assertEquals(expectedParams, request.getParameters());
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue