aboutsummaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/vespa/model/admin
diff options
context:
space:
mode:
authorArne Juul <arnej@vespa.ai>2024-06-06 12:30:30 +0000
committerArne Juul <arnej@vespa.ai>2024-06-10 11:24:54 +0000
commitb031413cdf4db9c733e09ac8acc464e0cfa58670 (patch)
tree9e3f9015fb50266d18a11c5da62bca3f84fe94f4 /config-model/src/main/java/com/yahoo/vespa/model/admin
parent832426e4de1e5c7995538074e9af746de26e643f (diff)
find parent hostname from nodename
Diffstat (limited to 'config-model/src/main/java/com/yahoo/vespa/model/admin')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/otel/OpenTelemetryCollector.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/otel/OpenTelemetryConfigGenerator.java24
2 files changed, 27 insertions, 2 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/otel/OpenTelemetryCollector.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/otel/OpenTelemetryCollector.java
index 03b96b12c03..364048ff261 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/otel/OpenTelemetryCollector.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/otel/OpenTelemetryCollector.java
@@ -19,11 +19,13 @@ public class OpenTelemetryCollector extends AbstractService implements OpenTelem
private final Zone zone;
private final ApplicationId applicationId;
+ private final boolean isHostedVespa;
public OpenTelemetryCollector(TreeConfigProducer<?> parent) {
super(parent, "otelcol");
this.zone = null;
this.applicationId = null;
+ this.isHostedVespa = false;
setProp("clustertype", "admin");
setProp("clustername", "admin");
}
@@ -32,6 +34,7 @@ public class OpenTelemetryCollector extends AbstractService implements OpenTelem
super(parent, "otelcol");
this.zone = deployState.zone();
this.applicationId = deployState.getProperties().applicationId();
+ this.isHostedVespa = deployState.isHosted();
setProp("clustertype", "admin");
setProp("clustername", "admin");
}
@@ -54,7 +57,7 @@ public class OpenTelemetryCollector extends AbstractService implements OpenTelem
@Override
public void getConfig(OpenTelemetryConfig.Builder builder) {
- var generator = new OpenTelemetryConfigGenerator(zone, applicationId);
+ var generator = new OpenTelemetryConfigGenerator(zone, applicationId, isHostedVespa);
AnyConfigProducer pp = this;
AnyConfigProducer p = pp.getParent();
while (p != null && p != pp) {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/otel/OpenTelemetryConfigGenerator.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/otel/OpenTelemetryConfigGenerator.java
index 9875cf434aa..43a13a3e7c1 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/otel/OpenTelemetryConfigGenerator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/otel/OpenTelemetryConfigGenerator.java
@@ -20,6 +20,7 @@ import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.regex.Pattern;
import static com.yahoo.vespa.defaults.Defaults.getDefaults;
@@ -35,10 +36,12 @@ public class OpenTelemetryConfigGenerator {
private List<StatePortInfo> statePorts = new ArrayList<>();
private final Zone zone;
private final ApplicationId applicationId;
+ private final boolean isHostedVespa;
- OpenTelemetryConfigGenerator(Zone zone, ApplicationId applicationId) {
+ OpenTelemetryConfigGenerator(Zone zone, ApplicationId applicationId, boolean isHostedVespa) {
this.zone = zone;
this.applicationId = applicationId;
+ this.isHostedVespa = isHostedVespa;
boolean isCd = true;
boolean isPublic = true;
if (zone != null) {
@@ -103,10 +106,29 @@ public class OpenTelemetryConfigGenerator {
g.writeStringField(entry.getKey(), entry.getValue());
}
}
+ String ph = findParentHost(statePort.hostName());
+ if (isHostedVespa && ph != null) {
+ g.writeStringField("parentHostname", ph);
+ }
g.writeEndObject();
}
g.writeEndObject();
}
+ // note: this pattern should match entire node name
+ static private final Pattern expectedNodeName1 = Pattern.compile("[a-z0-9]+-v6-[0-9]+[.].+");
+ static private final Pattern expectedNodeName2 = Pattern.compile("[a-z]*[0-9]+[a-z][.].+");
+ // matches the part we want to replace with just a dot
+ static private final Pattern replaceNodeName1 = Pattern.compile("-v6-[0-9]+[.]");
+ static private final Pattern replaceNodeName2 = Pattern.compile("[a-z][.]");
+ static String findParentHost(String nodeName) {
+ if (expectedNodeName1.matcher(nodeName).matches()) {
+ return replaceNodeName1.matcher(nodeName).replaceFirst(".");
+ }
+ if (expectedNodeName2.matcher(nodeName).matches()) {
+ return replaceNodeName2.matcher(nodeName).replaceFirst(".");
+ }
+ return null;
+ }
private void addTls(JsonGenerator g) throws java.io.IOException {
g.writeFieldName("tls");
g.writeStartObject();