diff options
author | Arne Juul <arnej@vespa.ai> | 2024-04-11 13:23:14 +0000 |
---|---|---|
committer | Arne Juul <arnej@vespa.ai> | 2024-04-12 14:14:15 +0000 |
commit | fa03f7fc1e965cedcde1c6775373aef4c1facef6 (patch) | |
tree | e1e13036ca1cb68ccf5908eec4f4bd322914330d /config-model | |
parent | 1e51fba9cbf5c7bd2480a9df7de56287ec82d848 (diff) |
add API for getting all ports with /state/v1
Diffstat (limited to 'config-model')
-rw-r--r-- | config-model/src/main/java/com/yahoo/config/model/ApplicationConfigProducerRoot.java | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/config-model/src/main/java/com/yahoo/config/model/ApplicationConfigProducerRoot.java b/config-model/src/main/java/com/yahoo/config/model/ApplicationConfigProducerRoot.java index d9d7dd9eaf0..f324ceef5ab 100644 --- a/config-model/src/main/java/com/yahoo/config/model/ApplicationConfigProducerRoot.java +++ b/config-model/src/main/java/com/yahoo/config/model/ApplicationConfigProducerRoot.java @@ -233,6 +233,37 @@ public class ApplicationConfigProducerRoot extends TreeConfigProducer<AnyConfigP } } + // add cluster type? + // add cluster name? + public record StatePortInfo(String hostName, int portNumber, + String serviceName, String serviceType) + {} + + public List<StatePortInfo> getStatePorts() { + List<StatePortInfo> result = new ArrayList<>(); + for (HostResource modelHost : hostSystem().getHosts()) { + String hostName = modelHost.getHostname(); + for (Service modelService : modelHost.getServices()) { + String serviceName = modelService.getServiceName(); + String serviceType = modelService.getServiceType(); + PortsMeta portsMeta = modelService.getPortsMeta(); + for (int i = 0; i < portsMeta.getNumPorts(); i++) { + int portNumber = modelService.getRelativePort(i); + boolean hasState = false; + boolean isHttp = false; + for (String tag : portsMeta.getTagsAt(i)) { + if (tag.equals("state")) hasState = true; + if (tag.equals("http")) isHttp = true; + } + if (hasState && isHttp) { + result.add(new StatePortInfo(hostName, portNumber, serviceName, serviceType)); + } + } + } + } + return result; + } + private List<Services.Builder> getServices(HostResource modelHost) { List<Services.Builder> ret = new ArrayList<>(); for (Service modelService : modelHost.getServices()) { |