summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/goamz/goamz/rds/rds.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/goamz/goamz/rds/rds.go')
-rw-r--r--vendor/github.com/goamz/goamz/rds/rds.go96
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
+}