mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
CloudMonitoring: Improve error message (#46599)
This commit is contained in:
parent
5ae3e3f6f7
commit
727204ed5e
@ -72,6 +72,8 @@ func ProvideService(httpClientProvider httpclient.Provider, tracer tracing.Trace
|
||||
tracer: tracer,
|
||||
httpClientProvider: httpClientProvider,
|
||||
im: datasource.NewInstanceManager(newInstanceSettings(httpClientProvider)),
|
||||
|
||||
gceDefaultProjectGetter: utils.GCEDefaultProject,
|
||||
}
|
||||
|
||||
s.resourceHandler = httpadapter.New(s.newResourceMux())
|
||||
@ -91,7 +93,10 @@ func (s *Service) CheckHealth(ctx context.Context, req *backend.CheckHealthReque
|
||||
|
||||
defaultProject, err := s.getDefaultProject(ctx, *dsInfo)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return &backend.CheckHealthResult{
|
||||
Status: backend.HealthStatusError,
|
||||
Message: err.Error(),
|
||||
}, nil
|
||||
}
|
||||
|
||||
url := fmt.Sprintf("%v/v3/projects/%v/metricDescriptors", dsInfo.services[cloudMonitor].url, defaultProject)
|
||||
@ -128,6 +133,9 @@ type Service struct {
|
||||
tracer tracing.Tracer
|
||||
|
||||
resourceHandler backend.CallResourceHandler
|
||||
|
||||
// mocked in tests
|
||||
gceDefaultProjectGetter func(ctx context.Context) (string, error)
|
||||
}
|
||||
|
||||
type QueryModel struct {
|
||||
@ -612,7 +620,7 @@ func (s *Service) createRequest(ctx context.Context, dsInfo *datasourceInfo, pro
|
||||
|
||||
func (s *Service) getDefaultProject(ctx context.Context, dsInfo datasourceInfo) (string, error) {
|
||||
if dsInfo.authenticationType == gceAuthentication {
|
||||
return utils.GCEDefaultProject(ctx)
|
||||
return s.gceDefaultProjectGetter(ctx)
|
||||
}
|
||||
return dsInfo.defaultProject, nil
|
||||
}
|
||||
|
@ -1,7 +1,9 @@
|
||||
package cloudmonitoring
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"reflect"
|
||||
"strings"
|
||||
@ -9,6 +11,8 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/grafana/grafana-plugin-sdk-go/backend"
|
||||
"github.com/grafana/grafana-plugin-sdk-go/backend/datasource"
|
||||
"github.com/grafana/grafana-plugin-sdk-go/backend/instancemgmt"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
@ -933,3 +937,29 @@ func baseReq() *backend.QueryDataRequest {
|
||||
}
|
||||
return query
|
||||
}
|
||||
|
||||
func TestCheckHealth(t *testing.T) {
|
||||
t.Run("and using GCE authentation should return proper error", func(t *testing.T) {
|
||||
im := datasource.NewInstanceManager(func(s backend.DataSourceInstanceSettings) (instancemgmt.Instance, error) {
|
||||
return &datasourceInfo{
|
||||
authenticationType: gceAuthentication,
|
||||
}, nil
|
||||
})
|
||||
service := &Service{
|
||||
im: im,
|
||||
gceDefaultProjectGetter: func(ctx context.Context) (string, error) {
|
||||
return "", fmt.Errorf("not found!")
|
||||
},
|
||||
}
|
||||
res, err := service.CheckHealth(context.Background(), &backend.CheckHealthRequest{
|
||||
PluginContext: backend.PluginContext{
|
||||
DataSourceInstanceSettings: &backend.DataSourceInstanceSettings{},
|
||||
},
|
||||
})
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, &backend.CheckHealthResult{
|
||||
Status: backend.HealthStatusError,
|
||||
Message: "not found!",
|
||||
}, res)
|
||||
})
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user