diff options
author | HÃ¥kon Hallingstad <hakon.hallingstad@gmail.com> | 2023-06-19 09:34:51 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-19 09:34:51 +0200 |
commit | 030425589c31cd4f20343c635251a33a753dc2fa (patch) | |
tree | 203e76b85dfa8ca25f95730034432aafc0eeeee1 /service-monitor | |
parent | 377edf7bd7b22780d2a13bdd76b89ab3f12461c2 (diff) | |
parent | 6f12901db6b9e4936a0931e232dfd23868c80d63 (diff) |
Merge pull request #27457 from vespa-engine/hmusum/reduce-use-of-ApplicationInstanceReference
Use ApplicationId instead of ApplicationInstanceReference where possible
Diffstat (limited to 'service-monitor')
5 files changed, 18 insertions, 19 deletions
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..e8bbaa4b670 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,20 +35,22 @@ 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() { return applicationsByReference; } - public Optional<ApplicationInstance> getApplicationInstance(ApplicationInstanceReference reference) { - 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) { 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) { |