aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbjormel <bjormel@yahooinc.com>2023-09-17 06:14:53 +0000
committerbjormel <bjormel@yahooinc.com>2023-09-24 09:14:09 +0000
commit776393ab3fecc68d8e4ef1df832eccbcc8bff83f (patch)
treec676f1805cf9cbf2b53525937d577675fd477413
parent3f785f57ecf663ebf3c9f195d349172f9fdeed08 (diff)
Use Ycpi enpoint if controller is in AWS
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/ZoneRegistry.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/configserver/ConfigServerApiHandler.java6
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v2/ZoneApiHandler.java6
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ZoneRegistryMock.java5
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/configserver/ConfigServerApiHandlerTest.java6
5 files changed, 23 insertions, 2 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/ZoneRegistry.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/ZoneRegistry.java
index f2cd55b88b2..3b047e3fd28 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/ZoneRegistry.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/ZoneRegistry.java
@@ -61,6 +61,8 @@ public interface ZoneRegistry {
/** Returns the URI for the config server VIP in the given zone */
URI getConfigServerVipUri(ZoneId zoneId);
+ URI getConfigServerYcpiUri(ZoneId zoneId);
+
/** Returns the VIP hostname for the shared routing layer in given zone, if any */
Optional<String> getVipHostname(ZoneId zoneId);
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/configserver/ConfigServerApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/configserver/ConfigServerApiHandler.java
index caead4de03d..1bcc99b9612 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/configserver/ConfigServerApiHandler.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/configserver/ConfigServerApiHandler.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.hosted.controller.restapi.configserver;
import ai.vespa.http.HttpURL;
+import com.yahoo.config.provision.CloudName;
import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.config.provision.zone.ZoneList;
import com.yahoo.container.jdisc.HttpRequest;
@@ -44,12 +45,14 @@ public class ConfigServerApiHandler extends AuditLoggingRequestHandler {
private final ZoneRegistry zoneRegistry;
private final ConfigServerRestExecutor proxy;
private final ZoneId controllerZone;
+ private final CloudName controllerCloud;
public ConfigServerApiHandler(Context parentCtx, ServiceRegistry serviceRegistry,
ConfigServerRestExecutor proxy, Controller controller) {
super(parentCtx, controller.auditLogger());
this.zoneRegistry = serviceRegistry.zoneRegistry();
this.controllerZone = zoneRegistry.systemZone().getVirtualId();
+ this.controllerCloud = zoneRegistry.systemZone().getCloudName();
this.proxy = proxy;
}
@@ -119,7 +122,8 @@ public class ConfigServerApiHandler extends AuditLoggingRequestHandler {
}
private URI getEndpoint(ZoneId zoneId) {
- return controllerZone.equals(zoneId) ? CONTROLLER_URI : zoneRegistry.getConfigServerVipUri(zoneId);
+ if (controllerZone.equals(zoneId)) return CONTROLLER_URI;
+ return controllerCloud.equals(CloudName.AWS) ? zoneRegistry.getConfigServerYcpiUri(zoneId) : zoneRegistry.getConfigServerVipUri(zoneId);
}
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v2/ZoneApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v2/ZoneApiHandler.java
index c9bbdc2c005..81e422eb73d 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v2/ZoneApiHandler.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v2/ZoneApiHandler.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.hosted.controller.restapi.zone.v2;
import ai.vespa.http.HttpURL;
+import com.yahoo.config.provision.CloudName;
import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.config.provision.zone.ZoneList;
import com.yahoo.container.jdisc.HttpRequest;
@@ -100,7 +101,10 @@ public class ZoneApiHandler extends AuditLoggingRequestHandler {
}
private ProxyRequest proxyRequest(ZoneId zoneId, HttpURL.Path path, HttpRequest request) {
- return ProxyRequest.tryOne(zoneRegistry.getConfigServerVipUri(zoneId), path, request);
+ return ProxyRequest.tryOne(zoneRegistry.systemZone().getCloudName().equals(CloudName.AWS)
+ ? zoneRegistry.getConfigServerYcpiUri(zoneId)
+ : zoneRegistry.getConfigServerVipUri(zoneId),
+ path, request);
}
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ZoneRegistryMock.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ZoneRegistryMock.java
index ec526163507..714d3af2f02 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ZoneRegistryMock.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ZoneRegistryMock.java
@@ -282,6 +282,11 @@ public class ZoneRegistryMock extends AbstractComponent implements ZoneRegistry
}
@Override
+ public URI getConfigServerYcpiUri(ZoneId zoneId) {
+ return URI.create(Text.format("https://cfg-%s.test.vip:4443/", zoneId.value().replace(".", "-")));
+ }
+
+ @Override
public Optional<String> getVipHostname(ZoneId zoneId) {
if (routingMethod(zoneId).isShared()) {
return Optional.of("vip." + zoneId.value());
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/configserver/ConfigServerApiHandlerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/configserver/ConfigServerApiHandlerTest.java
index 82783485158..58cafc22b47 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/configserver/ConfigServerApiHandlerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/configserver/ConfigServerApiHandlerTest.java
@@ -2,11 +2,15 @@
package com.yahoo.vespa.hosted.controller.restapi.configserver;
import com.yahoo.application.container.handler.Request;
+import com.yahoo.config.provision.CloudName;
import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.RegionName;
+import com.yahoo.config.provision.SystemName;
import com.yahoo.config.provision.zone.ZoneApi;
+import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.vespa.hosted.controller.integration.ConfigServerProxyMock;
import com.yahoo.vespa.hosted.controller.integration.ZoneApiMock;
+import com.yahoo.vespa.hosted.controller.integration.ZoneRegistryMock;
import com.yahoo.vespa.hosted.controller.proxy.ProxyRequest;
import com.yahoo.vespa.hosted.controller.restapi.ContainerTester;
import com.yahoo.vespa.hosted.controller.restapi.ControllerContainerTest;
@@ -38,6 +42,8 @@ public class ConfigServerApiHandlerTest extends ControllerContainerTest {
@BeforeEach
public void before() {
tester = new ContainerTester(container, responseFiles);
+ System.out.println("getCloudName().value(): " + tester.controller().zoneRegistry().systemZone().getCloudName().value());;
+
tester.serviceRegistry().zoneRegistry()
.setDefaultRegionForEnvironment(Environment.dev, RegionName.from("us-north-2"))
.setZones(zones);