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,
|
tracer: tracer,
|
||||||
httpClientProvider: httpClientProvider,
|
httpClientProvider: httpClientProvider,
|
||||||
im: datasource.NewInstanceManager(newInstanceSettings(httpClientProvider)),
|
im: datasource.NewInstanceManager(newInstanceSettings(httpClientProvider)),
|
||||||
|
|
||||||
|
gceDefaultProjectGetter: utils.GCEDefaultProject,
|
||||||
}
|
}
|
||||||
|
|
||||||
s.resourceHandler = httpadapter.New(s.newResourceMux())
|
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)
|
defaultProject, err := s.getDefaultProject(ctx, *dsInfo)
|
||||||
if err != nil {
|
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)
|
url := fmt.Sprintf("%v/v3/projects/%v/metricDescriptors", dsInfo.services[cloudMonitor].url, defaultProject)
|
||||||
@ -128,6 +133,9 @@ type Service struct {
|
|||||||
tracer tracing.Tracer
|
tracer tracing.Tracer
|
||||||
|
|
||||||
resourceHandler backend.CallResourceHandler
|
resourceHandler backend.CallResourceHandler
|
||||||
|
|
||||||
|
// mocked in tests
|
||||||
|
gceDefaultProjectGetter func(ctx context.Context) (string, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type QueryModel struct {
|
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) {
|
func (s *Service) getDefaultProject(ctx context.Context, dsInfo datasourceInfo) (string, error) {
|
||||||
if dsInfo.authenticationType == gceAuthentication {
|
if dsInfo.authenticationType == gceAuthentication {
|
||||||
return utils.GCEDefaultProject(ctx)
|
return s.gceDefaultProjectGetter(ctx)
|
||||||
}
|
}
|
||||||
return dsInfo.defaultProject, nil
|
return dsInfo.defaultProject, nil
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
package cloudmonitoring
|
package cloudmonitoring
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
"net/url"
|
"net/url"
|
||||||
"reflect"
|
"reflect"
|
||||||
"strings"
|
"strings"
|
||||||
@ -9,6 +11,8 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/grafana/grafana-plugin-sdk-go/backend"
|
"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/assert"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
@ -933,3 +937,29 @@ func baseReq() *backend.QueryDataRequest {
|
|||||||
}
|
}
|
||||||
return query
|
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