1
0
Fork 0
mirror of https://github.com/fog/fog-aws.git synced 2022-11-09 13:50:52 -05:00

additional attributes, new rds api version

This commit is contained in:
Josh Lane 2015-05-07 15:20:10 -07:00
parent 956f53e274
commit 0c79f2f836
5 changed files with 53 additions and 46 deletions

View file

@ -3,33 +3,34 @@ module Fog
class RDS
class Server < Fog::Model
identity :id, :aliases => 'DBInstanceIdentifier'
attribute :engine, :aliases => 'Engine'
attribute :engine_version, :aliases => 'EngineVersion'
attribute :state, :aliases => 'DBInstanceStatus'
attribute :allocated_storage, :aliases => 'AllocatedStorage', :type => :integer
attribute :iops, :aliases => 'Iops'
attribute :availability_zone , :aliases => 'AvailabilityZone'
attribute :flavor_id, :aliases => 'DBInstanceClass'
attribute :endpoint, :aliases => 'Endpoint'
attribute :read_replica_source, :aliases => 'ReadReplicaSourceDBInstanceIdentifier'
attribute :read_replica_identifiers, :aliases => 'ReadReplicaDBInstanceIdentifiers', :type => :array
attribute :master_username, :aliases => 'MasterUsername'
attribute :multi_az, :aliases => 'MultiAZ'
attribute :created_at, :aliases => 'InstanceCreateTime', :type => :time
attribute :last_restorable_time, :aliases => 'LatestRestorableTime', :type => :time
attribute :auto_minor_version_upgrade, :aliases => 'AutoMinorVersionUpgrade'
attribute :pending_modified_values, :aliases => 'PendingModifiedValues'
attribute :preferred_backup_window, :aliases => 'PreferredBackupWindow'
attribute :allocated_storage, :aliases => 'AllocatedStorage', :type => :integer
attribute :auto_minor_version_upgrade, :aliases => 'AutoMinorVersionUpgrade'
attribute :availability_zone, :aliases => 'AvailabilityZone'
attribute :backup_retention_period, :aliases => 'BackupRetentionPeriod', :type => :integer
attribute :created_at, :aliases => 'InstanceCreateTime', :type => :time
attribute :db_name, :aliases => 'DBName'
attribute :db_parameter_groups, :aliases => 'DBParameterGroups'
attribute :db_security_groups, :aliases => 'DBSecurityGroups', :type => :array
attribute :db_subnet_group_name, :aliases => 'DBSubnetGroupName'
attribute :endpoint, :aliases => 'Endpoint'
attribute :engine, :aliases => 'Engine'
attribute :engine_version, :aliases => 'EngineVersion'
attribute :flavor_id, :aliases => 'DBInstanceClass'
attribute :iops, :aliases => 'Iops'
attribute :last_restorable_time, :aliases => 'LatestRestorableTime', :type => :time
attribute :license_model, :aliases => 'LicenseModel'
attribute :master_username, :aliases => 'MasterUsername'
attribute :multi_az, :aliases => 'MultiAZ'
attribute :pending_modified_values, :aliases => 'PendingModifiedValues'
attribute :preferred_backup_window, :aliases => 'PreferredBackupWindow'
attribute :preferred_maintenance_window, :aliases => 'PreferredMaintenanceWindow'
attribute :db_name, :aliases => 'DBName'
attribute :db_security_groups, :aliases => 'DBSecurityGroups', :type => :array
attribute :db_parameter_groups, :aliases => 'DBParameterGroups'
attribute :backup_retention_period, :aliases => 'BackupRetentionPeriod', :type => :integer
attribute :license_model, :aliases => 'LicenseModel'
attribute :db_subnet_group_name, :aliases => 'DBSubnetGroupName'
attribute :publicly_accessible, :aliases => 'PubliclyAccessible'
attribute :vpc_security_groups, :aliases => 'VpcSecurityGroups', :type => :array
attribute :storage_type, :aliases => 'StorageType'
attribute :publicly_accessible, :aliases => 'PubliclyAccessible'
attribute :read_replica_identifiers, :aliases => 'ReadReplicaDBInstanceIdentifiers', :type => :array
attribute :read_replica_source, :aliases => 'ReadReplicaSourceDBInstanceIdentifier'
attribute :state, :aliases => 'DBInstanceStatus'
attribute :storage_type, :aliases => 'StorageType'
attribute :vpc_security_groups, :aliases => 'VpcSecurityGroups', :type => :array
attr_accessor :password, :parameter_group_name, :security_group_names, :port

View file

