summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/goamz/goamz/cloudwatch
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/goamz/goamz/cloudwatch')
-rw-r--r--vendor/github.com/goamz/goamz/cloudwatch/ChangeLog7
-rw-r--r--vendor/github.com/goamz/goamz/cloudwatch/README.md109
-rw-r--r--vendor/github.com/goamz/goamz/cloudwatch/cloudwatch.go404
-rw-r--r--vendor/github.com/goamz/goamz/cloudwatch/cloudwatch_test.go132
4 files changed, 0 insertions, 652 deletions
diff --git a/vendor/github.com/goamz/goamz/cloudwatch/ChangeLog b/vendor/github.com/goamz/goamz/cloudwatch/ChangeLog
deleted file mode 100644
index 46fea639e..000000000
--- a/vendor/github.com/goamz/goamz/cloudwatch/ChangeLog
+++ /dev/null
@@ -1,7 +0,0 @@
-2013-10-21 Carlos Salguero <cfsalguero@gmail.com>
-
-* Removed Namespace from the constructor as not all AWS API method needs it
- and methods like ListMetrics you could need to call the method without a
- Namespace to list all available metrics
-
-* Added ListMetrics method
diff --git a/vendor/github.com/goamz/goamz/cloudwatch/README.md b/vendor/github.com/goamz/goamz/cloudwatch/README.md
deleted file mode 100644
index dc837b4c7..000000000
--- a/vendor/github.com/goamz/goamz/cloudwatch/README.md
+++ /dev/null
@@ -1,109 +0,0 @@
-#GoLang AWS Cloudwatch
-
-## Installation
-Please refer to the project's main page at [https://github.com/goamz/goamz](https://github.com/goamz/goamz) for instructions about how to install.
-
-## Available methods
-
-<table>
- <tr>
- <td>GetMetricStatistics</td>
- <td>Gets statistics for the specified metric.</td>
- </tr>
- <tr>
- <td>ListMetrics</td>
- <td>Returns a list of valid metrics stored for the AWS account.</td>
- </tr>
- <tr>
- <td>PutMetricData</td>
- <td>Publishes metric data points to Amazon CloudWatch.</td>
- </tr>
- <tr>
- <td>PutMetricAlarm</td>
- <td>Creates or updates an alarm and associates it with the specified Amazon CloudWatch metric.</td>
- </tr>
- </table>
-
-[Please refer to AWS Cloudwatch's documentation for more info](http://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_Operations.html)
-
-##Examples
-####Get Metric Statistics
-
-```
-import (
- "fmt"
- "time"
- "os"
- "github.com/goamz/goamz/aws"
- "github.com/goamz/goamz/cloudwatch"
-)
-
-func test_get_metric_statistics() {
- region := aws.Regions["a_region"]
- namespace:= "AWS/ELB"
- dimension := &cloudwatch.Dimension{
- Name: "LoadBalancerName",
- Value: "your_value",
- }
- metricName := "RequestCount"
- now := time.Now()
- prev := now.Add(time.Duration(600)*time.Second*-1) // 600 secs = 10 minutes
-
- auth, err := aws.GetAuth("your_AccessKeyId", "your_SecretAccessKey", "", now)
- if err != nil {
- fmt.Printf("Error: %+v\n", err)
- os.Exit(1)
- }
-
- cw, err := cloudwatch.NewCloudWatch(auth, region.CloudWatchServicepoint)
- request := &cloudwatch.GetMetricStatisticsRequest {
- Dimensions: []cloudwatch.Dimension{*dimension},
- EndTime: now,
- StartTime: prev,
- MetricName: metricName,
- Unit: "Count", // Not mandatory
- Period: 60,
- Statistics: []string{"Sum"},
- Namespace: namespace,
- }
-
- response, err := cw.GetMetricStatistics(request)
- if err == nil {
- fmt.Printf("%+v\n", response)
- } else {
- fmt.Printf("Error: %+v\n", err)
- }
-}
-
-```
-####List Metrics
-
-```
-import (
- "fmt"
- "time"
- "os"
- "github.com/goamz/goamz/aws"
- "github.com/goamz/goamz/cloudwatch"
-)
-
-func test_list_metrics() {
- region := aws.Regions["us-east-1"] // Any region here
- now := time.Now()
-
- auth, err := aws.GetAuth("an AccessKeyId", "a SecretAccessKey", "", now)
- if err != nil {
- fmt.Printf("Error: %+v\n", err)
- os.Exit(1)
- }
- cw, err := cloudwatch.NewCloudWatch(auth, region.CloudWatchServicepoint)
- request := &cloudwatch.ListMetricsRequest{Namespace: "AWS/EC2"}
-
- response, err := cw.ListMetrics(request)
- if err == nil {
- fmt.Printf("%+v\n", response)
- } else {
- fmt.Printf("Error: %+v\n", err)
- }
-}
-```
diff --git a/vendor/github.com/goamz/goamz/cloudwatch/cloudwatch.go b/vendor/github.com/goamz/goamz/cloudwatch/cloudwatch.go
deleted file mode 100644
index 461d6a102..000000000
--- a/vendor/github.com/goamz/goamz/cloudwatch/cloudwatch.go
+++ /dev/null
@@ -1,404 +0,0 @@
-/***** BEGIN LICENSE BLOCK *****
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this file,
-# You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# The Initial Developer of the Original Code is the Mozilla Foundation.
-# Portions created by the Initial Developer are Copyright (C) 2012
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-# Ben Bangert (bbangert@mozilla.com)
-# Logan Owen (lsowen@s1network.com)
-#
-# ***** END LICENSE BLOCK *****/
-
-package cloudwatch
-
-import (
- "encoding/xml"
- "errors"
- "fmt"
- "github.com/feyeleanor/sets"
- "github.com/goamz/goamz/aws"
- "strconv"
- "time"
-)
-
-// The CloudWatch type encapsulates all the CloudWatch operations in a region.
-type CloudWatch struct {
- Service aws.AWSService
-}
-
-type Dimension struct {
- Name string
- Value string
-}
-
-type StatisticSet struct {
- Maximum float64
- Minimum float64
- SampleCount float64
- Sum float64
-}
-
-type MetricDatum struct {
- Dimensions []Dimension
- MetricName string
- StatisticValues *StatisticSet
- Timestamp time.Time
- Unit string
- Value float64
-}
-
-type Datapoint struct {
- Average float64
- Maximum float64
- Minimum float64
- SampleCount float64
- Sum float64
- Timestamp time.Time
- Unit string
-}
-
-type GetMetricStatisticsRequest struct {
- Dimensions []Dimension
- EndTime time.Time
- StartTime time.Time
- MetricName string
- Unit string
- Period int
- Statistics []string
- Namespace string
-}
-
-type GetMetricStatisticsResult struct {
- Datapoints []Datapoint `xml:"Datapoints>member"`
- NextToken string `xml:"NextToken"`
-}
-
-type GetMetricStatisticsResponse struct {
- GetMetricStatisticsResult GetMetricStatisticsResult
- ResponseMetadata aws.ResponseMetadata
-}
-
-type Metric struct {
- Dimensions []Dimension `xml:"Dimensions>member"`
- MetricName string
- Namespace string
-}
-
-type ListMetricsResult struct {
- Metrics []Metric `xml:"Metrics>member"`
- NextToken string
-}
-
-type ListMetricsResponse struct {
- ListMetricsResult ListMetricsResult
- ResponseMetadata aws.ResponseMetadata
-}
-
-type ListMetricsRequest struct {
- Dimensions []Dimension
- MetricName string
- Namespace string
- NextToken string
-}
-
-type AlarmAction struct {
- ARN string
-}
-
-type MetricAlarm struct {
- AlarmActions []AlarmAction
- AlarmDescription string
- AlarmName string
- ComparisonOperator string
- Dimensions []Dimension
- EvaluationPeriods int
- InsufficientDataActions []AlarmAction
- MetricName string
- Namespace string
- OkActions []AlarmAction
- Period int
- Statistic string
- Threshold float64
- Unit string
-}
-
-var attempts = aws.AttemptStrategy{
- Min: 5,
- Total: 5 * time.Second,
- Delay: 200 * time.Millisecond,
-}
-
-var validUnits = sets.SSet(
- "Seconds",
- "Microseconds",
- "Milliseconds",
- "Bytes",
- "Kilobytes",
- "Megabytes",
- "Gigabytes",
- "Terabytes",
- "Bits",
- "Kilobits",
- "Megabits",
- "Gigabits",
- "Terabits",
- "Percent",
- "Count",
- "Bytes/Second",
- "Kilobytes/Second",
- "Megabytes/Second",
- "Gigabytes/Second",
- "Terabytes/Second",
- "Bits/Second",
- "Kilobits/Second",
- "Megabits/Second",
- "Gigabits/Second",
- "Terabits/Second",
- "Count/Second",
-)
-
-var validMetricStatistics = sets.SSet(
- "Average",
- "Sum",
- "SampleCount",
- "Maximum",
- "Minimum",
-)
-
-var validComparisonOperators = sets.SSet(
- "LessThanThreshold",
- "LessThanOrEqualToThreshold",
- "GreaterThanThreshold",
- "GreaterThanOrEqualToThreshold",
-)
-
-// Create a new CloudWatch object for a given namespace
-func NewCloudWatch(auth aws.Auth, region aws.ServiceInfo) (*CloudWatch, error) {
- service, err := aws.NewService(auth, region)
- if err != nil {
- return nil, err
- }
- return &CloudWatch{
- Service: service,
- }, nil
-}
-
-func (c *CloudWatch) query(method, path string, params map[string]string, resp interface{}) error {
- // Add basic Cloudwatch param
- params["Version"] = "2010-08-01"
-
- r, err := c.Service.Query(method, path, params)
- if err != nil {
- return err
- }
- defer r.Body.Close()
-
- if r.StatusCode != 200 {
- return c.Service.BuildError(r)
- }
- err = xml.NewDecoder(r.Body).Decode(resp)
- return err
-}
-
-// Get statistics for specified metric
-//
-// If the arguments are invalid or the server returns an error, the error will
-// be set and the other values undefined.
-func (c *CloudWatch) GetMetricStatistics(req *GetMetricStatisticsRequest) (result *GetMetricStatisticsResponse, err error) {
- statisticsSet := sets.SSet(req.Statistics...)
- // Kick out argument errors
- switch {
- case req.EndTime.IsZero():
- err = errors.New("No endTime specified")
- case req.StartTime.IsZero():
- err = errors.New("No startTime specified")
- case req.MetricName == "":
- err = errors.New("No metricName specified")
- case req.Namespace == "":
- err = errors.New("No Namespace specified")
- case req.Period < 60 || req.Period%60 != 0:
- err = errors.New("Period not 60 seconds or a multiple of 60 seconds")
- case len(req.Statistics) < 1:
- err = errors.New("No statistics supplied")
- case validMetricStatistics.Union(statisticsSet).Len() != validMetricStatistics.Len():
- err = errors.New("Invalid statistic values supplied")
- case req.Unit != "" && !validUnits.Member(req.Unit):
- err = errors.New("Unit is not a valid value")
- }
- if err != nil {
- return
- }
-
- // Serialize all the params
- params := aws.MakeParams("GetMetricStatistics")
- params["EndTime"] = req.EndTime.UTC().Format(time.RFC3339)
- params["StartTime"] = req.StartTime.UTC().Format(time.RFC3339)
- params["MetricName"] = req.MetricName
- params["Namespace"] = req.Namespace
- params["Period"] = strconv.Itoa(req.Period)
- if req.Unit != "" {
- params["Unit"] = req.Unit
- }
-
- // Serialize the lists of data
- for i, d := range req.Dimensions {
- prefix := "Dimensions.member." + strconv.Itoa(i+1)
- params[prefix+".Name"] = d.Name
- params[prefix+".Value"] = d.Value
- }
- for i, d := range req.Statistics {
- prefix := "Statistics.member." + strconv.Itoa(i+1)
- params[prefix] = d
- }
- result = new(GetMetricStatisticsResponse)
- err = c.query("GET", "/", params, result)
- return
-}
-
-// Returns a list of valid metrics stored for the AWS account owner.
-// Returned metrics can be used with GetMetricStatistics to obtain statistical data for a given metric.
-
-func (c *CloudWatch) ListMetrics(req *ListMetricsRequest) (result *ListMetricsResponse, err error) {
-
- // Serialize all the params
- params := aws.MakeParams("ListMetrics")
- if req.Namespace != "" {
- params["Namespace"] = req.Namespace
- }
- if len(req.Dimensions) > 0 {
- for i, d := range req.Dimensions {
- prefix := "Dimensions.member." + strconv.Itoa(i+1)
- params[prefix+".Name"] = d.Name
- params[prefix+".Value"] = d.Value
- }
- }
-
- result = new(ListMetricsResponse)
- err = c.query("GET", "/", params, &result)
- metrics := result.ListMetricsResult.Metrics
- if result.ListMetricsResult.NextToken != "" {
- params = aws.MakeParams("ListMetrics")
- params["NextToken"] = result.ListMetricsResult.NextToken
- for result.ListMetricsResult.NextToken != "" && err == nil {
- result = new(ListMetricsResponse)
- err = c.query("GET", "/", params, &result)
- if err == nil {
- newslice := make([]Metric, len(metrics)+len(result.ListMetricsResult.Metrics))
- copy(newslice, metrics)
- copy(newslice[len(metrics):], result.ListMetricsResult.Metrics)
- metrics = newslice
- }
- }
- result.ListMetricsResult.Metrics = metrics
- }
- return
-}
-
-func (c *CloudWatch) PutMetricData(metrics []MetricDatum) (result *aws.BaseResponse, err error) {
- return c.PutMetricDataNamespace(metrics, "")
-}
-
-func (c *CloudWatch) PutMetricDataNamespace(metrics []MetricDatum, namespace string) (result *aws.BaseResponse, err error) {
- // Serialize the params
- params := aws.MakeParams("PutMetricData")
- if namespace != "" {
- params["Namespace"] = namespace
- }
- for i, metric := range metrics {
- prefix := "MetricData.member." + strconv.Itoa(i+1)
- if metric.MetricName == "" {
- err = fmt.Errorf("No metric name supplied for metric: %d", i)
- return
- }
- params[prefix+".MetricName"] = metric.MetricName
- if metric.Unit != "" {
- params[prefix+".Unit"] = metric.Unit
- }
- params[prefix+".Value"] = strconv.FormatFloat(metric.Value, 'E', 10, 64)
- if !metric.Timestamp.IsZero() {
- params[prefix+".Timestamp"] = metric.Timestamp.UTC().Format(time.RFC3339)
- }
- for j, dim := range metric.Dimensions {
- dimprefix := prefix + ".Dimensions.member." + strconv.Itoa(j+1)
- params[dimprefix+".Name"] = dim.Name
- params[dimprefix+".Value"] = dim.Value
- }
- if metric.StatisticValues != nil {
- statprefix := prefix + ".StatisticValues"
- params[statprefix+".Maximum"] = strconv.FormatFloat(metric.StatisticValues.Maximum, 'E', 10, 64)
- params[statprefix+".Minimum"] = strconv.FormatFloat(metric.StatisticValues.Minimum, 'E', 10, 64)
- params[statprefix+".SampleCount"] = strconv.FormatFloat(metric.StatisticValues.SampleCount, 'E', 10, 64)
- params[statprefix+".Sum"] = strconv.FormatFloat(metric.StatisticValues.Sum, 'E', 10, 64)
- }
- }
- result = new(aws.BaseResponse)
- err = c.query("POST", "/", params, result)
- return
-}
-
-func (c *CloudWatch) PutMetricAlarm(alarm *MetricAlarm) (result *aws.BaseResponse, err error) {
- // Serialize the params
- params := aws.MakeParams("PutMetricAlarm")
-
- switch {
- case alarm.AlarmName == "":
- err = errors.New("No AlarmName supplied")
- case !validComparisonOperators.Member(alarm.ComparisonOperator):
- err = errors.New("ComparisonOperator is not valid")
- case alarm.EvaluationPeriods == 0:
- err = errors.New("No number of EvaluationPeriods specified")
- case alarm.MetricName == "":
- err = errors.New("No MetricName specified")
- case alarm.Namespace == "":
- err = errors.New("No Namespace specified")
- case alarm.Period == 0:
- err = errors.New("No Period over which statistic should apply was specified")
- case !validMetricStatistics.Member(alarm.Statistic):
- err = errors.New("Invalid statistic value supplied")
- case alarm.Threshold == 0:
- err = errors.New("No Threshold value specified")
- case alarm.Unit != "" && !validUnits.Member(alarm.Unit):
- err = errors.New("Unit is not a valid value")
- }
- if err != nil {
- return
- }
-
- for i, action := range alarm.AlarmActions {
- params["AlarmActions.member."+strconv.Itoa(i+1)] = action.ARN
- }
- for i, action := range alarm.InsufficientDataActions {
- params["InsufficientDataActions.member."+strconv.Itoa(i+1)] = action.ARN
- }
- for i, action := range alarm.OkActions {
- params["OKActions.member."+strconv.Itoa(i+1)] = action.ARN
- }
- if alarm.AlarmDescription != "" {
- params["AlarmDescription"] = alarm.AlarmDescription
- }
- params["AlarmDescription"] = alarm.AlarmDescription
- params["AlarmName"] = alarm.AlarmName
- params["ComparisonOperator"] = alarm.ComparisonOperator
- for i, dim := range alarm.Dimensions {
- dimprefix := "Dimensions.member." + strconv.Itoa(i+1)
- params[dimprefix+".Name"] = dim.Name
- params[dimprefix+".Value"] = dim.Value
- }
- params["EvaluationPeriods"] = strconv.Itoa(alarm.EvaluationPeriods)
- params["MetricName"] = alarm.MetricName
- params["Namespace"] = alarm.Namespace
- params["Period"] = strconv.Itoa(alarm.Period)
- params["Statistic"] = alarm.Statistic
- params["Threshold"] = strconv.FormatFloat(alarm.Threshold, 'E', 10, 64)
- if alarm.Unit != "" {
- params["Unit"] = alarm.Unit
- }
-
- result = new(aws.BaseResponse)
- err = c.query("POST", "/", params, result)
- return
-}
diff --git a/vendor/github.com/goamz/goamz/cloudwatch/cloudwatch_test.go b/vendor/github.com/goamz/goamz/cloudwatch/cloudwatch_test.go
deleted file mode 100644
index a4271f1ea..000000000
--- a/vendor/github.com/goamz/goamz/cloudwatch/cloudwatch_test.go
+++ /dev/null
@@ -1,132 +0,0 @@
-package cloudwatch_test
-
-import (
- "testing"
-
- "github.com/goamz/goamz/aws"
- "github.com/goamz/goamz/cloudwatch"
- "github.com/goamz/goamz/testutil"
- . "gopkg.in/check.v1"
-)
-
-func Test(t *testing.T) {
- TestingT(t)
-}
-
-type S struct {
- cw *cloudwatch.CloudWatch
-}
-
-var _ = Suite(&S{})
-
-var testServer = testutil.NewHTTPServer()
-
-func (s *S) SetUpSuite(c *C) {
- testServer.Start()
- auth := aws.Auth{AccessKey: "abc", SecretKey: "123"}
- s.cw, _ = cloudwatch.NewCloudWatch(auth, aws.ServiceInfo{testServer.URL, aws.V2Signature})
-}
-
-func (s *S) TearDownTest(c *C) {
- testServer.Flush()
-}
-
-func getTestAlarm() *cloudwatch.MetricAlarm {
- alarm := new(cloudwatch.MetricAlarm)
-
- alarm.AlarmName = "TestAlarm"
- alarm.MetricName = "TestMetric"
- alarm.Namespace = "TestNamespace"
- alarm.ComparisonOperator = "LessThanThreshold"
- alarm.Threshold = 1
- alarm.EvaluationPeriods = 5
- alarm.Period = 60
- alarm.Statistic = "Sum"
-
- return alarm
-}
-
-func (s *S) TestPutAlarm(c *C) {
- testServer.Response(200, nil, "<RequestId>123</RequestId>")
-
- alarm := getTestAlarm()
-
- _, err := s.cw.PutMetricAlarm(alarm)
- c.Assert(err, IsNil)
-
- req := testServer.WaitRequest()
- c.Assert(req.Method, Equals, "POST")
- c.Assert(req.URL.Path, Equals, "/")
- c.Assert(req.Form["Action"], DeepEquals, []string{"PutMetricAlarm"})
- c.Assert(req.Form["AlarmName"], DeepEquals, []string{"TestAlarm"})
- c.Assert(req.Form["ComparisonOperator"], DeepEquals, []string{"LessThanThreshold"})
- c.Assert(req.Form["EvaluationPeriods"], DeepEquals, []string{"5"})
- c.Assert(req.Form["Threshold"], DeepEquals, []string{"1.0000000000E+00"})
- c.Assert(req.Form["Period"], DeepEquals, []string{"60"})
- c.Assert(req.Form["Statistic"], DeepEquals, []string{"Sum"})
-}
-
-func (s *S) TestPutAlarmWithAction(c *C) {
- testServer.Response(200, nil, "<RequestId>123</RequestId>")
-
- alarm := getTestAlarm()
-
- alarm.AlarmActions = []cloudwatch.AlarmAction{
- cloudwatch.AlarmAction{
- ARN: "123",
- },
- }
-
- alarm.OkActions = []cloudwatch.AlarmAction{
- cloudwatch.AlarmAction{
- ARN: "456",
- },
- }
-
- alarm.InsufficientDataActions = []cloudwatch.AlarmAction{
- cloudwatch.AlarmAction{
- ARN: "789",
- },
- }
-
- _, err := s.cw.PutMetricAlarm(alarm)
- c.Assert(err, IsNil)
-
- req := testServer.WaitRequest()
- c.Assert(req.Method, Equals, "POST")
- c.Assert(req.URL.Path, Equals, "/")
- c.Assert(req.Form["Action"], DeepEquals, []string{"PutMetricAlarm"})
- c.Assert(req.Form["AlarmActions.member.1"], DeepEquals, []string{"123"})
- c.Assert(req.Form["OKActions.member.1"], DeepEquals, []string{"456"})
- c.Assert(req.Form["InsufficientDataActions.member.1"], DeepEquals, []string{"789"})
- c.Assert(req.Form["AlarmName"], DeepEquals, []string{"TestAlarm"})
- c.Assert(req.Form["ComparisonOperator"], DeepEquals, []string{"LessThanThreshold"})
- c.Assert(req.Form["EvaluationPeriods"], DeepEquals, []string{"5"})
- c.Assert(req.Form["Threshold"], DeepEquals, []string{"1.0000000000E+00"})
- c.Assert(req.Form["Period"], DeepEquals, []string{"60"})
- c.Assert(req.Form["Statistic"], DeepEquals, []string{"Sum"})
-}
-
-func (s *S) TestPutAlarmInvalidComapirsonOperator(c *C) {
- testServer.Response(200, nil, "<RequestId>123</RequestId>")
-
- alarm := getTestAlarm()
-
- alarm.ComparisonOperator = "LessThan"
-
- _, err := s.cw.PutMetricAlarm(alarm)
- c.Assert(err, NotNil)
- c.Assert(err.Error(), Equals, "ComparisonOperator is not valid")
-}
-
-func (s *S) TestPutAlarmInvalidStatistic(c *C) {
- testServer.Response(200, nil, "<RequestId>123</RequestId>")
-
- alarm := getTestAlarm()
-
- alarm.Statistic = "Count"
-
- _, err := s.cw.PutMetricAlarm(alarm)
- c.Assert(err, NotNil)
- c.Assert(err.Error(), Equals, "Invalid statistic value supplied")
-}