diff options
Diffstat (limited to 'vendor/github.com/goamz/goamz/rds/rds.go')
-rw-r--r-- | vendor/github.com/goamz/goamz/rds/rds.go | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/vendor/github.com/goamz/goamz/rds/rds.go b/vendor/github.com/goamz/goamz/rds/rds.go new file mode 100644 index 000000000..f00b52c64 --- /dev/null +++ b/vendor/github.com/goamz/goamz/rds/rds.go @@ -0,0 +1,96 @@ +package rds + +import ( + "encoding/xml" + "github.com/goamz/goamz/aws" + "log" + "net/http/httputil" + "strconv" +) + +const debug = false + +const ( + ServiceName = "rds" + ApiVersion = "2013-09-09" +) + +// The RDS type encapsulates operations within a specific EC2 region. +type RDS struct { + Service aws.AWSService +} + +// New creates a new RDS Client. +func New(auth aws.Auth, region aws.Region) (*RDS, error) { + service, err := aws.NewService(auth, region.RDSEndpoint) + if err != nil { + return nil, err + } + return &RDS{ + Service: service, + }, nil +} + +// ---------------------------------------------------------------------------- +// Request dispatching logic. + +// query dispatches a request to the RDS API signed with a version 2 signature +func (rds *RDS) query(method, path string, params map[string]string, resp interface{}) error { + // Add basic RDS param + params["Version"] = ApiVersion + + r, err := rds.Service.Query(method, path, params) + if err != nil { + return err + } + defer r.Body.Close() + + if debug { + dump, _ := httputil.DumpResponse(r, true) + log.Printf("response:\n") + log.Printf("%v\n}\n", string(dump)) + } + + if r.StatusCode != 200 { + return rds.Service.BuildError(r) + } + err = xml.NewDecoder(r.Body).Decode(resp) + return err +} + +// ---------------------------------------------------------------------------- +// API methods and corresponding response types. + +// Response to a DescribeDBInstances request +// +// See http://goo.gl/KSPlAl for more details. +type DescribeDBInstancesResponse struct { + DBInstances []DBInstance `xml:"DescribeDBInstancesResult>DBInstances>DBInstance"` // The list of database instances + Marker string `xml:"DescribeDBInstancesResult>Marker"` // An optional pagination token provided by a previous request + RequestId string `xml:"ResponseMetadata>RequestId"` +} + +// DescribeDBInstances - Returns a description of each Database Instance +// Supports pagination by using the "Marker" parameter, and "maxRecords" for subsequent calls +// Unfortunately RDS does not currently support filtering +// +// See http://goo.gl/lzZMyz for more details. +func (rds *RDS) DescribeDBInstances(id string, maxRecords int, marker string) (*DescribeDBInstancesResponse, error) { + + params := aws.MakeParams("DescribeDBInstances") + + if id != "" { + params["DBInstanceIdentifier"] = id + } + + if maxRecords != 0 { + params["MaxRecords"] = strconv.Itoa(maxRecords) + } + if marker != "" { + params["Marker"] = marker + } + + resp := &DescribeDBInstancesResponse{} + err := rds.query("POST", "/", params, resp) + return resp, err +} |