aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHåkon Hallingstad <hakon@verizonmedia.com>2019-11-18 13:58:22 +0100
committerHåkon Hallingstad <hakon@verizonmedia.com>2019-11-18 13:58:22 +0100
commita7bdbf5e11227c26e4e9e8daa6ae3029521635cf (patch)
tree2e6eac429b394efb587c033d7dc69399b27ae5a7
parent4f8c813ee2473509e297b6eddc3e35af758546e0 (diff)
Support Params for all HTTP methods
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/ConfigServerApi.java23
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/ConfigServerApiImpl.java28
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/ConfigServerApiImplTest.java1
3 files changed, 31 insertions, 21 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/ConfigServerApi.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/ConfigServerApi.java
index 0fa7dbfacae..90768facf34 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/ConfigServerApi.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/ConfigServerApi.java
@@ -22,17 +22,30 @@ public interface ConfigServerApi extends AutoCloseable {
public Optional<Duration> getConnectionTimeout() { return connectionTimeout; }
}
- <T> T get(String path, Class<T> wantedReturnType);
<T> T get(String path, Class<T> wantedReturnType, Params params);
+ default <T> T get(String path, Class<T> wantedReturnType) {
+ return get(path, wantedReturnType, null);
+ }
- <T> T post(String path, Object bodyJsonPojo, Class<T> wantedReturnType);
+ <T> T post(String path, Object bodyJsonPojo, Class<T> wantedReturnType, Params params);
+ default <T> T post(String path, Object bodyJsonPojo, Class<T> wantedReturnType) {
+ return post(path, bodyJsonPojo, wantedReturnType, null);
+ }
- <T> T put(String path, Optional<Object> bodyJsonPojo, Class<T> wantedReturnType);
<T> T put(String path, Optional<Object> bodyJsonPojo, Class<T> wantedReturnType, Params params);
+ default <T> T put(String path, Optional<Object> bodyJsonPojo, Class<T> wantedReturnType) {
+ return put(path, bodyJsonPojo, wantedReturnType, null);
+ }
- <T> T patch(String path, Object bodyJsonPojo, Class<T> wantedReturnType);
+ <T> T patch(String path, Object bodyJsonPojo, Class<T> wantedReturnType, Params params);
+ default <T> T patch(String path, Object bodyJsonPojo, Class<T> wantedReturnType) {
+ return patch(path, bodyJsonPojo, wantedReturnType, null);
+ }
- <T> T delete(String path, Class<T> wantedReturnType);
+ <T> T delete(String path, Class<T> wantedReturnType, Params params);
+ default <T> T delete(String path, Class<T> wantedReturnType) {
+ return delete(path, wantedReturnType, null);
+ }
/** Close the underlying HTTP client and any threads this class might have started. */
@Override
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/ConfigServerApiImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/ConfigServerApiImpl.java
index 4e6b3ed93a5..a066375ce5c 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/ConfigServerApiImpl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/ConfigServerApiImpl.java
@@ -139,11 +139,6 @@ public class ConfigServerApiImpl implements ConfigServerApi {
}
@Override
- public <T> T put(String path, Optional<Object> bodyJsonPojo, Class<T> wantedReturnType) {
- return put(path, bodyJsonPojo, wantedReturnType, null);
- }
-
- @Override
public <T> T put(String path, Optional<Object> bodyJsonPojo, Class<T> wantedReturnType, Params paramsOrNull) {
Optional<RequestConfig> requestConfigOverride = getRequestConfigOverride(paramsOrNull);
return tryAllConfigServers(configServer -> {
@@ -158,9 +153,11 @@ public class ConfigServerApiImpl implements ConfigServerApi {
}
@Override
- public <T> T patch(String path, Object bodyJsonPojo, Class<T> wantedReturnType) {
+ public <T> T patch(String path, Object bodyJsonPojo, Class<T> wantedReturnType, Params paramsOrNull) {
+ Optional<RequestConfig> requestConfigOverride = getRequestConfigOverride(paramsOrNull);
return tryAllConfigServers(configServer -> {
HttpPatch patch = new HttpPatch(configServer.resolve(path));
+ requestConfigOverride.ifPresent(patch::setConfig);
setContentTypeToApplicationJson(patch);
patch.setEntity(new StringEntity(mapper.writeValueAsString(bodyJsonPojo)));
return patch;
@@ -168,14 +165,13 @@ public class ConfigServerApiImpl implements ConfigServerApi {
}
@Override
- public <T> T delete(String path, Class<T> wantedReturnType) {
- return tryAllConfigServers(configServer ->
- new HttpDelete(configServer.resolve(path)), wantedReturnType);
- }
-
- @Override
- public <T> T get(String path, Class<T> wantedReturnType) {
- return get(path, wantedReturnType, null);
+ public <T> T delete(String path, Class<T> wantedReturnType, Params paramsOrNull) {
+ Optional<RequestConfig> requestConfigOverride = getRequestConfigOverride(paramsOrNull);
+ return tryAllConfigServers(configServer -> {
+ HttpDelete delete = new HttpDelete(configServer.resolve(path));
+ requestConfigOverride.ifPresent(delete::setConfig);
+ return delete;
+ }, wantedReturnType);
}
@Override
@@ -189,9 +185,11 @@ public class ConfigServerApiImpl implements ConfigServerApi {
}
@Override
- public <T> T post(String path, Object bodyJsonPojo, Class<T> wantedReturnType) {
+ public <T> T post(String path, Object bodyJsonPojo, Class<T> wantedReturnType, Params paramsOrNull) {
+ Optional<RequestConfig> requestConfigOverride = getRequestConfigOverride(paramsOrNull);
return tryAllConfigServers(configServer -> {
HttpPost post = new HttpPost(configServer.resolve(path));
+ requestConfigOverride.ifPresent(post::setConfig);
setContentTypeToApplicationJson(post);
post.setEntity(new StringEntity(mapper.writeValueAsString(bodyJsonPojo)));
return post;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/ConfigServerApiImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/ConfigServerApiImplTest.java
index 1eee377a845..0909a03749e 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/ConfigServerApiImplTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/ConfigServerApiImplTest.java
@@ -116,7 +116,6 @@ public class ConfigServerApiImplTest {
@Test
public void testBasicSuccessWithCustomTimeouts() {
- // Server is returning 201, no retries.
mockReturnCode = TIMEOUT_RETURN_CODE;
var params = new ConfigServerApi.Params();