summaryrefslogtreecommitdiffstats
path: root/configserver
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2019-07-15 15:20:34 +0200
committerGitHub <noreply@github.com>2019-07-15 15:20:34 +0200
commit80b96d1e3bc84828f67850137b89e1f96eccdd89 (patch)
tree3f1c299eb94c0b0507b5cdfe6abf20ff3858ce90 /configserver
parent247395232187732f7bc416c6c8ace8029d42329e (diff)
parentc670c76c7c5990de0c576d9a99fbfd05c08e49f1 (diff)
Merge pull request #10040 from vespa-engine/bjorncs/configserver-https
Bjorncs/configserver https
Diffstat (limited to 'configserver')
-rw-r--r--configserver/pom.xml6
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/application/ConfigConvergenceChecker.java17
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/serviceview/ConfigServerLocation.java18
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/serviceview/StateResource.java14
4 files changed, 41 insertions, 14 deletions
diff --git a/configserver/pom.xml b/configserver/pom.xml
index f346cde63a3..fd33950a546 100644
--- a/configserver/pom.xml
+++ b/configserver/pom.xml
@@ -185,6 +185,12 @@
<scope>compile</scope>
</dependency>
<dependency>
+ <groupId>com.yahoo.vespa</groupId>
+ <artifactId>jaxrs_client_utils</artifactId>
+ <version>${project.version}</version>
+ <scope>compile</scope> <!-- TODO Should ideally be provided, but this bundle is not installed as part of configserver. Orchestrator bundle also includes jaxrs_client_utils in compile scope -->
+ </dependency>
+ <dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<scope>provided</scope>
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/application/ConfigConvergenceChecker.java b/configserver/src/main/java/com/yahoo/vespa/config/server/application/ConfigConvergenceChecker.java
index d55e07540d6..d0f8005ace1 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/application/ConfigConvergenceChecker.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/application/ConfigConvergenceChecker.java
@@ -1,6 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.application;
+import ai.vespa.util.http.VespaClientBuilderFactory;
import com.fasterxml.jackson.databind.JsonNode;
import com.google.inject.Inject;
import com.yahoo.component.AbstractComponent;
@@ -17,8 +18,9 @@ import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.ProcessingException;
import javax.ws.rs.client.Client;
-import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.ClientRequestFilter;
import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.HttpHeaders;
import java.net.URI;
import java.time.Duration;
import java.util.ArrayList;
@@ -55,6 +57,7 @@ public class ConfigConvergenceChecker extends AbstractComponent {
);
private final StateApiFactory stateApiFactory;
+ private final VespaClientBuilderFactory clientBuilderFactory = new VespaClientBuilderFactory();
@Inject
public ConfigConvergenceChecker() {
@@ -97,6 +100,11 @@ public class ConfigConvergenceChecker extends AbstractComponent {
}
}
+ @Override
+ public void deconstruct() {
+ clientBuilderFactory.close();
+ }
+
@Path(statePath)
public interface StateApi {
@Path(configSubPath)
@@ -152,8 +160,11 @@ public class ConfigConvergenceChecker extends AbstractComponent {
return false;
}
- private static Client createClient(Duration timeout) {
- return ClientBuilder.newBuilder()
+ private Client createClient(Duration timeout) {
+ return clientBuilderFactory.newBuilder()
+ .register(
+ (ClientRequestFilter) ctx ->
+ ctx.getHeaders().put(HttpHeaders.USER_AGENT, List.of("config-convergence-checker")))
.property(ClientProperties.CONNECT_TIMEOUT, (int) timeout.toMillis())
.property(ClientProperties.READ_TIMEOUT, (int) timeout.toMillis())
.build();
diff --git a/configserver/src/main/java/com/yahoo/vespa/serviceview/ConfigServerLocation.java b/configserver/src/main/java/com/yahoo/vespa/serviceview/ConfigServerLocation.java
index 5dcdfcdaf37..cc452421d2d 100644
--- a/configserver/src/main/java/com/yahoo/vespa/serviceview/ConfigServerLocation.java
+++ b/configserver/src/main/java/com/yahoo/vespa/serviceview/ConfigServerLocation.java
@@ -1,20 +1,28 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.serviceview;
+import ai.vespa.util.http.VespaClientBuilderFactory;
+import com.google.inject.Inject;
import com.yahoo.cloud.config.ConfigserverConfig;
+import com.yahoo.component.AbstractComponent;
/**
* Wrapper for settings from the cloud.config.configserver config.
*
- * @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a>
+ * @author Steinar Knutsen
*/
-public class ConfigServerLocation {
- public final int restApiPort;
+public class ConfigServerLocation extends AbstractComponent {
+ final int restApiPort;
+ // The client factory must be owned by a component as StateResource is instantiated per request
+ final VespaClientBuilderFactory clientBuilderFactory = new VespaClientBuilderFactory();
+
+ @Inject
public ConfigServerLocation(ConfigserverConfig configServer) {
restApiPort = configServer.httpport();
}
+
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
@@ -22,4 +30,8 @@ public class ConfigServerLocation {
return builder.toString();
}
+ @Override
+ public void deconstruct() {
+ clientBuilderFactory.close();
+ }
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/serviceview/StateResource.java b/configserver/src/main/java/com/yahoo/vespa/serviceview/StateResource.java
index a6d4c229500..c58f3659ca5 100644
--- a/configserver/src/main/java/com/yahoo/vespa/serviceview/StateResource.java
+++ b/configserver/src/main/java/com/yahoo/vespa/serviceview/StateResource.java
@@ -1,6 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.serviceview;
+import ai.vespa.util.http.VespaClientBuilderFactory;
import com.yahoo.container.jaxrs.annotation.Component;
import com.yahoo.vespa.serviceview.bindings.ApplicationView;
import com.yahoo.vespa.serviceview.bindings.ConfigClient;
@@ -14,7 +15,6 @@ import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.client.Client;
-import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.ClientRequestFilter;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.Context;
@@ -28,8 +28,6 @@ import java.util.List;
import java.util.ListIterator;
import java.util.Map;
-import static java.util.Collections.singletonList;
-
/**
* A web service to discover and proxy Vespa service state info.
@@ -42,6 +40,7 @@ public class StateResource implements StateClient {
private static final String USER_AGENT = "service-view-config-server-client";
private static final String SINGLE_API_LINK = "url";
+ private final VespaClientBuilderFactory clientBuilderFactory;
private final int restApiPort;
private final String host;
private final UriInfo uriInfo;
@@ -58,6 +57,7 @@ public class StateResource implements StateClient {
}
public StateResource(@Component ConfigServerLocation configServer, @Context UriInfo ui) {
+ this.clientBuilderFactory = configServer.clientBuilderFactory;
this.restApiPort = configServer.restApiPort;
this.host = "localhost";
this.uriInfo = ui;
@@ -278,11 +278,9 @@ public class StateResource implements StateClient {
newUri.append(link.getRawPath());
}
- private static Client client() {
- return ClientBuilder.newBuilder()
- .register((ClientRequestFilter) ctx -> ctx.getHeaders().put(HttpHeaders.USER_AGENT,
- singletonList(USER_AGENT)))
+ private Client client() {
+ return clientBuilderFactory.newBuilder()
+ .register((ClientRequestFilter) ctx -> ctx.getHeaders().put(HttpHeaders.USER_AGENT, List.of(USER_AGENT)))
.build();
}
-
}