in custom-metrics-stackdriver-adapter/pkg/adapter/translator/query_builder.go [513:533]
func (t *Translator) GetMetricKind(metricName string, metricSelector labels.Selector) (string, string, error) {
metricProj := t.config.Project
requirements, selectable := metricSelector.Requirements()
if !selectable {
return "", "", apierr.NewBadRequest(fmt.Sprintf("Label selector is impossible to match: %s", metricSelector))
}
for _, req := range requirements {
if req.Key() == "resource.labels.project_id" {
if req.Operator() == selection.Equals || req.Operator() == selection.DoubleEquals {
metricProj = req.Values().List()[0]
break
}
return "", "", NewLabelNotAllowedError(fmt.Sprintf("Project selector must use '=' or '==': You used %s", req.Operator()))
}
}
response, err := t.service.Projects.MetricDescriptors.Get(fmt.Sprintf("projects/%s/metricDescriptors/%s", metricProj, metricName)).Do()
if err != nil {
return "", "", NewNoSuchMetricError(metricName, err)
}
return response.MetricKind, response.ValueType, nil
}