mirror of https://github.com/grafana/grafana.git
remove old handler
This commit is contained in:
parent
e1fe15e094
commit
4f5f38f41b
|
|
@ -1,10 +1,7 @@
|
||||||
package cloudwatch
|
package cloudwatch
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
|
||||||
"errors"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
@ -16,16 +13,10 @@ import (
|
||||||
"github.com/aws/aws-sdk-go/aws/credentials/endpointcreds"
|
"github.com/aws/aws-sdk-go/aws/credentials/endpointcreds"
|
||||||
"github.com/aws/aws-sdk-go/aws/ec2metadata"
|
"github.com/aws/aws-sdk-go/aws/ec2metadata"
|
||||||
"github.com/aws/aws-sdk-go/aws/session"
|
"github.com/aws/aws-sdk-go/aws/session"
|
||||||
"github.com/aws/aws-sdk-go/service/cloudwatch"
|
|
||||||
"github.com/aws/aws-sdk-go/service/sts"
|
"github.com/aws/aws-sdk-go/service/sts"
|
||||||
"github.com/grafana/grafana/pkg/middleware"
|
|
||||||
m "github.com/grafana/grafana/pkg/models"
|
m "github.com/grafana/grafana/pkg/models"
|
||||||
)
|
)
|
||||||
|
|
||||||
type actionHandler func(*cwRequest, *middleware.Context)
|
|
||||||
|
|
||||||
var actionHandlers map[string]actionHandler
|
|
||||||
|
|
||||||
type cwRequest struct {
|
type cwRequest struct {
|
||||||
Region string `json:"region"`
|
Region string `json:"region"`
|
||||||
Action string `json:"action"`
|
Action string `json:"action"`
|
||||||
|
|
@ -69,14 +60,6 @@ func (req *cwRequest) GetDatasourceInfo() *DatasourceInfo {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
|
||||||
actionHandlers = map[string]actionHandler{
|
|
||||||
"DescribeAlarms": handleDescribeAlarms,
|
|
||||||
"DescribeAlarmsForMetric": handleDescribeAlarmsForMetric,
|
|
||||||
"DescribeAlarmHistory": handleDescribeAlarmHistory,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
type cache struct {
|
type cache struct {
|
||||||
credential *credentials.Credentials
|
credential *credentials.Credentials
|
||||||
expiration *time.Time
|
expiration *time.Time
|
||||||
|
|
@ -212,155 +195,3 @@ func getAwsConfig(req *cwRequest) (*aws.Config, error) {
|
||||||
}
|
}
|
||||||
return cfg, nil
|
return cfg, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func handleDescribeAlarms(req *cwRequest, c *middleware.Context) {
|
|
||||||
cfg, err := getAwsConfig(req)
|
|
||||||
if err != nil {
|
|
||||||
c.JsonApiErr(500, "Unable to call AWS API", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
sess, err := session.NewSession(cfg)
|
|
||||||
if err != nil {
|
|
||||||
c.JsonApiErr(500, "Unable to call AWS API", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
svc := cloudwatch.New(sess, cfg)
|
|
||||||
|
|
||||||
reqParam := &struct {
|
|
||||||
Parameters struct {
|
|
||||||
ActionPrefix string `json:"actionPrefix"`
|
|
||||||
AlarmNamePrefix string `json:"alarmNamePrefix"`
|
|
||||||
AlarmNames []*string `json:"alarmNames"`
|
|
||||||
StateValue string `json:"stateValue"`
|
|
||||||
} `json:"parameters"`
|
|
||||||
}{}
|
|
||||||
json.Unmarshal(req.Body, reqParam)
|
|
||||||
|
|
||||||
params := &cloudwatch.DescribeAlarmsInput{
|
|
||||||
MaxRecords: aws.Int64(100),
|
|
||||||
}
|
|
||||||
if reqParam.Parameters.ActionPrefix != "" {
|
|
||||||
params.ActionPrefix = aws.String(reqParam.Parameters.ActionPrefix)
|
|
||||||
}
|
|
||||||
if reqParam.Parameters.AlarmNamePrefix != "" {
|
|
||||||
params.AlarmNamePrefix = aws.String(reqParam.Parameters.AlarmNamePrefix)
|
|
||||||
}
|
|
||||||
if len(reqParam.Parameters.AlarmNames) != 0 {
|
|
||||||
params.AlarmNames = reqParam.Parameters.AlarmNames
|
|
||||||
}
|
|
||||||
if reqParam.Parameters.StateValue != "" {
|
|
||||||
params.StateValue = aws.String(reqParam.Parameters.StateValue)
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := svc.DescribeAlarms(params)
|
|
||||||
if err != nil {
|
|
||||||
c.JsonApiErr(500, "Unable to call AWS API", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
c.JSON(200, resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
func handleDescribeAlarmsForMetric(req *cwRequest, c *middleware.Context) {
|
|
||||||
cfg, err := getAwsConfig(req)
|
|
||||||
if err != nil {
|
|
||||||
c.JsonApiErr(500, "Unable to call AWS API", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
sess, err := session.NewSession(cfg)
|
|
||||||
if err != nil {
|
|
||||||
c.JsonApiErr(500, "Unable to call AWS API", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
svc := cloudwatch.New(sess, cfg)
|
|
||||||
|
|
||||||
reqParam := &struct {
|
|
||||||
Parameters struct {
|
|
||||||
Namespace string `json:"namespace"`
|
|
||||||
MetricName string `json:"metricName"`
|
|
||||||
Dimensions []*cloudwatch.Dimension `json:"dimensions"`
|
|
||||||
Statistic string `json:"statistic"`
|
|
||||||
ExtendedStatistic string `json:"extendedStatistic"`
|
|
||||||
Period int64 `json:"period"`
|
|
||||||
} `json:"parameters"`
|
|
||||||
}{}
|
|
||||||
json.Unmarshal(req.Body, reqParam)
|
|
||||||
|
|
||||||
params := &cloudwatch.DescribeAlarmsForMetricInput{
|
|
||||||
Namespace: aws.String(reqParam.Parameters.Namespace),
|
|
||||||
MetricName: aws.String(reqParam.Parameters.MetricName),
|
|
||||||
Period: aws.Int64(reqParam.Parameters.Period),
|
|
||||||
}
|
|
||||||
if len(reqParam.Parameters.Dimensions) != 0 {
|
|
||||||
params.Dimensions = reqParam.Parameters.Dimensions
|
|
||||||
}
|
|
||||||
if reqParam.Parameters.Statistic != "" {
|
|
||||||
params.Statistic = aws.String(reqParam.Parameters.Statistic)
|
|
||||||
}
|
|
||||||
if reqParam.Parameters.ExtendedStatistic != "" {
|
|
||||||
params.ExtendedStatistic = aws.String(reqParam.Parameters.ExtendedStatistic)
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := svc.DescribeAlarmsForMetric(params)
|
|
||||||
if err != nil {
|
|
||||||
c.JsonApiErr(500, "Unable to call AWS API", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
c.JSON(200, resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
func handleDescribeAlarmHistory(req *cwRequest, c *middleware.Context) {
|
|
||||||
cfg, err := getAwsConfig(req)
|
|
||||||
if err != nil {
|
|
||||||
c.JsonApiErr(500, "Unable to call AWS API", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
sess, err := session.NewSession(cfg)
|
|
||||||
if err != nil {
|
|
||||||
c.JsonApiErr(500, "Unable to call AWS API", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
svc := cloudwatch.New(sess, cfg)
|
|
||||||
|
|
||||||
reqParam := &struct {
|
|
||||||
Parameters struct {
|
|
||||||
AlarmName string `json:"alarmName"`
|
|
||||||
HistoryItemType string `json:"historyItemType"`
|
|
||||||
StartDate int64 `json:"startDate"`
|
|
||||||
EndDate int64 `json:"endDate"`
|
|
||||||
} `json:"parameters"`
|
|
||||||
}{}
|
|
||||||
json.Unmarshal(req.Body, reqParam)
|
|
||||||
|
|
||||||
params := &cloudwatch.DescribeAlarmHistoryInput{
|
|
||||||
AlarmName: aws.String(reqParam.Parameters.AlarmName),
|
|
||||||
StartDate: aws.Time(time.Unix(reqParam.Parameters.StartDate, 0)),
|
|
||||||
EndDate: aws.Time(time.Unix(reqParam.Parameters.EndDate, 0)),
|
|
||||||
}
|
|
||||||
if reqParam.Parameters.HistoryItemType != "" {
|
|
||||||
params.HistoryItemType = aws.String(reqParam.Parameters.HistoryItemType)
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := svc.DescribeAlarmHistory(params)
|
|
||||||
if err != nil {
|
|
||||||
c.JsonApiErr(500, "Unable to call AWS API", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
c.JSON(200, resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
func HandleRequest(c *middleware.Context, ds *m.DataSource) {
|
|
||||||
var req cwRequest
|
|
||||||
req.Body, _ = ioutil.ReadAll(c.Req.Request.Body)
|
|
||||||
req.DataSource = ds
|
|
||||||
json.Unmarshal(req.Body, &req)
|
|
||||||
|
|
||||||
if handler, found := actionHandlers[req.Action]; !found {
|
|
||||||
c.JsonApiErr(500, "Unexpected AWS Action", errors.New(req.Action))
|
|
||||||
return
|
|
||||||
} else {
|
|
||||||
handler(&req, c)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,6 @@ import (
|
||||||
|
|
||||||
"github.com/opentracing/opentracing-go"
|
"github.com/opentracing/opentracing-go"
|
||||||
|
|
||||||
"github.com/grafana/grafana/pkg/api/cloudwatch"
|
|
||||||
"github.com/grafana/grafana/pkg/log"
|
"github.com/grafana/grafana/pkg/log"
|
||||||
"github.com/grafana/grafana/pkg/middleware"
|
"github.com/grafana/grafana/pkg/middleware"
|
||||||
m "github.com/grafana/grafana/pkg/models"
|
m "github.com/grafana/grafana/pkg/models"
|
||||||
|
|
@ -63,11 +62,6 @@ func NewDataSourceProxy(ds *m.DataSource, plugin *plugins.DataSourcePlugin, ctx
|
||||||
}
|
}
|
||||||
|
|
||||||
func (proxy *DataSourceProxy) HandleRequest() {
|
func (proxy *DataSourceProxy) HandleRequest() {
|
||||||
if proxy.ds.Type == m.DS_CLOUDWATCH {
|
|
||||||
cloudwatch.HandleRequest(proxy.ctx, proxy.ds)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := proxy.validateRequest(); err != nil {
|
if err := proxy.validateRequest(); err != nil {
|
||||||
proxy.ctx.JsonApiErr(403, err.Error(), nil)
|
proxy.ctx.JsonApiErr(403, err.Error(), nil)
|
||||||
return
|
return
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue