aboutsummaryrefslogtreecommitdiffstats
path: root/service-monitor/src
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@oath.com>2018-04-20 10:35:39 +0200
committerValerij Fredriksen <valerijf@oath.com>2018-04-20 10:35:39 +0200
commit874867f1d7b7dc382778182d543b29dd1aa59135 (patch)
tree0e9fb2767ea63925d1c9af73a21ab0dac4fa2d92 /service-monitor/src
parentf3be93c03488b6ecdf09a9aa0940a8ec0a35409f (diff)
Define infrastructure applications
Diffstat (limited to 'service-monitor/src')
-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/main/java/com/yahoo/vespa/service/monitor/internal/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/internal/application/ConfigServerHostApplication.java15
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/application/HostedVespaApplication.java57
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/application/ProxyHostApplication.java15
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/application/TenantHostApplication.java15
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/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/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
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/monitor/internal/application/ConfigServerApplicationTest.java (renamed from service-monitor/src/test/java/com/yahoo/vespa/service/monitor/internal/ConfigServerApplicationTest.java)4
12 files changed, 134 insertions, 14 deletions
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..c1f5f7feb1e 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.internal.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..e7e824c312f 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.internal.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..49293d68e2e 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.internal.application.ZoneApplication;
/**
* @author hakon
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/internal/application/ConfigServerApplication.java
index ea86de2b442..c8b624b477c 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/internal/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.internal.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.applicationId.tenant().value());
+ public static final ApplicationInstanceId APPLICATION_INSTANCE_ID =
+ new ApplicationInstanceId(CONFIG_SERVER_APPLICATION.applicationId.application().value());
+ public static final ClusterId CLUSTER_ID = new ClusterId(CONFIG_SERVER_APPLICATION.clusterId.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"), ClusterSpec.Group.from(1));
+ }
+
+ 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/internal/application/ConfigServerHostApplication.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/application/ConfigServerHostApplication.java
new file mode 100644
index 00000000000..0b530a083b8
--- /dev/null
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/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.internal.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"), ClusterSpec.Group.from(1));
+ }
+}
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/application/HostedVespaApplication.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/application/HostedVespaApplication.java
new file mode 100644
index 00000000000..a6fd2da0b9f
--- /dev/null
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/application/HostedVespaApplication.java
@@ -0,0 +1,57 @@
+// 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.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");
+
+ protected final ApplicationId applicationId;
+ protected final Capacity capacity;
+ protected final ClusterSpec.Type clusterType;
+ protected final ClusterSpec.Id clusterId;
+ protected final ClusterSpec.Group clusterGroup;
+
+ protected HostedVespaApplication(String applicationName, NodeType nodeType,
+ ClusterSpec.Type clusterType, ClusterSpec.Id clusterId, ClusterSpec.Group clusterGroup) {
+ this(createHostedVespaApplicationId(applicationName), Capacity.fromRequiredNodeType(nodeType), clusterType, clusterId, clusterGroup);
+ }
+
+ 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 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/internal/application/ProxyHostApplication.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/application/ProxyHostApplication.java
new file mode 100644
index 00000000000..601074dd502
--- /dev/null
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/application/ProxyHostApplication.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.internal.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"), ClusterSpec.Group.from(1));
+ }
+}
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/application/TenantHostApplication.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/application/TenantHostApplication.java
new file mode 100644
index 00000000000..448c240beae
--- /dev/null
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/application/TenantHostApplication.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.internal.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"), ClusterSpec.Group.from(1));
+ }
+}
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/internal/application/ZoneApplication.java
index f7097e867df..03aa6fbdf41 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/internal/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.internal.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/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..8091dcdc07f 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.internal.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..e9a023c7651 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.internal.application.ZoneApplication.ZONE_APPLICATION_ID;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
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/internal/application/ConfigServerApplicationTest.java
index d00dca99116..ee248b21fd8 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/internal/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.internal.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);