summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ServiceMonitorStub.java3
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestratorImpl.java4
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestratorUtil.java12
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/InstanceRequestHandler.java2
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/DummyServiceMonitor.java8
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/OrchestratorImplTest.java4
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ModelTestUtils.java2
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostRequestHandlerTest.java3
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/model/ApplicationInstanceGenerator.java9
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/model/ModelGenerator.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/model/ServiceMonitorImpl.java7
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceModel.java14
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceMonitor.java5
13 files changed, 34 insertions, 41 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ServiceMonitorStub.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ServiceMonitorStub.java
index e0b8fcc5feb..8c57027d0a4 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ServiceMonitorStub.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ServiceMonitorStub.java
@@ -3,6 +3,7 @@ package com.yahoo.vespa.hosted.provision.testutils;
import com.yahoo.component.annotation.Inject;
import com.yahoo.config.provision.ApplicationId;
+import com.yahoo.config.provision.Zone;
import com.yahoo.vespa.applicationmodel.ApplicationInstance;
import com.yahoo.vespa.applicationmodel.ApplicationInstanceId;
import com.yahoo.vespa.applicationmodel.ApplicationInstanceReference;
@@ -62,7 +63,7 @@ public class ServiceMonitorStub implements ServiceMonitor {
@Override
public ServiceModel getServiceModelSnapshot() {
- return new ServiceModel(getAllApplicationInstances());
+ return new ServiceModel(getAllApplicationInstances(), Zone.defaultZone());
}
private Map<ApplicationInstanceReference, ApplicationInstance> getAllApplicationInstances() {
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestratorImpl.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestratorImpl.java
index 49fab7522ba..99c2fa11825 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestratorImpl.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestratorImpl.java
@@ -380,7 +380,7 @@ public class OrchestratorImpl implements Orchestrator {
OrchestratorContext context = OrchestratorContext.createContextForSingleAppOp(clock);
ApplicationInstanceReference reference = OrchestratorUtil.toApplicationInstanceReference(appId, serviceMonitor);
- ApplicationInstance application = serviceMonitor.getApplication(reference)
+ ApplicationInstance application = serviceMonitor.getApplication(appId)
.orElseThrow(ApplicationIdNotFoundException::new);
try (ApplicationLock lock = statusService.lockApplication(context, reference)) {
@@ -412,7 +412,7 @@ public class OrchestratorImpl implements Orchestrator {
@Override
public boolean isQuiescent(ApplicationId id) {
try {
- ApplicationInstance application = serviceMonitor.getApplication(OrchestratorUtil.toApplicationInstanceReference(id, serviceMonitor))
+ ApplicationInstance application = serviceMonitor.getApplication(id)
.orElseThrow(ApplicationIdNotFoundException::new);
List<ServiceCluster> contentClusters = application.serviceClusters().stream()
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestratorUtil.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestratorUtil.java
index 3093a2a9828..c232cd95a2f 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestratorUtil.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestratorUtil.java
@@ -14,13 +14,10 @@ import com.yahoo.vespa.applicationmodel.ServiceInstance;
import com.yahoo.vespa.applicationmodel.TenantId;
import com.yahoo.vespa.service.monitor.ServiceMonitor;
-import java.util.Collection;
import java.util.List;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
import static java.util.stream.Collectors.toSet;
@@ -91,7 +88,6 @@ public class OrchestratorUtil {
}
public static ApplicationId toApplicationId(ApplicationInstanceReference appRef) {
-
String appNameStr = appRef.asString();
String[] appNameParts = appNameStr.split(":");
@@ -99,8 +95,8 @@ public class OrchestratorUtil {
// Assume here that first two are tenant and application name.
if (appNameParts.length == 2) {
return ApplicationId.from(TenantName.from(appNameParts[0]),
- ApplicationName.from(appNameParts[1]),
- InstanceName.defaultName());
+ ApplicationName.from(appNameParts[1]),
+ InstanceName.defaultName());
}
// Other normal application should have 5 parts.
@@ -109,8 +105,8 @@ public class OrchestratorUtil {
}
return ApplicationId.from(TenantName.from(appNameParts[0]),
- ApplicationName.from(appNameParts[1]),
- InstanceName.from(appNameParts[4]));
+ ApplicationName.from(appNameParts[1]),
+ InstanceName.from(appNameParts[4]));
}
}
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/InstanceRequestHandler.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/InstanceRequestHandler.java
index 0964a3f7dd5..67899849def 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/InstanceRequestHandler.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/InstanceRequestHandler.java
@@ -98,7 +98,7 @@ public class InstanceRequestHandler extends RestApiRequestHandler<InstanceReques
ApplicationInstanceReference instanceId = parseInstanceId(instanceIdString);
ApplicationInstance applicationInstance
- = serviceMonitor.getApplication(instanceId)
+ = serviceMonitor.getApplication(OrchestratorUtil.toApplicationId(instanceId))
.orElseThrow(RestApiException.NotFound::new);
HostInfos hostInfos = statusService.getHostInfosByApplicationResolver().apply(applicationInstance.reference());
diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/DummyServiceMonitor.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/DummyServiceMonitor.java
index 853dc17a3fc..689bc32ca6a 100644
--- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/DummyServiceMonitor.java
+++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/DummyServiceMonitor.java
@@ -153,14 +153,6 @@ public class DummyServiceMonitor implements ServiceMonitor, AntiServiceMonitor {
}
@Override
- public Optional<ApplicationInstance> getApplication(ApplicationInstanceReference reference) {
- for (ApplicationInstance app : apps) {
- if (app.reference().equals(reference)) return Optional.of(app);
- }
- return Optional.empty();
- }
-
- @Override
public CriticalRegion disallowDuperModelLockAcquisition(String regionDescription) {
return () -> {};
}
diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/OrchestratorImplTest.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/OrchestratorImplTest.java
index 70a8381c9ac..b82ea245261 100644
--- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/OrchestratorImplTest.java
+++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/OrchestratorImplTest.java
@@ -442,7 +442,7 @@ public class OrchestratorImplTest {
ccHost,
ServiceStatus.UP)))));
- ServiceMonitor serviceMonitor = () -> new ServiceModel(Map.of(reference, applicationInstance));
+ ServiceMonitor serviceMonitor = () -> new ServiceModel(Map.of(reference, applicationInstance), zone);
ClusterControllerClientFactory clusterControllerClientFactory = mock(ClusterControllerClientFactory.class);
ClusterControllerClient fooClient = mock(ClusterControllerClient.class);
@@ -508,7 +508,7 @@ public class OrchestratorImplTest {
hostName,
ServiceStatus.NOT_CHECKED)))));
- ServiceMonitor serviceMonitor = () -> new ServiceModel(Map.of(reference, applicationInstance));
+ ServiceMonitor serviceMonitor = () -> new ServiceModel(Map.of(reference, applicationInstance), zone);
orchestrator = new OrchestratorImpl(new HostedVespaPolicy(new HostedVespaClusterPolicy(flagSource, zone),
clusterControllerClientFactory,
diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ModelTestUtils.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ModelTestUtils.java
index f2e2972ae9f..d93a8353fa3 100644
--- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ModelTestUtils.java
+++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ModelTestUtils.java
@@ -74,7 +74,7 @@ class ModelTestUtils {
private final Map<ApplicationInstanceReference, ApplicationInstance> applications = new HashMap<>();
private final ClusterControllerClientFactory clusterControllerClientFactory = new ClusterControllerClientFactoryMock();
private final Map<HostName, HostStatus> hostStatusMap = new HashMap<>();
- private final ServiceMonitor serviceMonitor = () -> new ServiceModel(applications);
+ private final ServiceMonitor serviceMonitor = () -> new ServiceModel(applications, Zone.defaultZone());
private final StatusService statusService = new ZkStatusService(
new MockCurator(),
mock(Metric.class),
diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostRequestHandlerTest.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostRequestHandlerTest.java
index b9dab4b3aeb..f3f2bb18400 100644
--- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostRequestHandlerTest.java
+++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostRequestHandlerTest.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.orchestrator.resources;
import com.yahoo.concurrent.UncheckedTimeoutException;
+import com.yahoo.config.provision.Zone;
import com.yahoo.container.jdisc.HttpRequestBuilder;
import com.yahoo.container.jdisc.HttpResponse;
import com.yahoo.jdisc.Metric;
@@ -91,7 +92,7 @@ class HostRequestHandlerTest {
}
private static final ServiceMonitor alwaysEmptyServiceMonitor = new ServiceMonitor() {
- private final ServiceModel emptyServiceModel = new ServiceModel(Map.of());
+ private final ServiceModel emptyServiceModel = new ServiceModel(Map.of(), Zone.defaultZone());
@Override
public ServiceModel getServiceModelSnapshot() {
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/model/ApplicationInstanceGenerator.java b/service-monitor/src/main/java/com/yahoo/vespa/service/model/ApplicationInstanceGenerator.java
index ac62ee4bdab..24677061334 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/model/ApplicationInstanceGenerator.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/model/ApplicationInstanceGenerator.java
@@ -28,7 +28,6 @@ import com.yahoo.vespa.service.monitor.ServiceStatusProvider;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
-import java.util.Objects;
import java.util.Set;
import java.util.function.Predicate;
import java.util.stream.Collectors;
@@ -61,18 +60,12 @@ public class ApplicationInstanceGenerator {
return toApplicationInstanceReference(applicationInfo.getApplicationId(), zone);
}
- static ApplicationInstanceReference toApplicationInstanceReference(ApplicationId applicationId, Zone zone) {
+ public static ApplicationInstanceReference toApplicationInstanceReference(ApplicationId applicationId, Zone zone) {
TenantId tenantId = new TenantId(applicationId.tenant().toString());
ApplicationInstanceId applicationInstanceId = toApplicationInstanceId(applicationId, zone);
return new ApplicationInstanceReference(tenantId, applicationInstanceId);
}
- public boolean containsHostname(HostName hostname) {
- return applicationInfo.getModel().getHosts().stream()
- .map(HostInfo::getHostname)
- .anyMatch(hostnameString -> Objects.equals(hostnameString, hostname.s()));
- }
-
public ApplicationInstance makeApplicationInstanceLimitedTo(
HostName hostname, ServiceStatusProvider serviceStatusProvider) {
return makeApplicationInstanceLimitedToHosts(
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/model/ModelGenerator.java b/service-monitor/src/main/java/com/yahoo/vespa/service/model/ModelGenerator.java
index 043e4a186d3..3acd4cd1102 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/model/ModelGenerator.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/model/ModelGenerator.java
@@ -41,7 +41,7 @@ public class ModelGenerator {
.makeApplicationInstance(serviceStatusProvider))
.collect(Collectors.toMap(ApplicationInstance::reference, Function.identity()));
- return new ServiceModel(applicationInstances);
+ return new ServiceModel(applicationInstances, zone);
}
public Set<ApplicationInstanceReference> toApplicationInstanceReferenceSet(List<ApplicationInfo> infos) {
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/model/ServiceMonitorImpl.java b/service-monitor/src/main/java/com/yahoo/vespa/service/model/ServiceMonitorImpl.java
index 53db7cc135c..c4a3123db57 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/model/ServiceMonitorImpl.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/model/ServiceMonitorImpl.java
@@ -81,8 +81,8 @@ public class ServiceMonitorImpl implements ServiceMonitor, AntiServiceMonitor {
}
@Override
- public Optional<ApplicationInstance> getApplication(ApplicationInstanceReference reference) {
- return getApplicationInfo(reference)
+ public Optional<ApplicationInstance> getApplication(ApplicationId applicationId) {
+ return getApplicationInfo(applicationId)
.map(applicationInfo -> modelGenerator.toApplicationInstance(applicationInfo, serviceStatusProvider));
}
@@ -108,8 +108,7 @@ public class ServiceMonitorImpl implements ServiceMonitor, AntiServiceMonitor {
return duperModelManager.disallowDuperModelLockAcquisition(regionDescription);
}
- private Optional<ApplicationInfo> getApplicationInfo(ApplicationInstanceReference reference) {
- ApplicationId applicationId = ApplicationInstanceGenerator.toApplicationId(reference);
+ private Optional<ApplicationInfo> getApplicationInfo(ApplicationId applicationId) {
return duperModelManager.getApplicationInfo(applicationId);
}
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceModel.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceModel.java
index 6079c76519f..8e3bee7bc7e 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceModel.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceModel.java
@@ -2,6 +2,8 @@
package com.yahoo.vespa.service.monitor;
import com.yahoo.config.model.api.ApplicationInfo;
+import com.yahoo.config.provision.ApplicationId;
+import com.yahoo.config.provision.Zone;
import com.yahoo.vespa.applicationmodel.ApplicationInstance;
import com.yahoo.vespa.applicationmodel.ApplicationInstanceReference;
import com.yahoo.vespa.applicationmodel.HostName;
@@ -16,6 +18,8 @@ import java.util.List;
import java.util.Map;
import java.util.Optional;
+import static com.yahoo.vespa.service.model.ApplicationInstanceGenerator.toApplicationInstanceReference;
+
/**
* The service model is the union of the duper model and the service monitor, and presented
* as classes from the {@code application-model} module.
@@ -31,12 +35,14 @@ import java.util.Optional;
public class ServiceModel {
private final Map<ApplicationInstanceReference, ApplicationInstance> applicationsByReference;
+ private final Zone zone;
private Map<HostName, ApplicationInstance> applicationsByHostName = null;
private Map<HostName, List<ServiceInstance>> servicesByHostName = null;
- public ServiceModel(Map<ApplicationInstanceReference, ApplicationInstance> applicationsByReference) {
- this.applicationsByReference = Collections.unmodifiableMap(Map.copyOf(applicationsByReference));
+ public ServiceModel(Map<ApplicationInstanceReference, ApplicationInstance> applicationsByReference, Zone zone) {
+ this.applicationsByReference = Map.copyOf(applicationsByReference);
+ this.zone = zone;
}
public Map<ApplicationInstanceReference, ApplicationInstance> getAllApplicationInstances() {
@@ -47,6 +53,10 @@ public class ServiceModel {
return Optional.ofNullable(applicationsByReference.get(reference));
}
+ public Optional<ApplicationInstance> getApplicationInstance(ApplicationId applicationId) {
+ return Optional.ofNullable(applicationsByReference.get(toApplicationInstanceReference(applicationId, zone)));
+ }
+
public Optional<ApplicationInstance> getApplication(HostName hostname) {
if (applicationsByHostName == null) {
fillMaps();
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceMonitor.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceMonitor.java
index b3f77b3ef7b..570e0948499 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceMonitor.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceMonitor.java
@@ -1,6 +1,7 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.monitor;
+import com.yahoo.config.provision.ApplicationId;
import com.yahoo.vespa.applicationmodel.ApplicationInstance;
import com.yahoo.vespa.applicationmodel.ApplicationInstanceReference;
import com.yahoo.vespa.applicationmodel.HostName;
@@ -36,8 +37,8 @@ public interface ServiceMonitor {
return getServiceModelSnapshot().getApplication(hostname);
}
- default Optional<ApplicationInstance> getApplication(ApplicationInstanceReference reference) {
- return getServiceModelSnapshot().getApplicationInstance(reference);
+ default Optional<ApplicationInstance> getApplication(ApplicationId applicationId) {
+ return getServiceModelSnapshot().getApplicationInstance(applicationId);
}
default Optional<ApplicationInstance> getApplicationNarrowedTo(HostName hostname) {