@ -46,14 +46,11 @@ module Fog
when 'Engine', 'DBInstanceStatus', 'DBInstanceIdentifier',
'PreferredBackupWindow', 'PreferredMaintenanceWindow',
'AvailabilityZone', 'MasterUsername', 'DBName', 'LicenseModel',
'DBSubnetGroupName', 'StorageType'
'DBSubnetGroupName', 'StorageType', 'KmsKeyId', 'TdeCredentialArn',
'SecondaryAvailabilityZone', 'DbiResourceId'
@db_instance[name] = value
when 'MultiAZ', 'AutoMinorVersionUpgrade', 'PubliclyAccessible'
if value == 'false'
@db_instance[name] = false
else
@db_instance[name] = true
end
when 'MultiAZ', 'AutoMinorVersionUpgrade', 'PubliclyAccessible', 'StorageEncrypted'
@db_instance[name] = (value == 'true')
when 'DBParameterGroups'
@in_db_parameter_groups = false
@db_instance['DBParameterGroups'] = @db_parameter_groups
@ -64,7 +61,6 @@ module Fog
if @in_db_parameter_groups
@db_parameter_group[name] = value
end
when 'BackupRetentionPeriod'
if @in_pending_modified_values
@pending_modified_values[name] = value.to_i
@ -86,7 +82,6 @@ module Fog
when 'DBSecurityGroup'
@db_security_groups << @db_security_group
@db_security_group = {}
when 'VpcSecurityGroups'
@in_vpc_security_groups = false
@db_instance['VpcSecurityGroups'] = @vpc_security_groups
@ -95,7 +90,6 @@ module Fog
@vpc_security_group = {}
when 'VpcSecurityGroupId'
@vpc_security_group[name] = value
when 'Status'
# Unfortunately, status is used in VpcSecurityGroupMemebership and
# DBSecurityGroups
@ -105,7 +99,6 @@ module Fog
if @in_vpc_security_groups
@vpc_security_group[name] = value
end
when 'Address'
@endpoint[name] = value
when 'Port'
@ -114,7 +107,6 @@ module Fog
elsif @in_endpoint
@endpoint[name] = value.to_i
end
when 'PendingModifiedValues'
@in_pending_modified_values = false
@db_instance['PendingModifiedValues'] = @pending_modified_values

View file

@ -197,7 +197,7 @@ module Fog
@port = options[:port] || 443
@scheme = options[:scheme] || 'https'
@connection = Fog::XML::Connection.new("#{@scheme}://#{@host}:#{@port}#{@path}", @persistent, @connection_options)
@version = options[:version] || '2013-05-15'
@version = options[:version] || '2014-10-31'
setup_credentials(options)
end

View file

@ -1,5 +1,12 @@
def rds_default_server_params
{ :id => uniq_id, :allocated_storage => 5, :engine => 'mysql',
:master_username => 'foguser', :password => 'fogpassword',
:backup_retention_period => 0 }
{
:allocated_storage => 5,
:backup_retention_period => 0,
:engine => 'mysql',
:version => '5.6.22',
:id => uniq_id,
:master_username => 'foguser',
:password => 'fogpassword',
:flavor_id => 'db.m3.medium',
}
end

View file

@ -13,22 +13,29 @@ Shindo.tests("AWS::RDS | server", ['aws', 'rds']) do
snapshot = nil
tests('#create').succeeds do
snapshot = @instance.snapshots.create(:id => 'fog-test-snapshot')
snapshot = @instance.snapshots.create(:id => uniq_id('fog-snapshot-test'))
end
snapshot.wait_for { ready?}
@instance.wait_for { ready? }
returns(true) { @instance.snapshots.map{|s| s.id}.include?(snapshot.id) }
returns(true) { @instance.snapshots.map{ |s| s.id }.include?(snapshot.id) }
snapshot.destroy
end
tests("#modify").succeeds do
pending if Fog.mocking?
engine = rds_default_server_params.fetch(:engine)
version = rds_default_server_params.fetch(:version).match(/\d+\.\d+/).to_s
family = "#{engine}#{version}"
puts family
orig_parameter_group = @instance.db_parameter_groups.first['DBParameterGroupName']
parameter_group = Fog::AWS[:rds].parameter_groups.create(:id => uniq_id, :family => 'mysql5.5', :description => 'fog-test')
parameter_group = Fog::AWS[:rds].parameter_groups.create(:id => uniq_id, :family => family, :description => 'fog-test')
orig_security_groups = @instance.db_security_groups.map{|h| h['DBSecurityGroupName']}
security_group = Fog::AWS[:rds].security_groups.create(:id => uniq_id, :description => 'fog-test')
@ -94,7 +101,7 @@ Shindo.tests("AWS::RDS | server", ['aws', 'rds']) do
end
test("Destroying with a final snapshot") do
final_snapshot_id = 'fog-test-snapshot'
final_snapshot_id = uniq_id('fog-test-snapshot')
@instance_with_final_snapshot.wait_for { ready? }
@instance_with_final_snapshot.destroy(final_snapshot_id)