summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHÃ¥kon Hallingstad <hakon@yahooinc.com>2022-01-04 11:23:08 +0100
committerGitHub <noreply@github.com>2022-01-04 11:23:08 +0100
commitef82c54cde78e05a49a3087d9353dbb955cdb150 (patch)
tree4d680b77b1b1e520f5761bb5e0280553b8637520
parent56eef3bbb24202d32f5eee5a70597b589c2bb675 (diff)
parent0646515bf772065e2992152aeb7a0a808f18df62 (diff)
Merge pull request #20641 from vespa-engine/hakonhall/add-infrastructureapplication-in-application-model
Add InfrastructureApplication in application-model [run-systemtest]
-rw-r--r--application-model/pom.xml6
-rw-r--r--application-model/src/main/java/com/yahoo/vespa/applicationmodel/ApplicationInstanceId.java19
-rw-r--r--application-model/src/main/java/com/yahoo/vespa/applicationmodel/ApplicationInstanceReference.java2
-rw-r--r--application-model/src/main/java/com/yahoo/vespa/applicationmodel/ClusterId.java14
-rw-r--r--application-model/src/main/java/com/yahoo/vespa/applicationmodel/InfrastructureApplication.java53
-rw-r--r--application-model/src/main/java/com/yahoo/vespa/applicationmodel/TenantId.java6
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java5
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisionerTest.java8
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/HostedVespaOrchestration.java14
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/OrchestrationParams.java5
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/duper/ConfigServerApplication.java4
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/duper/ConfigServerHostApplication.java4
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/duper/ConfigServerLikeApplication.java6
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/duper/ControllerApplication.java4
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/duper/ControllerHostApplication.java4
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/duper/DevHostApplication.java4
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/duper/HostAdminApplication.java9
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/duper/InfraApplication.java35
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/duper/ProxyHostApplication.java4
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/duper/TenantHostApplication.java4
20 files changed, 131 insertions, 79 deletions
diff --git a/application-model/pom.xml b/application-model/pom.xml
index 4937bc54a34..19823a12e67 100644
--- a/application-model/pom.xml
+++ b/application-model/pom.xml
@@ -23,6 +23,12 @@
</dependency>
<dependency>
<groupId>com.yahoo.vespa</groupId>
+ <artifactId>config-provisioning</artifactId>
+ <version>${project.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.yahoo.vespa</groupId>
<artifactId>annotations</artifactId>
<version>${project.version}</version>
</dependency>
diff --git a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ApplicationInstanceId.java b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ApplicationInstanceId.java
index 76605a8d6b2..63810d1d109 100644
--- a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ApplicationInstanceId.java
+++ b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ApplicationInstanceId.java
@@ -10,15 +10,17 @@ import java.util.Objects;
*/
// TODO: Remove this and use ApplicationName/InstanceName instead (if you need it for the JSON stuff move it to that layer and don't let it leak)
public class ApplicationInstanceId {
- public static final ApplicationInstanceId CONFIG_SERVER = new ApplicationInstanceId("zone-config-servers");
- public static final ApplicationInstanceId CONTROLLER = new ApplicationInstanceId("controller");
+
+ public static final ApplicationInstanceId CONFIG_SERVER = new ApplicationInstanceId(InfrastructureApplication.CONFIG_SERVER.applicationName());
+ public static final ApplicationInstanceId CONTROLLER = new ApplicationInstanceId(InfrastructureApplication.CONTROLLER.applicationName());
// Unfortunately, for config server host the ApplicationInstanceId is: configserver-host:prod:cd-us-central-1:default
- public boolean isConfigServerHost() { return id.startsWith("configserver-host:"); }
- public static final ApplicationInstanceId CONTROLLER_HOST = new ApplicationInstanceId("controller-host:prod:default:default");
- public boolean isTenantHost() { return id.startsWith("tenant-host:"); }
- public boolean isProxyHost() { return id.startsWith("proxy-host:"); }
+ public boolean isConfigServerHost() { return id.startsWith(InfrastructureApplication.CONFIG_SERVER_HOST.applicationName() + ":"); }
+ public static final ApplicationInstanceId CONTROLLER_HOST = new ApplicationInstanceId(InfrastructureApplication.CONTROLLER_HOST.applicationName() +
+ ":prod:default:default");
+ public boolean isTenantHost() { return id.startsWith(InfrastructureApplication.TENANT_HOST.applicationName() + ":"); }
+ public boolean isProxyHost() { return id.startsWith(InfrastructureApplication.PROXY_HOST.applicationName() + ":"); }
// Routing application instance ID is of the form: routing:prod:eu-west-1:default
- public boolean isProxy() { return id.startsWith("routing:"); }
+ public boolean isProxy() { return id.startsWith(InfrastructureApplication.PROXY.applicationName() + ":"); }
private final String id;
@@ -34,8 +36,7 @@ public class ApplicationInstanceId {
return id;
}
- // For compatibility with original Scala case class
- public String s() {
+ public String value() {
return id;
}
diff --git a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ApplicationInstanceReference.java b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ApplicationInstanceReference.java
index f9bc0cec0b0..c11af132722 100644
--- a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ApplicationInstanceReference.java
+++ b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ApplicationInstanceReference.java
@@ -39,7 +39,7 @@ public class ApplicationInstanceReference implements Comparable<ApplicationInsta
}
public String asString() {
- return tenantId.s() + ":" + applicationInstanceId.s();
+ return tenantId.value() + ":" + applicationInstanceId.value();
}
@Override
diff --git a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ClusterId.java b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ClusterId.java
index e193c32b16b..9ccd3e4d706 100644
--- a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ClusterId.java
+++ b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ClusterId.java
@@ -10,13 +10,13 @@ import java.util.Objects;
*/
public class ClusterId {
- public static final ClusterId CONFIG_SERVER = new ClusterId("zone-config-servers");
- public static final ClusterId CONTROLLER = new ClusterId("controller");
- public static final ClusterId CONFIG_SERVER_HOST = new ClusterId("configserver-host");
- public static final ClusterId CONTROLLER_HOST = new ClusterId("controller-host");
- public static final ClusterId PROXY_HOST = new ClusterId("proxy-host");
- public static final ClusterId ROUTING = new ClusterId("routing");
- public static final ClusterId TENANT_HOST = new ClusterId("tenant-host");
+ public static final ClusterId CONFIG_SERVER = new ClusterId(InfrastructureApplication.CONFIG_SERVER.applicationName());
+ public static final ClusterId CONTROLLER = new ClusterId(InfrastructureApplication.CONTROLLER.applicationName());
+ public static final ClusterId CONFIG_SERVER_HOST = new ClusterId(InfrastructureApplication.CONFIG_SERVER_HOST.applicationName());
+ public static final ClusterId CONTROLLER_HOST = new ClusterId(InfrastructureApplication.CONTROLLER_HOST.applicationName());
+ public static final ClusterId PROXY_HOST = new ClusterId(InfrastructureApplication.PROXY_HOST.applicationName());
+ public static final ClusterId ROUTING = new ClusterId(InfrastructureApplication.PROXY.applicationName());
+ public static final ClusterId TENANT_HOST = new ClusterId(InfrastructureApplication.TENANT_HOST.applicationName());
private final String id;
diff --git a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/InfrastructureApplication.java b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/InfrastructureApplication.java
new file mode 100644
index 00000000000..f3b529d8c05
--- /dev/null
+++ b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/InfrastructureApplication.java
@@ -0,0 +1,53 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.applicationmodel;
+
+import com.yahoo.config.provision.ApplicationId;
+import com.yahoo.config.provision.NodeType;
+
+import java.util.stream.Stream;
+
+/**
+ * Special infrastructure applications in hosted Vespa.
+ *
+ * @author hakonhall
+ */
+public enum InfrastructureApplication {
+ CONTROLLER_HOST("controller-host", NodeType.controllerhost),
+ CONTROLLER("controller", NodeType.controller),
+ CONFIG_SERVER_HOST("configserver-host", NodeType.confighost),
+ CONFIG_SERVER("zone-config-servers", NodeType.config),
+ PROXY_HOST("proxy-host", NodeType.proxyhost),
+ PROXY("routing", NodeType.proxy),
+ TENANT_HOST("tenant-host", NodeType.host),
+ DEV_HOST("dev-host", NodeType.devhost);
+
+ private final ApplicationId id;
+ private final NodeType nodeType;
+
+ public static InfrastructureApplication withNodeType(NodeType nodeType) {
+ return Stream.of(values())
+ .filter(application -> nodeType == application.nodeType)
+ .findAny()
+ .orElseThrow(() -> new IllegalArgumentException("No application associated with " + nodeType));
+ }
+
+ InfrastructureApplication(String name, NodeType nodeType) {
+ this.id = ApplicationId.from(TenantId.HOSTED_VESPA.value(), name, "default");
+ this.nodeType = nodeType;
+ }
+
+ public ApplicationId id() { return id; }
+ /** Avoid using {@link #name()} which is the name of the enum constant. */
+ public String applicationName() { return id.application().value(); }
+ public NodeType nodeType() { return nodeType; }
+ public boolean isConfigServerLike() { return this == CONFIG_SERVER || this == CONTROLLER; }
+ public boolean isConfigServerHostLike() { return this == CONFIG_SERVER_HOST || this == CONTROLLER_HOST; }
+
+ @Override
+ public String toString() {
+ return "InfrastructureApplication{" +
+ "id=" + id +
+ ", nodeType=" + nodeType +
+ '}';
+ }
+}
diff --git a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/TenantId.java b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/TenantId.java
index 9789f1ac9f9..7d94a0418e4 100644
--- a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/TenantId.java
+++ b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/TenantId.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.applicationmodel;
import com.fasterxml.jackson.annotation.JsonValue;
+import com.yahoo.config.provision.TenantName;
import java.util.Objects;
@@ -26,11 +27,12 @@ public class TenantId {
return id;
}
- // For compatibility with original Scala case class
- public String s() {
+ public String value() {
return id;
}
+ public TenantName toName() { return TenantName.from(id); }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java b/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java
index 69098ea0030..02ca4ce14c4 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java
@@ -33,6 +33,7 @@ import com.yahoo.path.Path;
import com.yahoo.slime.Slime;
import com.yahoo.transaction.NestedTransaction;
import com.yahoo.transaction.Transaction;
+import com.yahoo.vespa.applicationmodel.InfrastructureApplication;
import com.yahoo.vespa.config.server.application.Application;
import com.yahoo.vespa.config.server.application.ApplicationCuratorDatabase;
import com.yahoo.vespa.config.server.application.ApplicationReindexing;
@@ -57,8 +58,8 @@ import com.yahoo.vespa.config.server.http.LogRetriever;
import com.yahoo.vespa.config.server.http.SecretStoreValidator;
import com.yahoo.vespa.config.server.http.SimpleHttpFetcher;
import com.yahoo.vespa.config.server.http.TesterClient;
-import com.yahoo.vespa.config.server.http.v2.response.DeploymentMetricsResponse;
import com.yahoo.vespa.config.server.http.v2.PrepareResult;
+import com.yahoo.vespa.config.server.http.v2.response.DeploymentMetricsResponse;
import com.yahoo.vespa.config.server.http.v2.response.ProtonMetricsResponse;
import com.yahoo.vespa.config.server.metrics.DeploymentMetricsRetriever;
import com.yahoo.vespa.config.server.metrics.ProtonMetricsRetriever;
@@ -1123,7 +1124,7 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
// most applications under hosted-vespa are not known to the model and it's OK for a user to get
// logs for any host if they are authorized for the hosted-vespa tenant.
if (hostname.isPresent() && HOSTED_VESPA_TENANT.equals(applicationId.tenant())) {
- int port = List.of("zone-config-servers", "controller").contains(applicationId.application().value()) ? 19071 : 8080;
+ int port = List.of(InfrastructureApplication.CONFIG_SERVER.id(), InfrastructureApplication.CONTROLLER.id()).contains(applicationId) ? 19071 : 8080;
return "http://" + hostname.get() + ":" + port + "/logs";
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisionerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisionerTest.java
index 614817bce84..885efed9241 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisionerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisionerTest.java
@@ -12,6 +12,7 @@ import com.yahoo.config.provision.NodeResources;
import com.yahoo.config.provision.NodeType;
import com.yahoo.config.provision.exception.LoadBalancerServiceException;
import com.yahoo.transaction.NestedTransaction;
+import com.yahoo.vespa.applicationmodel.InfrastructureApplication;
import com.yahoo.vespa.flags.InMemoryFlagSource;
import com.yahoo.vespa.flags.PermanentFlags;
import com.yahoo.vespa.hosted.provision.Node;
@@ -234,14 +235,13 @@ public class LoadBalancerProvisionerTest {
@Test
public void provision_load_balancer_config_server_cluster() {
- ApplicationId configServerApp = ApplicationId.from("hosted-vespa", "zone-config-servers", "default");
- Supplier<List<LoadBalancer>> lbs = () -> tester.nodeRepository().loadBalancers().list(configServerApp).asList();
+ Supplier<List<LoadBalancer>> lbs = () -> tester.nodeRepository().loadBalancers().list(InfrastructureApplication.CONFIG_SERVER.id()).asList();
var cluster = ClusterSpec.Id.from("zone-config-servers");
- var nodes = prepare(configServerApp, Capacity.fromRequiredNodeType(NodeType.config),
+ var nodes = prepare(InfrastructureApplication.CONFIG_SERVER.id(), Capacity.fromRequiredNodeType(NodeType.config),
clusterRequest(ClusterSpec.Type.admin, cluster));
assertEquals(1, lbs.get().size());
assertEquals("Prepare provisions load balancer with reserved nodes", 2, lbs.get().get(0).instance().get().reals().size());
- tester.activate(configServerApp, nodes);
+ tester.activate(InfrastructureApplication.CONFIG_SERVER.id(), nodes);
assertSame(LoadBalancer.State.active, lbs.get().get(0).state());
assertEquals(cluster, lbs.get().get(0).id().cluster());
}
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/HostedVespaOrchestration.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/HostedVespaOrchestration.java
index 0028a5a252c..eb2b863aefb 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/HostedVespaOrchestration.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/HostedVespaOrchestration.java
@@ -1,8 +1,8 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.policy;
-import com.yahoo.config.provision.ApplicationId;
import com.yahoo.vespa.applicationmodel.ClusterId;
+import com.yahoo.vespa.applicationmodel.InfrastructureApplication;
import com.yahoo.vespa.applicationmodel.ServiceType;
/**
@@ -19,7 +19,7 @@ public class HostedVespaOrchestration {
return new OrchestrationParams.Builder()
// Controller host
- .addApplicationParams(ApplicationId.fromSerializedForm("hosted-vespa:controller-host:default"),
+ .addApplicationParams(InfrastructureApplication.CONTROLLER_HOST,
new ApplicationParams
.Builder()
.add(ClusterId.CONTROLLER,
@@ -31,7 +31,7 @@ public class HostedVespaOrchestration {
.build())
// Controller
- .addApplicationParams(ApplicationId.fromSerializedForm("hosted-vespa:controller:default"),
+ .addApplicationParams(InfrastructureApplication.CONTROLLER,
new ApplicationParams
.Builder()
.add(ClusterId.CONTROLLER,
@@ -43,7 +43,7 @@ public class HostedVespaOrchestration {
.build())
// Config server host
- .addApplicationParams(ApplicationId.fromSerializedForm("hosted-vespa:configserver-host:default"),
+ .addApplicationParams(InfrastructureApplication.CONFIG_SERVER_HOST,
new ApplicationParams
.Builder()
.add(ClusterId.CONFIG_SERVER_HOST,
@@ -55,7 +55,7 @@ public class HostedVespaOrchestration {
.build())
// Config server
- .addApplicationParams(ApplicationId.fromSerializedForm("hosted-vespa:zone-config-servers:default"),
+ .addApplicationParams(InfrastructureApplication.CONFIG_SERVER,
new ApplicationParams
.Builder()
.add(ClusterId.CONFIG_SERVER,
@@ -67,7 +67,7 @@ public class HostedVespaOrchestration {
.build())
// Proxy host
- .addApplicationParams(ApplicationId.fromSerializedForm("hosted-vespa:proxy-host:default"),
+ .addApplicationParams(InfrastructureApplication.PROXY_HOST,
new ApplicationParams
.Builder()
.add(ClusterId.PROXY_HOST,
@@ -79,7 +79,7 @@ public class HostedVespaOrchestration {
.build())
// Proxy
- .addApplicationParams(ApplicationId.fromSerializedForm("hosted-vespa:routing:default"),
+ .addApplicationParams(InfrastructureApplication.PROXY,
new ApplicationParams
.Builder()
.add(ClusterId.ROUTING,
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/OrchestrationParams.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/OrchestrationParams.java
index 530f2dc8faf..43065831cbc 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/OrchestrationParams.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/OrchestrationParams.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.orchestrator.policy;
import com.yahoo.config.provision.ApplicationId;
+import com.yahoo.vespa.applicationmodel.InfrastructureApplication;
import java.util.HashMap;
import java.util.Map;
@@ -20,8 +21,8 @@ public class OrchestrationParams {
public Builder() {}
- public Builder addApplicationParams(ApplicationId applicationId, ApplicationParams params) {
- this.applicationParams.put(applicationId, params);
+ public Builder addApplicationParams(InfrastructureApplication application, ApplicationParams params) {
+ this.applicationParams.put(application.id(), params);
return this;
}
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ConfigServerApplication.java b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ConfigServerApplication.java
index b57ddc6bc92..121b7e358e8 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ConfigServerApplication.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ConfigServerApplication.java
@@ -2,9 +2,9 @@
package com.yahoo.vespa.service.duper;
import com.yahoo.config.provision.ClusterSpec;
-import com.yahoo.config.provision.NodeType;
import com.yahoo.config.provision.Zone;
import com.yahoo.vespa.applicationmodel.ApplicationInstanceId;
+import com.yahoo.vespa.applicationmodel.InfrastructureApplication;
import com.yahoo.vespa.applicationmodel.ServiceType;
/**
@@ -15,7 +15,7 @@ import com.yahoo.vespa.applicationmodel.ServiceType;
public class ConfigServerApplication extends ConfigServerLikeApplication {
public ConfigServerApplication() {
- super("zone-config-servers", NodeType.config, ClusterSpec.Type.admin, ServiceType.CONFIG_SERVER);
+ super(InfrastructureApplication.CONFIG_SERVER, ClusterSpec.Type.admin, ServiceType.CONFIG_SERVER);
}
/**
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ConfigServerHostApplication.java b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ConfigServerHostApplication.java
index 909b86886b8..b970c3c6b77 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ConfigServerHostApplication.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ConfigServerHostApplication.java
@@ -1,12 +1,12 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.duper;
-import com.yahoo.config.provision.NodeType;
+import com.yahoo.vespa.applicationmodel.InfrastructureApplication;
public class ConfigServerHostApplication extends HostAdminApplication {
public ConfigServerHostApplication() {
- super("configserver-host", NodeType.confighost);
+ super(InfrastructureApplication.CONFIG_SERVER_HOST);
}
}
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ConfigServerLikeApplication.java b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ConfigServerLikeApplication.java
index 38808b66435..cc3aeddff01 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ConfigServerLikeApplication.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ConfigServerLikeApplication.java
@@ -3,7 +3,7 @@ package com.yahoo.vespa.service.duper;
import com.yahoo.component.Version;
import com.yahoo.config.provision.ClusterSpec;
-import com.yahoo.config.provision.NodeType;
+import com.yahoo.vespa.applicationmodel.InfrastructureApplication;
import com.yahoo.vespa.applicationmodel.ServiceType;
/**
@@ -12,8 +12,8 @@ import com.yahoo.vespa.applicationmodel.ServiceType;
* @author hakonhall
*/
public abstract class ConfigServerLikeApplication extends InfraApplication {
- protected ConfigServerLikeApplication(String applicationName, NodeType nodeType, ClusterSpec.Type clusterType, ServiceType serviceType) {
- super(applicationName, nodeType, clusterType, ClusterSpec.Id.from(applicationName), serviceType, 19071);
+ protected ConfigServerLikeApplication(InfrastructureApplication application, ClusterSpec.Type clusterType, ServiceType serviceType) {
+ super(application, clusterType, ClusterSpec.Id.from(application.applicationName()), serviceType, 19071);
}
@Override
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ControllerApplication.java b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ControllerApplication.java
index 6c38149f662..c46b040d443 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ControllerApplication.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ControllerApplication.java
@@ -2,7 +2,7 @@
package com.yahoo.vespa.service.duper;
import com.yahoo.config.provision.ClusterSpec;
-import com.yahoo.config.provision.NodeType;
+import com.yahoo.vespa.applicationmodel.InfrastructureApplication;
import com.yahoo.vespa.applicationmodel.ServiceType;
/**
@@ -13,7 +13,7 @@ import com.yahoo.vespa.applicationmodel.ServiceType;
public class ControllerApplication extends ConfigServerLikeApplication {
public ControllerApplication() {
- super("controller", NodeType.controller, ClusterSpec.Type.container, ServiceType.CONTROLLER);
+ super(InfrastructureApplication.CONTROLLER, ClusterSpec.Type.container, ServiceType.CONTROLLER);
}
}
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ControllerHostApplication.java b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ControllerHostApplication.java
index eaf7537e45c..7e3c8c03cb7 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ControllerHostApplication.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ControllerHostApplication.java
@@ -1,13 +1,13 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.duper;
-import com.yahoo.config.provision.NodeType;
+import com.yahoo.vespa.applicationmodel.InfrastructureApplication;
/**
* @author mpolden
*/
public class ControllerHostApplication extends HostAdminApplication {
public ControllerHostApplication() {
- super("controller-host", NodeType.controllerhost);
+ super(InfrastructureApplication.CONTROLLER_HOST);
}
}
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/DevHostApplication.java b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/DevHostApplication.java
index 65a679d2d33..e522b736290 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/DevHostApplication.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/DevHostApplication.java
@@ -1,13 +1,13 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.duper;
-import com.yahoo.config.provision.NodeType;
+import com.yahoo.vespa.applicationmodel.InfrastructureApplication;
/**
* @author mortent
*/
public class DevHostApplication extends HostAdminApplication {
public DevHostApplication() {
- super("dev-host", NodeType.devhost);
+ super(InfrastructureApplication.DEV_HOST);
}
}
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/HostAdminApplication.java b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/HostAdminApplication.java
index 0b90350b7be..70a8e5e7443 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/HostAdminApplication.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/HostAdminApplication.java
@@ -2,7 +2,7 @@
package com.yahoo.vespa.service.duper;
import com.yahoo.config.provision.ClusterSpec;
-import com.yahoo.config.provision.NodeType;
+import com.yahoo.vespa.applicationmodel.InfrastructureApplication;
import com.yahoo.vespa.applicationmodel.ServiceType;
/**
@@ -12,11 +12,10 @@ public abstract class HostAdminApplication extends InfraApplication {
public static final int HOST_ADMIN_HEALT_PORT = 8080;
- protected HostAdminApplication(String applicationName, NodeType nodeType) {
- super(applicationName,
- nodeType,
+ protected HostAdminApplication(InfrastructureApplication application) {
+ super(application,
ClusterSpec.Type.container,
- ClusterSpec.Id.from(applicationName),
+ ClusterSpec.Id.from(application.applicationName()),
ServiceType.HOST_ADMIN,
HOST_ADMIN_HEALT_PORT);
}
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/InfraApplication.java b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/InfraApplication.java
index 8a62db87e7c..eccffa27930 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/InfraApplication.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/InfraApplication.java
@@ -10,12 +10,11 @@ import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.Capacity;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.HostName;
-import com.yahoo.config.provision.NodeType;
-import com.yahoo.config.provision.TenantName;
import com.yahoo.config.provision.Zone;
import com.yahoo.vespa.applicationmodel.ApplicationInstanceId;
import com.yahoo.vespa.applicationmodel.ClusterId;
import com.yahoo.vespa.applicationmodel.ConfigId;
+import com.yahoo.vespa.applicationmodel.InfrastructureApplication;
import com.yahoo.vespa.applicationmodel.ServiceType;
import com.yahoo.vespa.applicationmodel.TenantId;
import com.yahoo.vespa.service.health.StateV1HealthModel;
@@ -35,30 +34,20 @@ import java.util.stream.Collectors;
*/
public abstract class InfraApplication implements InfraApplicationApi {
- static final TenantName TENANT_NAME = TenantName.from("hosted-vespa");
-
- private final ApplicationId applicationId;
+ private final InfrastructureApplication application;
private final Capacity capacity;
private final ClusterSpec.Type clusterSpecType;
private final ClusterSpec.Id clusterSpecId;
private final ServiceType serviceType;
private final int healthPort;
- public static ApplicationId createHostedVespaApplicationId(String applicationName) {
- return new ApplicationId.Builder()
- .tenant(TENANT_NAME)
- .applicationName(applicationName)
- .build();
- }
-
- protected InfraApplication(String applicationName,
- NodeType nodeType,
+ protected InfraApplication(InfrastructureApplication application,
ClusterSpec.Type clusterSpecType,
ClusterSpec.Id clusterSpecId,
ServiceType serviceType,
int healthPort) {
- this.applicationId = createHostedVespaApplicationId(applicationName);
- this.capacity = Capacity.fromRequiredNodeType(nodeType);
+ this.application = application;
+ this.capacity = Capacity.fromRequiredNodeType(application.nodeType());
this.clusterSpecType = clusterSpecType;
this.clusterSpecId = clusterSpecId;
this.serviceType = serviceType;
@@ -67,7 +56,7 @@ public abstract class InfraApplication implements InfraApplicationApi {
@Override
public ApplicationId getApplicationId() {
- return applicationId;
+ return application.id();
}
@Override
@@ -97,16 +86,16 @@ public abstract class InfraApplication implements InfraApplicationApi {
}
public ApplicationInstanceId getApplicationInstanceId(Zone zone) {
- return ApplicationInstanceGenerator.toApplicationInstanceId(applicationId, zone);
+ return ApplicationInstanceGenerator.toApplicationInstanceId(application.id(), zone);
}
public TenantId getTenantId() {
- return new TenantId(applicationId.tenant().value());
+ return new TenantId(application.id().tenant().value());
}
public ApplicationInfo makeApplicationInfo(List<HostName> hostnames) {
List<HostInfo> hostInfos = hostnames.stream().map(this::makeHostInfo).collect(Collectors.toList());
- return new ApplicationInfo(applicationId, 0, new HostsModel(hostInfos));
+ return new ApplicationInfo(application.id(), 0, new HostsModel(hostInfos));
}
private HostInfo makeHostInfo(HostName hostname) {
@@ -147,7 +136,7 @@ public abstract class InfraApplication implements InfraApplicationApi {
if (o == null || getClass() != o.getClass()) return false;
InfraApplication that = (InfraApplication) o;
return healthPort == that.healthPort &&
- Objects.equals(applicationId, that.applicationId) &&
+ Objects.equals(application, that.application) &&
Objects.equals(capacity, that.capacity) &&
clusterSpecType == that.clusterSpecType &&
Objects.equals(clusterSpecId, that.clusterSpecId) &&
@@ -156,13 +145,13 @@ public abstract class InfraApplication implements InfraApplicationApi {
@Override
public int hashCode() {
- return Objects.hash(applicationId, capacity, clusterSpecType, clusterSpecId, serviceType, healthPort);
+ return Objects.hash(application, capacity, clusterSpecType, clusterSpecId, serviceType, healthPort);
}
@Override
public String toString() {
return "InfraApplication{" +
- "applicationId=" + applicationId +
+ "application=" + application +
", capacity=" + capacity +
", clusterSpecType=" + clusterSpecType +
", clusterSpecId=" + clusterSpecId +
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ProxyHostApplication.java b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ProxyHostApplication.java
index f65dfd5577c..1819548c6cc 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ProxyHostApplication.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ProxyHostApplication.java
@@ -1,10 +1,10 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.duper;
-import com.yahoo.config.provision.NodeType;
+import com.yahoo.vespa.applicationmodel.InfrastructureApplication;
public class ProxyHostApplication extends HostAdminApplication {
public ProxyHostApplication() {
- super("proxy-host", NodeType.proxyhost);
+ super(InfrastructureApplication.PROXY_HOST);
}
}
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/TenantHostApplication.java b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/TenantHostApplication.java
index 7e834a15672..312dd5b64a7 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/TenantHostApplication.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/TenantHostApplication.java
@@ -1,10 +1,10 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.duper;
-import com.yahoo.config.provision.NodeType;
+import com.yahoo.vespa.applicationmodel.InfrastructureApplication;
public class TenantHostApplication extends HostAdminApplication {
public TenantHostApplication() {
- super("tenant-host", NodeType.host);
+ super(InfrastructureApplication.TENANT_HOST);
}
}