From 17885d5c82d7b97c618e0670ebf71a4f57ff4a53 Mon Sep 17 00:00:00 2001 From: Rodrigo Estebanez Date: Wed, 30 Nov 2011 20:38:10 +0100 Subject: [PATCH] mocking wait_for through describe_db_instances --- .../aws/requests/rds/create_db_instance.rb | 9 ++-- .../aws/requests/rds/describe_db_instances.rb | 43 ++++++++++++------- 2 files changed, 33 insertions(+), 19 deletions(-) diff --git a/lib/fog/aws/requests/rds/create_db_instance.rb b/lib/fog/aws/requests/rds/create_db_instance.rb index b705cae16..4fe21d287 100644 --- a/lib/fog/aws/requests/rds/create_db_instance.rb +++ b/lib/fog/aws/requests/rds/create_db_instance.rb @@ -64,20 +64,21 @@ module Fog data = { - #"created_at" => Time.now, + "DBInstanceIdentifier"=> db_name, + "DBName" => options["DBName"], + "created_at" => nil, "AutoMinorVersionUpgrade"=>true, "Endpoint"=>{}, "ReadReplicaDBInstanceIdentifiers"=>[], "PreferredMaintenanceWindow"=>"mon:04:30-mon:05:00", "Engine"=> options["Engine"], "EngineVersion"=> options["EngineVersion"] || "5.1.57", - "PendingModifiedValues"=>{"MasterUserPassword"=>"****"}, + "PendingModifiedValues"=>{}, "MultiAZ"=>false, "MasterUsername"=> options["MasterUsername"], "DBInstanceClass"=> options["DBInstanceClass"], "DBInstanceStatus"=>"creating", "BackupRetentionPeriod"=> options["BackupRetentionPeriod"] || 1, - "DBInstanceIdentifier"=> db_name, "AllocatedStorage"=> options["AllocatedStorage"], "DBParameterGroups"=> # I think groups shoul be in the self.data method [{"DBParameterGroupName"=>"default.mysql5.1", @@ -96,6 +97,8 @@ module Fog "CreateDBInstanceResult"=> {"DBInstance"=> data} } response.status = 200 + # This values aren't showed at creating time but at available time + self.data[:servers][db_name]["created_at"] = Time.now response end diff --git a/lib/fog/aws/requests/rds/describe_db_instances.rb b/lib/fog/aws/requests/rds/describe_db_instances.rb index a84c54535..4b55e8848 100644 --- a/lib/fog/aws/requests/rds/describe_db_instances.rb +++ b/lib/fog/aws/requests/rds/describe_db_instances.rb @@ -34,27 +34,38 @@ module Fog def describe_db_instances(identifier=nil, opts={}) response = Excon::Response.new - if identifier - if server_set = self.data[:servers][identifier] - response.status = 200 - response.body = { - "ResponseMetadata"=>{ "RequestId"=> Fog::AWS::Mock.request_id }, - "DescribeDBInstancesResult" => { "DBInstances" => [server_set] } - } + server_set = [] + if identifier + if server = self.data[:servers][identifier] + server_set << server else raise Fog::AWS::RDS::NotFound.new("DBInstance #{identifier} not found") - end - - else - servers_set = self.data[:servers].values - response.status = 200 - response.body = { - "ResponseMetadata"=>{ "RequestId"=> Fog::AWS::Mock.request_id }, - "DescribeDBInstancesResult" => { "DBInstances" => servers_set } - } + end end + server_set = self.data[:servers].values + + server_set.each do |server| + case server["DBInstanceStatus"] + when "creating" + if Time.now - server['created_at'] >= Fog::Mock.delay * 2 + region = "us-east-1" + server["DBInstanceStatus"] = "available" + server["availability_zone"] = region + 'a' + server["Endpoint"] = {"Port"=>3306, + "Address"=> Fog::AWS::Mock.rds_address(server["DBInstanceIdentifier"],region) } + server["PendingModifiedValues"] = {"MasterUserPassword"=>"****"} + end + end + end + + response.status = 200 + response.body = { + "ResponseMetadata"=>{ "RequestId"=> Fog::AWS::Mock.request_id }, + "DescribeDBInstancesResult" => { "DBInstances" => server_set } + } response end + end end