func()

in custom-metrics-stackdriver-adapter/pkg/adapter/provider/provider.go [105:135]


func (p *StackdriverProvider) getRootScopedMetricByName(groupResource schema.GroupResource, name string, escapedMetricName string, metricSelector labels.Selector) (*custom_metrics.MetricValue, error) {
	if !p.useNewResourceModel {
		return nil, NewOperationNotSupportedError("Get root scoped metric by name")
	}
	if groupResource.Resource != nodeResource {
		return nil, NewOperationNotSupportedError(fmt.Sprintf("Get root scoped metric by name for resource %q", groupResource.Resource))
	}
	matchingNode, err := p.kubeClient.Nodes().Get(context.Background(), name, metav1.GetOptions{})
	if err != nil {
		return nil, err
	}
	metricName := getCustomMetricName(escapedMetricName)
	metricKind, metricValueType, err := p.translator.GetMetricKind(metricName, metricSelector)
	if err != nil {
		return nil, err
	}
	stackdriverRequest, err := translator.NewQueryBuilder(p.translator, metricName).
		WithNodes(&v1.NodeList{Items: []v1.Node{*matchingNode}}).
		WithMetricKind(metricKind).
		WithMetricValueType(metricValueType).
		WithMetricSelector(metricSelector).
		Build()
	if err != nil {
		return nil, err
	}
	stackdriverResponse, err := stackdriverRequest.Do()
	if err != nil {
		return nil, err
	}
	return p.translator.GetRespForSingleObject(stackdriverResponse, groupResource, escapedMetricName, metricSelector, "", name)
}