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)
}