mirror of https://github.com/grafana/grafana
parent
9c7022be86
commit
dd9e9ed419
@ -1,91 +0,0 @@ |
||||
package stackdriver |
||||
|
||||
import ( |
||||
"context" |
||||
"encoding/json" |
||||
"fmt" |
||||
"io/ioutil" |
||||
"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" |
||||
|
||||
"github.com/grafana/grafana/pkg/tsdb" |
||||
) |
||||
|
||||
func (e *StackdriverExecutor) executeMetricDescriptors(ctx context.Context, tsdbQuery *tsdb.TsdbQuery) (*tsdb.Response, error) { |
||||
logger.Info("metricDescriptors", "metricDescriptors", tsdbQuery.Queries[0].RefId) |
||||
queryResult := &tsdb.QueryResult{Meta: simplejson.New(), RefId: tsdbQuery.Queries[0].RefId} |
||||
result := &tsdb.Response{ |
||||
Results: make(map[string]*tsdb.QueryResult), |
||||
} |
||||
|
||||
req, err := e.createRequest(ctx, e.dsInfo, "metricDescriptorss") |
||||
if err != nil { |
||||
slog.Error("Failed to create request", "error", err) |
||||
return nil, fmt.Errorf("Failed to create request. error: %v", err) |
||||
} |
||||
res, err := ctxhttp.Do(ctx, e.httpClient, req) |
||||
if err != nil { |
||||
logger.Info("error2", err) |
||||
return nil, err |
||||
} |
||||
|
||||
data, err := e.unmarshalMetricDescriptors(res) |
||||
if err != nil { |
||||
queryResult.ErrorString = fmt.Sprintf(`Status code: %d`, res.StatusCode) |
||||
logger.Info("error2", "ErrorString", queryResult.ErrorString) |
||||
queryResult.Error = err |
||||
result.Results[tsdbQuery.Queries[0].RefId] = queryResult |
||||
return result, nil |
||||
} |
||||
|
||||
parts := strings.Split(req.URL.Path, "/") |
||||
defaultProject := parts[3] |
||||
|
||||
table := transformMetricDescriptorResponseToTable(data) |
||||
queryResult.Tables = append(queryResult.Tables, table) |
||||
result.Results[tsdbQuery.Queries[0].RefId] = queryResult |
||||
result.Results[tsdbQuery.Queries[0].RefId].Meta.Set("defaultProject", defaultProject) |
||||
|
||||
return result, nil |
||||
} |
||||
|
||||
func transformMetricDescriptorResponseToTable(data MetricDescriptorsResponse) *tsdb.Table { |
||||
table := &tsdb.Table{ |
||||
Columns: make([]tsdb.TableColumn, 1), |
||||
Rows: make([]tsdb.RowValues, 0), |
||||
} |
||||
table.Columns[0].Text = "metricDescriptor" |
||||
|
||||
for _, r := range data.MetricDescriptors { |
||||
values := make([]interface{}, 1) |
||||
values[0] = r |
||||
table.Rows = append(table.Rows, values) |
||||
} |
||||
return table |
||||
} |
||||
|
||||
func (e *StackdriverExecutor) unmarshalMetricDescriptors(res *http.Response) (MetricDescriptorsResponse, error) { |
||||
body, err := ioutil.ReadAll(res.Body) |
||||
defer res.Body.Close() |
||||
if err != nil { |
||||
return MetricDescriptorsResponse{}, err |
||||
} |
||||
|
||||
if res.StatusCode/100 != 2 { |
||||
slog.Error("Request failed", "status", res.Status, "body", string(body)) |
||||
return MetricDescriptorsResponse{}, fmt.Errorf(`Status code: %d - %s`, res.StatusCode, string(body)) |
||||
} |
||||
|
||||
var data MetricDescriptorsResponse |
||||
err = json.Unmarshal(body, &data) |
||||
if err != nil { |
||||
slog.Error("Failed to unmarshal MetricDescriptorResponse", "error", err, "status", res.Status, "body", string(body)) |
||||
return MetricDescriptorsResponse{}, err |
||||
} |
||||
|
||||
return data, nil |
||||
} |
Loading…
Reference in new issue