summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorValerij Fredriksen <freva@users.noreply.github.com>2018-04-27 15:26:13 +0200
committerGitHub <noreply@github.com>2018-04-27 15:26:13 +0200
commitc0594d357fd07c8d956d854c11d710924a277108 (patch)
tree38587dcfb37ba9aafc2e61337634726129d85248
parent79defbeb5cfd23b57b56e3e1dbd38478fbb8d4b9 (diff)
parent5095ff2fbc441cc871e28bb02c313dd57d8a4863 (diff)
Merge pull request #5641 from vespa-engine/freva/define-infrastructure-applications
Define infrastructure applications
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/monitor/application/ConfigServerApplication.java (renamed from service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/ConfigServerApplication.java)22
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/monitor/application/ConfigServerHostApplication.java15
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/monitor/application/HostedVespaApplication.java69
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/monitor/application/ProxyHostApplication.java14
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/monitor/application/TenantHostApplication.java14
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/monitor/application/ZoneApplication.java (renamed from service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/ZoneApplication.java)12
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/monitor/application/package-info.java8
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/HealthMonitorManager.java1
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/ModelGenerator.java3
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/UnionMonitorManager.java1
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/monitor/application/ConfigServerApplicationTest.java (renamed from service-monitor/src/test/java/com/yahoo/vespa/service/monitor/internal/ConfigServerApplicationTest.java)4
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/monitor/internal/ModelGeneratorTest.java1
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/monitor/internal/UnionMonitorManagerTest.java2
13 files changed, 152 insertions, 14 deletions
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/ConfigServerApplication.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/application/ConfigServerApplication.java
index ea86de2b442..120a12609e1 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/ConfigServerApplication.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/application/ConfigServerApplication.java
@@ -1,6 +1,8 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.service.monitor.internal;
+package com.yahoo.vespa.service.monitor.application;
+import com.yahoo.config.provision.ClusterSpec;
+import com.yahoo.config.provision.NodeType;
import com.yahoo.vespa.applicationmodel.ApplicationInstance;
import com.yahoo.vespa.applicationmodel.ApplicationInstanceId;
import com.yahoo.vespa.applicationmodel.ClusterId;
@@ -20,14 +22,22 @@ import java.util.stream.Stream;
/**
* A service/application model of the config server with health status.
*/
-public class ConfigServerApplication {
- public static final ClusterId CLUSTER_ID = new ClusterId("zone-config-servers");
+public class ConfigServerApplication extends HostedVespaApplication {
+
+ public static final ConfigServerApplication CONFIG_SERVER_APPLICATION = new ConfigServerApplication();
+ public static final TenantId TENANT_ID = new TenantId(CONFIG_SERVER_APPLICATION.getApplicationId().tenant().value());
+ public static final ApplicationInstanceId APPLICATION_INSTANCE_ID =
+ new ApplicationInstanceId(CONFIG_SERVER_APPLICATION.getApplicationId().application().value());
+ public static final ClusterId CLUSTER_ID = new ClusterId(CONFIG_SERVER_APPLICATION.getClusterId().value());
public static final ServiceType SERVICE_TYPE = new ServiceType("configserver");
- public static final TenantId TENANT_ID = new TenantId("hosted-vespa");
- public static final ApplicationInstanceId APPLICATION_INSTANCE_ID = new ApplicationInstanceId("zone-config-servers");
public static final String CONFIG_ID_PREFIX = "configid.";
- ApplicationInstance toApplicationInstance(List<String> hostnames) {
+ private ConfigServerApplication() {
+ super("zone-config-servers", NodeType.config,
+ ClusterSpec.Type.admin, ClusterSpec.Id.from("zone-config-servers"));
+ }
+
+ public ApplicationInstance toApplicationInstance(List<String> hostnames) {
Set<ServiceInstance> serviceInstances = hostnames.stream()
.map(hostname -> new ServiceInstance(
new ConfigId(CONFIG_ID_PREFIX + hostname),
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/application/ConfigServerHostApplication.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/application/ConfigServerHostApplication.java
new file mode 100644
index 00000000000..18420fe64a1
--- /dev/null
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/application/ConfigServerHostApplication.java
@@ -0,0 +1,15 @@
+// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.service.monitor.application;
+
+import com.yahoo.config.provision.ClusterSpec;
+import com.yahoo.config.provision.NodeType;
+
+public class ConfigServerHostApplication extends HostedVespaApplication {
+
+ public static final ConfigServerHostApplication CONFIG_SERVER_HOST_APPLICATION = new ConfigServerHostApplication();
+
+ private ConfigServerHostApplication() {
+ super("configserver-host", NodeType.confighost,
+ ClusterSpec.Type.container, ClusterSpec.Id.from("configserver-host"));
+ }
+}
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/application/HostedVespaApplication.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/application/HostedVespaApplication.java
new file mode 100644
index 00000000000..55965705567
--- /dev/null
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/application/HostedVespaApplication.java
@@ -0,0 +1,69 @@
+// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.service.monitor.application;
+
+import com.yahoo.config.provision.ApplicationId;
+import com.yahoo.config.provision.Capacity;
+import com.yahoo.config.provision.ClusterSpec;
+import com.yahoo.config.provision.NodeType;
+import com.yahoo.config.provision.TenantName;
+import com.yahoo.component.Version;
+
+/**
+ * @author freva
+ */
+public abstract class HostedVespaApplication {
+
+ public static final TenantName TENANT_NAME = TenantName.from("hosted-vespa");
+
+ private final ApplicationId applicationId;
+ private final Capacity capacity;
+ private final ClusterSpec.Type clusterType;
+ private final ClusterSpec.Id clusterId;
+ private final ClusterSpec.Group clusterGroup;
+
+ protected HostedVespaApplication(String applicationName, NodeType nodeType,
+ ClusterSpec.Type clusterType, ClusterSpec.Id clusterId) {
+ this(createHostedVespaApplicationId(applicationName), Capacity.fromRequiredNodeType(nodeType),
+ clusterType, clusterId, ClusterSpec.Group.from(0));
+ }
+
+ protected HostedVespaApplication(ApplicationId applicationId, Capacity capacity,
+ ClusterSpec.Type clusterType, ClusterSpec.Id clusterId, ClusterSpec.Group clusterGroup) {
+ this.applicationId = applicationId;
+ this.capacity = capacity;
+ this.clusterType = clusterType;
+ this.clusterId = clusterId;
+ this.clusterGroup = clusterGroup;
+ }
+
+ public ApplicationId getApplicationId() {
+ return applicationId;
+ }
+
+ public Capacity getCapacity() {
+ return capacity;
+ }
+
+ public ClusterSpec getClusterSpecWithVersion(Version version) {
+ return ClusterSpec.from(clusterType, clusterId, clusterGroup, version, true);
+ }
+
+ public ClusterSpec.Type getClusterType() {
+ return clusterType;
+ }
+
+ public ClusterSpec.Id getClusterId() {
+ return clusterId;
+ }
+
+ public ClusterSpec.Group getClusterGroup() {
+ return clusterGroup;
+ }
+
+ public static ApplicationId createHostedVespaApplicationId(String applicationName) {
+ return new ApplicationId.Builder()
+ .tenant(TENANT_NAME)
+ .applicationName(applicationName)
+ .build();
+ }
+}
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/application/ProxyHostApplication.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/application/ProxyHostApplication.java
new file mode 100644
index 00000000000..c1af7a0977e
--- /dev/null
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/application/ProxyHostApplication.java
@@ -0,0 +1,14 @@
+// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.service.monitor.application;
+
+import com.yahoo.config.provision.ClusterSpec;
+import com.yahoo.config.provision.NodeType;
+
+public class ProxyHostApplication extends HostedVespaApplication {
+
+ public static final ProxyHostApplication PROXY_HOST_APPLICATION = new ProxyHostApplication();
+
+ private ProxyHostApplication() {
+ super("proxy-host", NodeType.proxyhost, ClusterSpec.Type.container, ClusterSpec.Id.from("proxy-host"));
+ }
+}
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/application/TenantHostApplication.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/application/TenantHostApplication.java
new file mode 100644
index 00000000000..27879a03c08
--- /dev/null
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/application/TenantHostApplication.java
@@ -0,0 +1,14 @@
+// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.service.monitor.application;
+
+import com.yahoo.config.provision.ClusterSpec;
+import com.yahoo.config.provision.NodeType;
+
+public class TenantHostApplication extends HostedVespaApplication {
+
+ public static final TenantHostApplication TENANT_HOST_APPLICATION = new TenantHostApplication();
+
+ private TenantHostApplication() {
+ super("tenant-host", NodeType.host, ClusterSpec.Type.container, ClusterSpec.Id.from("tenant-host"));
+ }
+}
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/ZoneApplication.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/application/ZoneApplication.java
index f7097e867df..6bbf0cb6d1d 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/ZoneApplication.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/application/ZoneApplication.java
@@ -1,5 +1,5 @@
// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.service.monitor.internal;
+package com.yahoo.vespa.service.monitor.application;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.vespa.applicationmodel.ClusterId;
@@ -9,14 +9,18 @@ import java.util.Objects;
/**
* @author hakon
+ *
+ * TODO: This does not extend HostedVespaApplication because
+ * 1) It is not deployed same as the other HostedVespaApplications
+ * 2) ZoneApplication has multiple clusters
*/
public class ZoneApplication {
private ZoneApplication() {}
- static final ApplicationId ZONE_APPLICATION_ID =
- ApplicationId.from("hosted-vespa", "routing", "default");
+ public static final ApplicationId ZONE_APPLICATION_ID = HostedVespaApplication
+ .createHostedVespaApplicationId("routing");
- static boolean isNodeAdminService(ApplicationId applicationId,
+ public static boolean isNodeAdminService(ApplicationId applicationId,
ClusterId clusterId,
ServiceType serviceType) {
return Objects.equals(applicationId, ZONE_APPLICATION_ID) &&
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/application/package-info.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/application/package-info.java
new file mode 100644
index 00000000000..a5b98074567
--- /dev/null
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/application/package-info.java
@@ -0,0 +1,8 @@
+// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+/*
+ * @author freva
+ */
+@ExportPackage
+package com.yahoo.vespa.service.monitor.application;
+
+import com.yahoo.osgi.annotation.ExportPackage;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/HealthMonitorManager.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/HealthMonitorManager.java
index 121e1fd5ebf..072886098d7 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/HealthMonitorManager.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/HealthMonitorManager.java
@@ -9,6 +9,7 @@ import com.yahoo.vespa.applicationmodel.ClusterId;
import com.yahoo.vespa.applicationmodel.ConfigId;
import com.yahoo.vespa.applicationmodel.ServiceStatus;
import com.yahoo.vespa.applicationmodel.ServiceType;
+import com.yahoo.vespa.service.monitor.application.ZoneApplication;
/**
* @author hakon
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/ModelGenerator.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/ModelGenerator.java
index ca70b18439b..c4952979518 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/ModelGenerator.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/ModelGenerator.java
@@ -21,6 +21,7 @@ import com.yahoo.vespa.applicationmodel.ServiceType;
import com.yahoo.vespa.applicationmodel.TenantId;
import com.yahoo.vespa.service.monitor.ServiceModel;
import com.yahoo.vespa.service.monitor.ServiceStatusProvider;
+import com.yahoo.vespa.service.monitor.application.ConfigServerApplication;
import java.util.HashMap;
import java.util.HashSet;
@@ -58,7 +59,7 @@ public class ModelGenerator {
// The config server is part of the service model (but not super model)
if (!configServerHosts.isEmpty()) {
- ConfigServerApplication configServerApplication = new ConfigServerApplication();
+ ConfigServerApplication configServerApplication = ConfigServerApplication.CONFIG_SERVER_APPLICATION;
ApplicationInstance configServerApplicationInstance =
configServerApplication.toApplicationInstance(configServerHosts);
applicationInstances.put(configServerApplicationInstance.reference(), configServerApplicationInstance);
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/UnionMonitorManager.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/UnionMonitorManager.java
index 0bb4dea5a94..e224d6bfd12 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/UnionMonitorManager.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/UnionMonitorManager.java
@@ -9,6 +9,7 @@ import com.yahoo.vespa.applicationmodel.ClusterId;
import com.yahoo.vespa.applicationmodel.ConfigId;
import com.yahoo.vespa.applicationmodel.ServiceStatus;
import com.yahoo.vespa.applicationmodel.ServiceType;
+import com.yahoo.vespa.service.monitor.application.ZoneApplication;
/**
* @author hakon
diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/monitor/internal/ConfigServerApplicationTest.java b/service-monitor/src/test/java/com/yahoo/vespa/service/monitor/application/ConfigServerApplicationTest.java
index d00dca99116..7fa6f82e183 100644
--- a/service-monitor/src/test/java/com/yahoo/vespa/service/monitor/internal/ConfigServerApplicationTest.java
+++ b/service-monitor/src/test/java/com/yahoo/vespa/service/monitor/application/ConfigServerApplicationTest.java
@@ -1,5 +1,5 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.service.monitor.internal;
+package com.yahoo.vespa.service.monitor.application;
import com.yahoo.vespa.applicationmodel.ApplicationInstance;
import com.yahoo.vespa.applicationmodel.ServiceStatus;
@@ -23,7 +23,7 @@ public class ConfigServerApplicationTest {
@Test
public void toApplicationInstance() throws Exception {
- ConfigServerApplication application = new ConfigServerApplication();
+ ConfigServerApplication application = ConfigServerApplication.CONFIG_SERVER_APPLICATION;
ApplicationInstance applicationInstance =
application.toApplicationInstance(configServerList);
diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/monitor/internal/ModelGeneratorTest.java b/service-monitor/src/test/java/com/yahoo/vespa/service/monitor/internal/ModelGeneratorTest.java
index 1348c04a7e5..6e9fc25382a 100644
--- a/service-monitor/src/test/java/com/yahoo/vespa/service/monitor/internal/ModelGeneratorTest.java
+++ b/service-monitor/src/test/java/com/yahoo/vespa/service/monitor/internal/ModelGeneratorTest.java
@@ -11,6 +11,7 @@ import com.yahoo.vespa.applicationmodel.ServiceCluster;
import com.yahoo.vespa.applicationmodel.ServiceInstance;
import com.yahoo.vespa.applicationmodel.ServiceStatus;
import com.yahoo.vespa.service.monitor.ServiceModel;
+import com.yahoo.vespa.service.monitor.application.ConfigServerApplication;
import org.junit.Test;
import java.util.Collections;
diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/monitor/internal/UnionMonitorManagerTest.java b/service-monitor/src/test/java/com/yahoo/vespa/service/monitor/internal/UnionMonitorManagerTest.java
index 2597ebe65d3..e557f0451f4 100644
--- a/service-monitor/src/test/java/com/yahoo/vespa/service/monitor/internal/UnionMonitorManagerTest.java
+++ b/service-monitor/src/test/java/com/yahoo/vespa/service/monitor/internal/UnionMonitorManagerTest.java
@@ -10,7 +10,7 @@ import org.junit.Test;
import static com.yahoo.vespa.applicationmodel.ClusterId.NODE_ADMIN;
import static com.yahoo.vespa.applicationmodel.ServiceType.CONTAINER;
-import static com.yahoo.vespa.service.monitor.internal.ZoneApplication.ZONE_APPLICATION_ID;
+import static com.yahoo.vespa.service.monitor.application.ZoneApplication.ZONE_APPLICATION_ID;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;