stackdriver: get default project from backend. also ensure default project could be retrieved when authentication type is gce

This commit is contained in:
Erik Sundell
2018-10-22 16:11:17 +02:00
parent 09fb1760a1
commit b9cb4649bb
4 changed files with 79 additions and 21 deletions
+7 -18
View File
@@ -8,27 +8,26 @@ import (
"net/http"
"strings"
"github.com/grafana/grafana/pkg/cmd/grafana-cli/logger"
"github.com/grafana/grafana/pkg/components/simplejson"
"golang.org/x/net/context/ctxhttp"
"golang.org/x/oauth2/google"
"github.com/grafana/grafana/pkg/tsdb"
)
func (e *StackdriverExecutor) executeTestDataSource(ctx context.Context, tsdbQuery *tsdb.TsdbQuery) (*tsdb.Response, error) {
queryResult := &tsdb.QueryResult{Meta: simplejson.New(), RefId: tsdbQuery.Queries[0].RefId}
result := &tsdb.Response{
Results: make(map[string]*tsdb.QueryResult),
}
authenticationType := e.dsInfo.JsonData.Get("authenticationType").MustString("jwt")
if authenticationType == "gce" {
defaultProject, err := e.getDefaultProject(ctx)
if err != nil {
return nil, err
return nil, fmt.Errorf("Failed to retrieve default project from GCE metadata server. error: %v", err)
}
e.dsInfo.JsonData.Set("defaultProject", defaultProject)
}
queryResult := &tsdb.QueryResult{Meta: simplejson.New(), RefId: tsdbQuery.Queries[0].RefId}
result := &tsdb.Response{
Results: make(map[string]*tsdb.QueryResult),
e.dsInfo.JsonData.Set("defaultProject", defaultProject)
}
req, err := e.createRequest(ctx, e.dsInfo, "metricDescriptors")
@@ -57,16 +56,6 @@ func (e *StackdriverExecutor) executeTestDataSource(ctx context.Context, tsdbQue
return result, nil
}
func (e *StackdriverExecutor) getDefaultProject(ctx context.Context) (string, error) {
defaultCredentials, err := google.FindDefaultCredentials(ctx, "https://www.googleapis.com/auth/monitoring.read")
if err != nil {
return "", err
} else {
logger.Info("projectName", "projectName", defaultCredentials.ProjectID)
return defaultCredentials.ProjectID, nil
}
}
func transformMetricDescriptorResponseToTable(data MetricDescriptorsResponse) *tsdb.Table {
table := &tsdb.Table{
Columns: make([]tsdb.TableColumn, 1),