|
|
|
@ -18,7 +18,6 @@ import ( |
|
|
|
|
"github.com/aws/aws-sdk-go/aws/ec2metadata" |
|
|
|
|
"github.com/aws/aws-sdk-go/aws/session" |
|
|
|
|
"github.com/aws/aws-sdk-go/service/cloudwatch" |
|
|
|
|
"github.com/aws/aws-sdk-go/service/ec2" |
|
|
|
|
"github.com/aws/aws-sdk-go/service/sts" |
|
|
|
|
"github.com/grafana/grafana/pkg/metrics" |
|
|
|
|
"github.com/grafana/grafana/pkg/middleware" |
|
|
|
@ -78,7 +77,6 @@ func init() { |
|
|
|
|
"DescribeAlarms": handleDescribeAlarms, |
|
|
|
|
"DescribeAlarmsForMetric": handleDescribeAlarmsForMetric, |
|
|
|
|
"DescribeAlarmHistory": handleDescribeAlarmHistory, |
|
|
|
|
"DescribeInstances": handleDescribeInstances, |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -402,52 +400,6 @@ func handleDescribeAlarmHistory(req *cwRequest, c *middleware.Context) { |
|
|
|
|
c.JSON(200, resp) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func handleDescribeInstances(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 := ec2.New(sess, cfg) |
|
|
|
|
|
|
|
|
|
reqParam := &struct { |
|
|
|
|
Parameters struct { |
|
|
|
|
Filters []*ec2.Filter `json:"filters"` |
|
|
|
|
InstanceIds []*string `json:"instanceIds"` |
|
|
|
|
} `json:"parameters"` |
|
|
|
|
}{} |
|
|
|
|
json.Unmarshal(req.Body, reqParam) |
|
|
|
|
|
|
|
|
|
params := &ec2.DescribeInstancesInput{} |
|
|
|
|
if len(reqParam.Parameters.Filters) > 0 { |
|
|
|
|
params.Filters = reqParam.Parameters.Filters |
|
|
|
|
} |
|
|
|
|
if len(reqParam.Parameters.InstanceIds) > 0 { |
|
|
|
|
params.InstanceIds = reqParam.Parameters.InstanceIds |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var resp ec2.DescribeInstancesOutput |
|
|
|
|
err = svc.DescribeInstancesPages(params, |
|
|
|
|
func(page *ec2.DescribeInstancesOutput, lastPage bool) bool { |
|
|
|
|
reservations, _ := awsutil.ValuesAtPath(page, "Reservations") |
|
|
|
|
for _, reservation := range reservations { |
|
|
|
|
resp.Reservations = append(resp.Reservations, reservation.(*ec2.Reservation)) |
|
|
|
|
} |
|
|
|
|
return !lastPage |
|
|
|
|
}) |
|
|
|
|
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) |
|
|
|
|