|
@@ -31,13 +31,15 @@ type cwRequest struct {
|
|
|
|
|
|
|
|
func init() {
|
|
func init() {
|
|
|
actionHandlers = map[string]actionHandler{
|
|
actionHandlers = map[string]actionHandler{
|
|
|
- "GetMetricStatistics": handleGetMetricStatistics,
|
|
|
|
|
- "ListMetrics": handleListMetrics,
|
|
|
|
|
- "DescribeInstances": handleDescribeInstances,
|
|
|
|
|
- "__GetRegions": handleGetRegions,
|
|
|
|
|
- "__GetNamespaces": handleGetNamespaces,
|
|
|
|
|
- "__GetMetrics": handleGetMetrics,
|
|
|
|
|
- "__GetDimensions": handleGetDimensions,
|
|
|
|
|
|
|
+ "GetMetricStatistics": handleGetMetricStatistics,
|
|
|
|
|
+ "ListMetrics": handleListMetrics,
|
|
|
|
|
+ "DescribeAlarmsForMetric": handleDescribeAlarmsForMetric,
|
|
|
|
|
+ "DescribeAlarmHistory": handleDescribeAlarmHistory,
|
|
|
|
|
+ "DescribeInstances": handleDescribeInstances,
|
|
|
|
|
+ "__GetRegions": handleGetRegions,
|
|
|
|
|
+ "__GetNamespaces": handleGetNamespaces,
|
|
|
|
|
+ "__GetMetrics": handleGetMetrics,
|
|
|
|
|
+ "__GetDimensions": handleGetDimensions,
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -137,6 +139,70 @@ func handleListMetrics(req *cwRequest, c *middleware.Context) {
|
|
|
c.JSON(200, resp)
|
|
c.JSON(200, resp)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+func handleDescribeAlarmsForMetric(req *cwRequest, c *middleware.Context) {
|
|
|
|
|
+ svc := cloudwatch.New(&aws.Config{Region: aws.String(req.Region)})
|
|
|
|
|
+ reqParam := &struct {
|
|
|
|
|
+ Parameters struct {
|
|
|
|
|
+ Namespace string `json:"namespace"`
|
|
|
|
|
+ MetricName string `json:"metricName"`
|
|
|
|
|
+ Dimensions []*cloudwatch.Dimension `json:"dimensions"`
|
|
|
|
|
+ Statistic string `json:"statistic"`
|
|
|
|
|
+ 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)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ 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) {
|
|
|
|
|
+ svc := cloudwatch.New(&aws.Config{Region: aws.String(req.Region)})
|
|
|
|
|
+ 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 handleDescribeInstances(req *cwRequest, c *middleware.Context) {
|
|
func handleDescribeInstances(req *cwRequest, c *middleware.Context) {
|
|
|
sess := session.New()
|
|
sess := session.New()
|
|
|
creds := credentials.NewChainCredentials(
|
|
creds := credentials.NewChainCredentials(
|