diff --git a/echo-telemetry/src/main/java/com/netflix/spinnaker/echo/telemetry/TelemetryEventListener.java b/echo-telemetry/src/main/java/com/netflix/spinnaker/echo/telemetry/TelemetryEventListener.java index 56d94810a..9e676f9c4 100644 --- a/echo-telemetry/src/main/java/com/netflix/spinnaker/echo/telemetry/TelemetryEventListener.java +++ b/echo-telemetry/src/main/java/com/netflix/spinnaker/echo/telemetry/TelemetryEventListener.java @@ -23,6 +23,7 @@ import com.netflix.spinnaker.echo.events.EchoEventListener; import com.netflix.spinnaker.echo.model.Event; import com.netflix.spinnaker.kork.proto.stats.Application; +import com.netflix.spinnaker.kork.proto.stats.CloudProvider; import com.netflix.spinnaker.kork.proto.stats.Execution; import com.netflix.spinnaker.kork.proto.stats.SpinnakerInstance; import com.netflix.spinnaker.kork.proto.stats.Stage; @@ -147,10 +148,23 @@ public void processEvent(Event event) { } private Stage toStage(Map stage) { - return Stage.newBuilder() - .setType(stage.getOrDefault("type", "unknown").toString()) - .setStatus(Status.valueOf(stage.getOrDefault("status", "UNKNOWN").toString().toUpperCase())) - .build(); + Status status = + Status.valueOf(stage.getOrDefault("status", "UNKNOWN").toString().toUpperCase()); + Stage.Builder stageBuilder = + Stage.newBuilder() + .setType(stage.getOrDefault("type", "unknown").toString()) + .setStatus(status); + + Map context = + (Map) stage.getOrDefault("context", new HashMap<>()); + if (context.containsKey("cloudProvider")) { + String cloudProvider = context.get("cloudProvider").toString(); + stageBuilder.setCloudProvider(CloudProvider.newBuilder().setId(cloudProvider).build()); + + // TODO(ttomsu): Figure out how to detect Kubernetes "flavor" - i.e. GKE, EKS, vanilla, etc. + } + + return stageBuilder.build(); } private String hash(String clearText) {