Class: Aws::Rds

Inherits:
AwsBase show all
Includes:
AwsBaseInterface
Defined in:
lib/rds/rds.rb

Overview

Constant Summary collapse

API_VERSION =

Amazon API version being used

nil
DEFAULT_HOST =
"rds.amazonaws.com"
DEFAULT_PATH =
'/'
DEFAULT_PROTOCOL =
'https'
DEFAULT_PORT =
443
@@api =
ENV['RDS_API_VERSION'] || API_VERSION
@@bench =
AwsBenchmarkingBlock.new

Constants included from AwsBaseInterface

AwsBaseInterface::DEFAULT_SIGNATURE_VERSION

Constants inherited from AwsBase

AwsBase::AMAZON_PROBLEMS

Instance Attribute Summary

Attributes included from AwsBaseInterface

#aws_access_key_id, #cache, #connection, #last_errors, #last_request, #last_request_id, #last_response, #logger, #params, #signature_version

Class Method Summary collapse

Instance Method Summary collapse

Methods included from AwsBaseInterface

#cache_hits?, caching, caching=, #caching?, #close_conn, #generate_request, #generate_request2, #get_conn, #hash_params, #init, #multi_thread, #on_exception, #request_cache_or_info, #request_info2, #request_info_impl, #request_info_xml_simple, #signed_service_params, #symbolize, #update_cache

Methods inherited from AwsBase

amazon_problems, amazon_problems=

Constructor Details

#initialize(aws_access_key_id = nil, aws_secret_access_key = nil, params = {}) ⇒ Rds

Returns a new instance of Rds.



37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/rds/rds.rb', line 37

def initialize(aws_access_key_id=nil, aws_secret_access_key=nil, params={})
    uri = ENV['RDS_URL'] ? URI.parse(ENV['RDS_URL']) : nil
    init({ :name => 'RDS',
           :default_host => uri ? uri.host : DEFAULT_HOST,
           :default_port => uri ? uri.port : DEFAULT_PORT,
           :default_service => uri ? uri.path : DEFAULT_PATH,
           :default_protocol => uri ? uri.scheme : DEFAULT_PROTOCOL,
    :api_version => API_VERSION },
         aws_access_key_id || ENV['AWS_ACCESS_KEY_ID'],
         aws_secret_access_key|| ENV['AWS_SECRET_ACCESS_KEY'],
         params)
end

Class Method Details

.apiObject



19
20
21
# File 'lib/rds/rds.rb', line 19

def self.api
    @@api
end

.bench_ec2Object



32
33
34
# File 'lib/rds/rds.rb', line 32

def self.bench_ec2
    @@bench.service
end

.bench_xmlObject



27
28
29
# File 'lib/rds/rds.rb', line 27

def self.bench_xml
    @@bench.xml
end

Instance Method Details

#authorize_db_security_group_ingress_ec2group(group_name, ec2_group_name, ec2_group_owner_id, options = {}) ⇒ Object



182
183
184
185
186
187
188
189
190
# File 'lib/rds/rds.rb', line 182

def authorize_db_security_group_ingress_ec2group(group_name, ec2_group_name, ec2_group_owner_id, options={})
    params = {}
    params['DBSecurityGroupName'] = group_name
    params['EC2SecurityGroupOwnerId'] = ec2_group_owner_id
    params['EC2SecurityGroupName'] = ec2_group_name
    link = do_request("AuthorizeDBSecurityGroupIngress", params)
rescue Exception
    on_exception
end

#authorize_db_security_group_ingress_range(group_name, ip_range, options = {}) ⇒ Object



193
194
195
196
197
198
199
200
# File 'lib/rds/rds.rb', line 193

def authorize_db_security_group_ingress_range(group_name, ip_range, options={})
    params = {}
    params['DBSecurityGroupName'] = group_name
    params['CIDRIP'] = ip_range
    link = do_request("AuthorizeDBSecurityGroupIngress", params)
rescue Exception
    on_exception
end

#create_db_instance(identifier, instance_class, allocated_storage, master_username, master_password, options = {}) ⇒ Object

identifier: db instance identifier. Must be unique per account per zone. instance_class: db.m1.small | db.m1.large | db.m1.xlarge | db.m2.2xlarge | db.m2.4xlarge See this for other values: docs.amazonwebservices.com/AmazonRDS/latest/APIReference/

options:

db_name: if you want a database created at the same time as the instance, specify :db_name option.
availability_zone: default is random zone.


82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/rds/rds.rb', line 82

def create_db_instance(identifier, instance_class, allocated_storage, master_username, master_password, options={})
    params = {}
    params['DBInstanceIdentifier'] = identifier
    params['DBInstanceClass'] = instance_class
    params['AllocatedStorage'] = allocated_storage
    params['MasterUsername'] = master_username
    params['MasterUserPassword'] = master_password

    params['Engine'] = options[:engine] || "MySQL5.1"
    params['DBName'] = options[:db_name] if options[:db_name]
    params['AvailabilityZone'] = options[:availability_zone] if options[:availability_zone]
    params['PreferredMaintenanceWindow'] = options[:preferred_maintenance_window] if options[:preferred_maintenance_window]
    params['BackupRetentionPeriod'] = options[:preferred_retention_period] if options[:preferred_retention_period]
    params['PreferredBackupWindow'] = options[:preferred_backup_window] if options[:preferred_backup_window]

    @logger.info("Creating DB Instance called #{identifier}")

    link = do_request("CreateDBInstance", params, :pull_out_single=>[:create_db_instance_result, :db_instance])

