summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorArne Juul <arnej@vespa.ai>2024-04-11 13:23:14 +0000
committerArne Juul <arnej@vespa.ai>2024-04-12 14:14:15 +0000
commitfa03f7fc1e965cedcde1c6775373aef4c1facef6 (patch)
treee1e13036ca1cb68ccf5908eec4f4bd322914330d /config-model
parent1e51fba9cbf5c7bd2480a9df7de56287ec82d848 (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.java31
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()) {