func()

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
}