rescue Exception
    on_exception
end

#create_db_security_group(group_name, description, options = {}) ⇒ Object



146
147
148
149
150
151
152
153
154
155
# File 'lib/rds/rds.rb', line 146

def create_db_security_group(group_name, description, options={})
    params = {}
    params['DBSecurityGroupName'] = group_name
    params['DBSecurityGroupDescription'] = description

    link = do_request("CreateDBSecurityGroup", params, :pull_out_single => [:create_db_security_group_result, :db_security_group])

rescue Exception
    on_exception
end

#delete_db_instance(identifier, final_snapshot_identifier = nil) ⇒ Object

identifier: identifier of db instance to delete. final_snapshot_identifier: if specified, RDS will crate a final snapshot before deleting so you can restore it later.



128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
# File 'lib/rds/rds.rb', line 128

def delete_db_instance(identifier, final_snapshot_identifier=nil)
    @logger.info("Deleting DB Instance - " + identifier.to_s)

    params = {}
    params['DBInstanceIdentifier'] = identifier
    if final_snapshot_identifier
        params['FinalDBSnapshotIdentifier'] = final_snapshot_identifier
    else
        params['SkipFinalSnapshot'] = true
    end

    link = do_request("DeleteDBInstance", params, :pull_out_single=>[:delete_db_instance_result, :db_instance])

rescue Exception
    on_exception
end

#delete_db_security_group(group_name, options = {}) ⇒ Object



158
159
160
161
162
163
164
165
166
# File 'lib/rds/rds.rb', line 158

def delete_db_security_group(group_name, options={})
    params = {}
    params['DBSecurityGroupName'] = group_name

    link = do_request("DeleteDBSecurityGroup", params)

rescue Exception
    on_exception
end

#describe_db_instances(options = {}) ⇒ Object

options:

DBInstanceIdentifier
MaxRecords
Marker

Returns array of instances as hashes. Response metadata can be retreived by calling array.response_metadata on the returned array.



113
114
115
116
117
118
119
120
121
122
123
# File 'lib/rds/rds.rb', line 113

def describe_db_instances(options={})
    params = {}
    params['DBInstanceIdentifier'] = options[:db_instance_identifier] if options[:db_instance_identifier]
    params['MaxRecords'] = options[:max_records] if options[:max_records]
    params['Marker'] = options[:marker] if options[:marker]

    resp = do_request("DescribeDBInstances", params, :pull_out_array=>[:describe_db_instances_result, :db_instances])

rescue Exception
    on_exception
end

#describe_db_security_groups(options = {}) ⇒ Object



169
170
171
172
173
174
175
176
177
178
179
# File 'lib/rds/rds.rb', line 169

def describe_db_security_groups(options={})
    params = {}
    params['DBSecurityGroupName'] = options[:DBSecurityGroupName] if options[:DBSecurityGroupName]
    params['MaxRecords'] = options[:MaxRecords] if options[:MaxRecords]

    link = do_request("DescribeDBSecurityGroups", params, :pull_out_array=>[:describe_db_security_groups_result, :db_security_groups], :wrapper=>:db_security_group)


rescue Exception
    on_exception
end

#do_request(action, params, options = {}) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/rds/rds.rb', line 51

def do_request(action, params, options={})
    link = generate_request(action, params)
    resp = request_info_xml_simple(:rds_connection, @params, link, @logger,
                                   :group_tags=>{"DBInstances"=>"DBInstance",
                                                    "DBParameterGroups"=>"DBParameterGroup",
                                                    "DBSecurityGroups"=>"DBSecurityGroup",
                                                    "EC2SecurityGroups"=>"EC2SecurityGroup",
                                                    "IPRanges"=>"IPRange"},
                                   :force_array=>["DBInstances",
                                                  "DBParameterGroups",
                                                  "DBSecurityGroups",
                                                  "EC2SecurityGroups",
                                                  "IPRanges"],
                                   :pull_out_array=>options[:pull_out_array],
                                   :pull_out_single=>options[:pull_out_single],
                                   :wrapper=>options[:wrapper])
end

#revoke_db_security_group_ingress(group_name, ip_range, options = {}) ⇒ Object



203
204
205
206
207
208
209
210
# File 'lib/rds/rds.rb', line 203

def revoke_db_security_group_ingress(group_name, ip_range, options={})
    params = {}
    params['DBSecurityGroupName'] = group_name
    params['CIDRIP'] = ip_range
    link = do_request("RevokeDBSecurityGroupIngress", params)
rescue Exception
    on_exception
end