summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMorten Tokle <mortent@verizonmedia.com>2019-11-20 10:25:04 +0100
committerGitHub <noreply@github.com>2019-11-20 10:25:04 +0100
commit95432b0ec4be8e844fe5433598a9045d0de08fef (patch)
treea3590af3d0d37dd61ee11fc9b0a7df1ef986e241
parent9e7c7bdf8473bbe0c1b2427bcf4000d84d988b8c (diff)
parent18947164a8f028ff176a92bfac97b5452bc6338c (diff)
Merge pull request #11360 from vespa-engine/hmusum/remove-RoutingProducer
Remove RoutingProducer and routing config definition
-rw-r--r--configdefinitions/src/vespa/CMakeLists.txt2
-rwxr-xr-xconfigdefinitions/src/vespa/routing.def9
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/model/RoutingProducer.java50
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/model/SuperModelConfigProvider.java17
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/rpc/security/GlobalConfigAuthorizationPolicy.java4
-rwxr-xr-xconfigserver/src/test/java/com/yahoo/vespa/config/server/model/RoutingProducerTest.java110
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/rpc/security/MultiTenantRpcAuthorizerTest.java12
7 files changed, 3 insertions, 201 deletions
diff --git a/configdefinitions/src/vespa/CMakeLists.txt b/configdefinitions/src/vespa/CMakeLists.txt
index 120c403eb74..0673e803057 100644
--- a/configdefinitions/src/vespa/CMakeLists.txt
+++ b/configdefinitions/src/vespa/CMakeLists.txt
@@ -44,8 +44,6 @@ vespa_generate_config(configdefinitions persistence.def)
install_config_definition(persistence.def vespa.config.content.persistence.def)
vespa_generate_config(configdefinitions rank-profiles.def)
install_config_definition(rank-profiles.def vespa.config.search.rank-profiles.def)
-vespa_generate_config(configdefinitions routing.def)
-install_config_definition(routing.def cloud.config.routing.def)
vespa_generate_config(configdefinitions routing-provider.def)
install_config_definition(routing-provider.def cloud.config.routing-provider.def)
vespa_generate_config(configdefinitions sentinel.def)
diff --git a/configdefinitions/src/vespa/routing.def b/configdefinitions/src/vespa/routing.def
deleted file mode 100755
index 043ef1fff68..00000000000
--- a/configdefinitions/src/vespa/routing.def
+++ /dev/null
@@ -1,9 +0,0 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-# List of routing hosts populated from the zone-application in Hosted mode
-
-# TODO Remove once YCA filter is removed
-
-namespace=cloud.config
-
-# Host name(s) of routing/proxy nodes
-hosts[] string
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/model/RoutingProducer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/model/RoutingProducer.java
deleted file mode 100644
index 07e57270dbd..00000000000
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/model/RoutingProducer.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// 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.model;
-
-import com.yahoo.cloud.config.RoutingConfig;
-import com.yahoo.config.model.api.ApplicationInfo;
-import com.yahoo.config.model.api.HostInfo;
-import com.yahoo.config.provision.ApplicationId;
-import com.yahoo.config.provision.ApplicationName;
-import com.yahoo.config.provision.TenantName;
-import com.yahoo.vespa.config.server.tenant.TenantRepository;
-
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Create global config based on info from the zone application
- *
- * @author Christian Andersen
- */
-// TODO Delete once YCA filter is removed
-@Deprecated(forRemoval = true)
-public class RoutingProducer implements RoutingConfig.Producer {
-
- static final ApplicationName ROUTING_APPLICATION = ApplicationName.from("routing");
-
- private final Map<TenantName, Set<ApplicationInfo>> models;
-
- public RoutingProducer(Map<TenantName, Set<ApplicationInfo>> models) {
- this.models = models;
- }
-
- @Override
- public void getConfig(RoutingConfig.Builder builder) {
- for (Set<ApplicationInfo> model : models.values()) {
- model.stream()
- .filter(application -> isHostedVespaRoutingApplication(application.getApplicationId()))
- .forEach(application -> {
- for (HostInfo host : application.getModel().getHosts()) {
- builder.hosts(host.getHostname());
- }
- });
- }
- }
-
- private boolean isHostedVespaRoutingApplication(ApplicationId applicationId) {
- return TenantRepository.HOSTED_VESPA_TENANT.equals(applicationId.tenant()) &&
- (ROUTING_APPLICATION.equals(applicationId.application()));
- }
-
-}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/model/SuperModelConfigProvider.java b/configserver/src/main/java/com/yahoo/vespa/config/server/model/SuperModelConfigProvider.java
index 9631713c870..c51690cd3a8 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/model/SuperModelConfigProvider.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/model/SuperModelConfigProvider.java
@@ -2,7 +2,6 @@
package com.yahoo.vespa.config.server.model;
import com.yahoo.cloud.config.LbServicesConfig;
-import com.yahoo.cloud.config.RoutingConfig;
import com.yahoo.config.ConfigInstance;
import com.yahoo.config.ConfigurationRuntimeException;
import com.yahoo.config.model.api.ApplicationInfo;
@@ -21,17 +20,14 @@ import java.util.Map;
*
* @author Vegard Havdal
*/
-public class SuperModelConfigProvider implements LbServicesConfig.Producer, RoutingConfig.Producer {
+public class SuperModelConfigProvider implements LbServicesConfig.Producer {
private final SuperModel superModel;
private final LbServicesProducer lbProd;
- @SuppressWarnings("removal") private final RoutingProducer zoneProd;
- @SuppressWarnings("removal") // For RoutingProducer
public SuperModelConfigProvider(SuperModel superModel, Zone zone, FlagSource flagSource) {
this.superModel = superModel;
this.lbProd = new LbServicesProducer(Collections.unmodifiableMap(superModel.getModelsPerTenant()), zone, flagSource);
- this.zoneProd = new RoutingProducer(Collections.unmodifiableMap(superModel.getModelsPerTenant()));
}
public SuperModel getSuperModel() {
@@ -44,10 +40,6 @@ public class SuperModelConfigProvider implements LbServicesConfig.Producer, Rout
LbServicesConfig.Builder builder = new LbServicesConfig.Builder();
getConfig(builder);
return ConfigPayload.fromInstance(new LbServicesConfig(builder));
- } else if (configKey.equals(new ConfigKey<>(RoutingConfig.class, configKey.getConfigId()))) {
- RoutingConfig.Builder builder = new RoutingConfig.Builder();
- getConfig(builder);
- return ConfigPayload.fromInstance(new RoutingConfig(builder));
} else {
throw new ConfigurationRuntimeException(configKey + " is not valid when asking for config from SuperModel");
}
@@ -59,12 +51,7 @@ public class SuperModelConfigProvider implements LbServicesConfig.Producer, Rout
public void getConfig(LbServicesConfig.Builder builder) {
lbProd.getConfig(builder);
}
-
- @Override
- public void getConfig(RoutingConfig.Builder builder) {
- zoneProd.getConfig(builder);
- }
-
+
public <CONFIGTYPE extends ConfigInstance> CONFIGTYPE getConfig(Class<CONFIGTYPE> configClass,
ApplicationId applicationId,
String configId) {
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/security/GlobalConfigAuthorizationPolicy.java b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/security/GlobalConfigAuthorizationPolicy.java
index cc1125b6cc6..e0e74b93ccf 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/security/GlobalConfigAuthorizationPolicy.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/security/GlobalConfigAuthorizationPolicy.java
@@ -2,7 +2,6 @@
package com.yahoo.vespa.config.server.rpc.security;
import com.yahoo.cloud.config.LbServicesConfig;
-import com.yahoo.cloud.config.RoutingConfig;
import com.yahoo.config.ConfigInstance;
import com.yahoo.config.provision.NodeType;
import com.yahoo.vespa.config.ConfigKey;
@@ -18,8 +17,7 @@ import java.util.List;
*/
enum GlobalConfigAuthorizationPolicy {
- LB_SERVICES(new LbServicesConfig.Builder(), NodeType.proxy),
- ROUTING(new RoutingConfig.Builder(), NodeType.tenant); // TODO Remove handling of RoutingConfig when YCA filter is removed
+ LB_SERVICES(new LbServicesConfig.Builder(), NodeType.proxy);
final String namespace;
final String name;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/model/RoutingProducerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/model/RoutingProducerTest.java
deleted file mode 100755
index 5a34dd4c912..00000000000
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/model/RoutingProducerTest.java
+++ /dev/null
@@ -1,110 +0,0 @@
-// 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.model;
-
-import com.yahoo.cloud.config.RoutingConfig;
-import com.yahoo.config.application.api.ApplicationPackage;
-import com.yahoo.config.model.NullConfigModelRegistry;
-import com.yahoo.config.model.api.ApplicationInfo;
-import com.yahoo.config.model.api.Model;
-import com.yahoo.config.model.deploy.DeployState;
-import com.yahoo.config.model.test.MockApplicationPackage;
-import com.yahoo.config.provision.ApplicationId;
-import com.yahoo.config.provision.TenantName;
-import com.yahoo.vespa.config.server.tenant.TenantRepository;
-import com.yahoo.vespa.model.VespaModel;
-import org.junit.Test;
-import org.xml.sax.SAXException;
-
-import java.io.IOException;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-import java.util.Map;
-import java.util.Set;
-
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assert.assertThat;
-
-/**
- * @author Christian Andersen
- */
-@SuppressWarnings("removal") // For RoutingProducer
-public class RoutingProducerTest {
- @Test
- public void testNodesFromRoutingAppOnly() throws Exception {
- Map<TenantName, Set<ApplicationInfo>> testModel = createTestModel(new DeployState.Builder());
- RoutingProducer producer = new RoutingProducer(testModel);
- RoutingConfig.Builder builder = new RoutingConfig.Builder();
- producer.getConfig(builder);
- RoutingConfig config = new RoutingConfig(builder);
- assertThat(config.hosts().size(), is(2));
- assertThat(config.hosts(0), is("hosted-vespa.routing.yahoo.com"));
- assertThat(config.hosts(1), is("hosted-vespa.routing2.yahoo.com"));
- }
-
- private Map<TenantName, Set<ApplicationInfo>> createTestModel(DeployState.Builder deployStateBuilder) throws IOException, SAXException {
- Map<TenantName, Set<ApplicationInfo>> apps = new LinkedHashMap<>();
- TenantName foo = TenantName.from("foo");
- TenantName bar = TenantName.from("bar");
- TenantName routing = TenantName.from(TenantRepository.HOSTED_VESPA_TENANT.value());
- apps.put(foo, createTestApplications(foo, deployStateBuilder));
- apps.put(bar, createTestApplications(bar, deployStateBuilder));
- apps.put(routing, createTestApplications(routing, deployStateBuilder));
- return apps;
- }
-
- private Set<ApplicationInfo> createTestApplications(TenantName tenant, DeployState.Builder deploystateBuilder) throws IOException, SAXException {
- Set<ApplicationInfo> applicationInfos = new LinkedHashSet<>();
- ApplicationId fooApp = new ApplicationId.Builder().tenant(tenant).applicationName("foo").build();
- ApplicationId barApp = new ApplicationId.Builder().tenant(tenant).applicationName("bar").build();
- ApplicationId routingApp = new ApplicationId.Builder().tenant(tenant).applicationName(RoutingProducer.ROUTING_APPLICATION.value()).build();
- applicationInfos.add(createApplication(fooApp, deploystateBuilder));
- applicationInfos.add(createApplication(barApp, deploystateBuilder));
- applicationInfos.add(createApplication(routingApp, deploystateBuilder));
- return applicationInfos;
- }
-
- private ApplicationInfo createApplication(ApplicationId appId, DeployState.Builder deploystateBuilder) throws IOException, SAXException {
- return new ApplicationInfo(
- appId,
- 3L,
- createVespaModel(
- createApplicationPackage(
- appId.tenant() + "." + appId.application() + ".yahoo.com",
- appId.tenant().value() + "." + appId.application().value() + "2.yahoo.com"),
- deploystateBuilder));
- }
-
- private ApplicationPackage createApplicationPackage(String host1, String host2) {
- String hosts = "<hosts><host name='" + host1 + "'><alias>node1</alias></host><host name='" + host2 + "'><alias>node2</alias></host></hosts>";
- String services = "<services><admin version='2.0'><adminserver hostalias='node1' /><logserver hostalias='node1' /><slobroks><slobrok hostalias='node1' /><slobrok hostalias='node2' /></slobroks></admin>"
- + "<container id='mydisc' version='1.0'>" +
- " <aliases>" +
- " <endpoint-alias>foo2.bar2.com</endpoint-alias>" +
- " <service-alias>service1</service-alias>" +
- " <endpoint-alias>foo1.bar1.com</endpoint-alias>" +
- " </aliases>" +
- " <nodes>" +
- " <node hostalias='node1' />" +
- " </nodes>" +
- " <search/>" +
- "</container>" +
- "</services>";
- String deploymentInfo ="<?xml version='1.0' encoding='UTF-8'?>" +
- "<deployment version='1.0'>" +
- " <test />" +
- " <prod global-service-id='mydisc'>" +
- " <region active='true'>us-east</region>" +
- " </prod>" +
- "</deployment>";
-
- return new MockApplicationPackage.Builder()
- .withHosts(hosts)
- .withServices(services)
- .withDeploymentSpec(deploymentInfo)
- .build();
- }
-
- private Model createVespaModel(ApplicationPackage applicationPackage, DeployState.Builder deployStateBuilder) throws IOException, SAXException {
- return new VespaModel(new NullConfigModelRegistry(), deployStateBuilder.applicationPackage(applicationPackage).build());
- }
-}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/security/MultiTenantRpcAuthorizerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/security/MultiTenantRpcAuthorizerTest.java
index 5a7ac665463..28827cec53e 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/security/MultiTenantRpcAuthorizerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/security/MultiTenantRpcAuthorizerTest.java
@@ -1,7 +1,6 @@
package com.yahoo.vespa.config.server.rpc.security;// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import com.yahoo.cloud.config.LbServicesConfig;
-import com.yahoo.cloud.config.RoutingConfig;
import com.yahoo.cloud.config.SentinelConfig;
import com.yahoo.config.FileReference;
import com.yahoo.config.provision.ApplicationId;
@@ -109,17 +108,6 @@ public class MultiTenantRpcAuthorizerTest {
}
@Test
- public void tenant_node_can_access_routing_config() throws ExecutionException, InterruptedException {
- RpcAuthorizer authorizer = createAuthorizer(new NodeIdentity.Builder(NodeType.tenant).build(), new HostRegistry<>());
-
- Request configRequest = createConfigRequest(
- new ConfigKey<>(RoutingConfig.CONFIG_DEF_NAME, "*", RoutingConfig.CONFIG_DEF_NAMESPACE),
- HOSTNAME);
- authorizer.authorizeConfigRequest(configRequest)
- .get();
- }
-
- @Test
public void tenant_node_cannot_access_lbservice_config() throws ExecutionException, InterruptedException {
RpcAuthorizer authorizer = createAuthorizer(new NodeIdentity.Builder(NodeType.tenant).build(), new HostRegistry<>());