fog--fog/lib/fog/aws.rb

149 lines
3.0 KiB
Ruby
Raw Normal View History

2009-08-07 07:28:53 +00:00
require 'rubygems'
require 'base64'
require 'cgi'
require 'digest/md5'
require 'hmac-sha1'
require 'hmac-sha2'
2009-08-07 07:28:53 +00:00
require 'mime/types'
2009-08-10 15:30:28 +00:00
module Fog
module AWS
def self.reload
current_directory = File.dirname(__FILE__)
load "#{current_directory}/aws/ec2.rb"
load "#{current_directory}/aws/simpledb.rb"
load "#{current_directory}/aws/s3.rb"
end
2009-08-14 16:18:55 +00:00
if Fog.mocking?
srand(Time.now.to_i)
class Mock
def self.availability_zone
"us-east-1" << random_selection('abcd', 1)
end
2009-09-08 04:25:50 +00:00
def self.box_usage
sprintf("%0.10f", rand / 100).to_f
end
2009-08-14 17:35:16 +00:00
def self.etag
hex(32)
end
def self.key_fingerprint
fingerprint = []
20.times do
fingerprint << hex(2)
end
fingerprint.join(':')
end
def self.image_id
"ami-#{hex(8)}"
end
2009-08-14 17:35:16 +00:00
def self.instance_id
"i-#{hex(8)}"
2009-08-14 17:35:16 +00:00
end
def self.ip_address
ip = []
4.times do
ip << numbers(rand(3) + 1).to_i.to_s # remove leading 0
end
ip.join('.')
end
def self.kernel_id
"aki-#{hex(8)}"
end
def self.key_material
key_material = ['-----BEGIN RSA PRIVATE KEY-----']
20.times do
key_material << base64(76)
end
key_material << base64(67) + '='
key_material << '-----END RSA PRIVATE KEY-----'
key_material.join("\n")
end
def self.owner_id
numbers(12)
end
2009-08-14 17:35:16 +00:00
def self.request_id
request_id = []
request_id << hex(8)
3.times do
request_id << hex(4)
end
request_id << hex(12)
request_id.join('-')
end
def self.ramdisk_id
"ari-#{hex(8)}"
end
def self.reservation_id
"r-#{hex(8)}"
end
2009-08-15 22:19:07 +00:00
def self.snapshot_id
"snap-#{hex(8)}"
end
2009-08-14 17:35:16 +00:00
def self.volume_id
2009-08-15 22:19:07 +00:00
"vol-#{hex(8)}"
2009-08-14 17:35:16 +00:00
end
private
def self.random_selection(characters, length)
selection = ''
length.times do
position = rand(characters.length)
selection << characters[position..position]
end
selection
end
2009-08-14 16:18:55 +00:00
def self.letters(length)
random_selection(
'abcdefghijklmnopqrstuvwxyz',
length
)
end
def self.numbers(length)
random_selection(
'0123456789',
length
)
end
def self.hex(length)
random_selection(
'0123456789abcdef',
length
)
end
def self.base64(length)
random_selection(
"ABCDEFGHIJKLMNOP QRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
length
)
end
2009-08-14 16:18:55 +00:00
end
end
2009-08-10 15:30:28 +00:00
end
end
2009-08-17 22:11:53 +00:00
Fog::AWS.reload