diff options
author | Valerij Fredriksen <valerijf@oath.com> | 2018-04-20 10:35:39 +0200 |
---|---|---|
committer | Valerij Fredriksen <valerijf@oath.com> | 2018-04-20 10:35:39 +0200 |
commit | 874867f1d7b7dc382778182d543b29dd1aa59135 (patch) | |
tree | 0e9fb2767ea63925d1c9af73a21ab0dac4fa2d92 /service-monitor/src/main/java/com/yahoo | |
parent | f3be93c03488b6ecdf09a9aa0940a8ec0a35409f (diff) |
Define infrastructure applications
Diffstat (limited to 'service-monitor/src/main/java/com/yahoo')
9 files changed, 130 insertions, 11 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) && |