2009-05-18 07:13:06 +00:00
|
|
|
require 'spec'
|
2009-10-03 22:43:19 +00:00
|
|
|
require 'open-uri'
|
2009-05-18 07:13:06 +00:00
|
|
|
|
2009-07-15 18:53:32 +00:00
|
|
|
current_directory = File.dirname(__FILE__)
|
2009-08-10 15:30:28 +00:00
|
|
|
require "#{current_directory}/../lib/fog"
|
2009-09-15 04:14:34 +00:00
|
|
|
# Fog.mock!
|
2009-05-19 06:06:49 +00:00
|
|
|
|
2009-07-14 02:25:44 +00:00
|
|
|
def credentials
|
|
|
|
@credentials ||= begin
|
2009-10-02 06:25:29 +00:00
|
|
|
credentials_path = File.expand_path('~/.fog')
|
2009-07-14 02:25:44 +00:00
|
|
|
credentials_data = File.open(credentials_path).read
|
|
|
|
YAML.load(credentials_data)
|
|
|
|
end
|
|
|
|
end
|
2009-05-19 06:06:49 +00:00
|
|
|
|
2009-08-18 05:39:44 +00:00
|
|
|
def ec2
|
|
|
|
Fog::AWS::EC2.new(
|
2009-10-11 00:25:59 +00:00
|
|
|
:aws_access_key_id => credentials[:aws_access_key_id],
|
|
|
|
:aws_secret_access_key => credentials[:aws_secret_access_key]
|
2009-08-18 05:39:44 +00:00
|
|
|
)
|
|
|
|
end
|
2009-08-12 04:40:59 +00:00
|
|
|
|
2009-08-18 05:39:44 +00:00
|
|
|
def eu_s3
|
|
|
|
Fog::AWS::S3.new(
|
2009-10-11 00:25:59 +00:00
|
|
|
:aws_access_key_id => credentials[:aws_access_key_id],
|
|
|
|
:aws_secret_access_key => credentials[:aws_secret_access_key],
|
2009-08-18 05:39:44 +00:00
|
|
|
:host => 's3-external-3.amazonaws.com'
|
|
|
|
)
|
|
|
|
end
|
2009-08-12 04:40:59 +00:00
|
|
|
|
2009-08-18 05:39:44 +00:00
|
|
|
def sdb
|
|
|
|
Fog::AWS::SimpleDB.new(
|
2009-10-11 00:25:59 +00:00
|
|
|
:aws_access_key_id => credentials[:aws_access_key_id],
|
|
|
|
:aws_secret_access_key => credentials[:aws_secret_access_key]
|
2009-08-18 05:39:44 +00:00
|
|
|
)
|
|
|
|
end
|
2009-08-12 04:40:59 +00:00
|
|
|
|
2009-10-11 02:05:17 +00:00
|
|
|
def servers
|
|
|
|
Fog::Rackspace::Servers.new(
|
|
|
|
:rackspace_api_key => credentials[:rackspace_api_key],
|
|
|
|
:rackspace_username => credentials[:rackspace_username]
|
|
|
|
)
|
|
|
|
end
|
|
|
|
|
2009-08-18 05:39:44 +00:00
|
|
|
def s3
|
|
|
|
Fog::AWS::S3.new(
|
2009-10-11 00:25:59 +00:00
|
|
|
:aws_access_key_id => credentials[:aws_access_key_id],
|
|
|
|
:aws_secret_access_key => credentials[:aws_secret_access_key]
|
2009-08-18 05:39:44 +00:00
|
|
|
)
|
2009-07-23 02:28:53 +00:00
|
|
|
end
|
2009-05-19 06:06:49 +00:00
|
|
|
|
2009-07-26 01:05:49 +00:00
|
|
|
def eventually(max_delay = 16, &block)
|
|
|
|
delays = [0]
|
|
|
|
delay_step = 1
|
|
|
|
total = 0
|
|
|
|
while true
|
|
|
|
delay = 1
|
|
|
|
delay_step.times do
|
|
|
|
delay *= 2
|
|
|
|
end
|
|
|
|
delays << delay
|
|
|
|
delay_step += 1
|
|
|
|
break if delay >= max_delay
|
|
|
|
end
|
|
|
|
delays.each do |delay|
|
2009-07-16 06:37:22 +00:00
|
|
|
begin
|
|
|
|
sleep(delay)
|
|
|
|
yield
|
|
|
|
break
|
2009-07-19 23:06:33 +00:00
|
|
|
rescue => error
|
2009-07-26 01:05:49 +00:00
|
|
|
raise error if delay >= max_delay
|
2009-07-16 06:37:22 +00:00
|
|
|
end
|
2009-05-19 06:06:49 +00:00
|
|
|
end
|
2009-07-16 06:37:22 +00:00
|
|
|
end
|