in custom-metrics-stackdriver-adapter/pkg/adapter/translator/response_translator.go [240:262]
func (t *Translator) metricKey(timeSeries *stackdriver.TimeSeries, resourceSchema string) (string, error) {
if t.useNewResourceModel {
switch timeSeries.Resource.Type {
case "k8s_pod":
return timeSeries.Resource.Labels["namespace_name"] + ":" + timeSeries.Resource.Labels["pod_name"], nil
case "k8s_container":
// The same key as pod, because only one container in pod can provide specific metric. Uniqueness is checked in CheckMetricUniquenessForPod.
return timeSeries.Resource.Labels["namespace_name"] + ":" + timeSeries.Resource.Labels["pod_name"], nil
case "k8s_node":
return ":" + timeSeries.Resource.Labels["node_name"], nil
case "prometheus_target":
if resourceSchema == "nodes" {
return ":" + timeSeries.Metric.Labels["node"], nil
}
return timeSeries.Resource.Labels["namespace"] + ":" + timeSeries.Metric.Labels["pod"], nil
default:
klog.Errorf("Expected resource type as one of [\"k8s_pod\", \"k8s_container\", \"k8s_node\", \"prometheus_target\"], but received %s", timeSeries.Resource.Type)
}
} else {
return timeSeries.Resource.Labels["pod_id"], nil
}
return "", apierr.NewInternalError(fmt.Errorf("Stackdriver returned incorrect resource type %q", timeSeries.Resource.Type))
}