fog 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION +1 -1
- data/fog.gemspec +4 -2
- data/lib/fog/aws.rb +4 -0
- data/lib/fog/aws/models/ec2/address.rb +4 -10
- data/lib/fog/aws/models/ec2/addresses.rb +1 -1
- data/lib/fog/aws/models/ec2/key_pair.rb +5 -13
- data/lib/fog/aws/models/ec2/key_pairs.rb +1 -1
- data/lib/fog/aws/models/ec2/snapshot.rb +52 -0
- data/lib/fog/aws/models/ec2/snapshots.rb +50 -0
- data/lib/fog/aws/models/ec2/volume.rb +19 -18
- data/lib/fog/aws/models/ec2/volumes.rb +1 -1
- data/lib/fog/aws/models/s3/bucket.rb +0 -4
- data/lib/fog/aws/models/s3/object.rb +0 -4
- data/lib/fog/aws/models/s3/objects.rb +0 -4
- data/lib/fog/aws/requests/s3/put_bucket.rb +3 -1
- data/lib/fog/aws/requests/simpledb/batch_put_attributes.rb +65 -26
- data/lib/fog/aws/requests/simpledb/create_domain.rb +45 -20
- data/lib/fog/aws/requests/simpledb/delete_domain.rb +46 -20
- data/lib/fog/aws/requests/simpledb/list_domains.rb +58 -25
- data/lib/fog/aws/simpledb.rb +13 -0
- data/spec/aws/requests/simpledb/batch_put_attributes_spec.rb +9 -0
- data/spec/aws/requests/simpledb/create_domain_spec.rb +15 -7
- data/spec/aws/requests/simpledb/delete_attributes_spec.rb +21 -4
- data/spec/aws/requests/simpledb/delete_domain_spec.rb +7 -0
- data/spec/aws/requests/simpledb/domain_metadata_spec.rb +9 -0
- data/spec/aws/requests/simpledb/get_attributes_spec.rb +16 -0
- data/spec/aws/requests/simpledb/put_attributes_spec.rb +9 -0
- metadata +4 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.5
|
data/fog.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{fog}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.5"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Wesley Beary"]
|
12
|
-
s.date = %q{2009-09-
|
12
|
+
s.date = %q{2009-09-08}
|
13
13
|
s.description = %q{brings clouds to you}
|
14
14
|
s.email = %q{me@geemus.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -36,6 +36,8 @@ Gem::Specification.new do |s|
|
|
36
36
|
"lib/fog/aws/models/ec2/addresses.rb",
|
37
37
|
"lib/fog/aws/models/ec2/key_pair.rb",
|
38
38
|
"lib/fog/aws/models/ec2/key_pairs.rb",
|
39
|
+
"lib/fog/aws/models/ec2/snapshot.rb",
|
40
|
+
"lib/fog/aws/models/ec2/snapshots.rb",
|
39
41
|
"lib/fog/aws/models/ec2/volume.rb",
|
40
42
|
"lib/fog/aws/models/ec2/volumes.rb",
|
41
43
|
"lib/fog/aws/models/s3/bucket.rb",
|
data/lib/fog/aws.rb
CHANGED
@@ -4,24 +4,18 @@ module Fog
|
|
4
4
|
|
5
5
|
class Address < Fog::Model
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
def initialize(attributes = {})
|
11
|
-
remap_attributes(attributes, {
|
12
|
-
'instanceId' => :instance_id,
|
13
|
-
'publicIp' => :public_ip
|
14
|
-
})
|
15
|
-
super
|
16
|
-
end
|
7
|
+
attribute :instance_id, 'instanceId'
|
8
|
+
attribute :public_ip, 'publicIp'
|
17
9
|
|
18
10
|
def delete
|
19
11
|
connection.release_address(@public_ip)
|
12
|
+
true
|
20
13
|
end
|
21
14
|
|
22
15
|
def save
|
23
16
|
data = connection.allocate_address
|
24
17
|
@public_ip = data.body['publicIp']
|
18
|
+
true
|
25
19
|
end
|
26
20
|
|
27
21
|
end
|
@@ -10,7 +10,7 @@ module Fog
|
|
10
10
|
|
11
11
|
def all(public_ip = [])
|
12
12
|
data = connection.describe_addresses(public_ip).body
|
13
|
-
addresses =
|
13
|
+
addresses = Fog::AWS::EC2::Addresses.new(:connection => connection)
|
14
14
|
data['addressesSet'].each do |address|
|
15
15
|
addresses << Fog::AWS::EC2::Address.new({
|
16
16
|
:connection => connection
|
@@ -4,28 +4,20 @@ module Fog
|
|
4
4
|
|
5
5
|
class KeyPair < Fog::Model
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
def initialize(attributes = {})
|
12
|
-
remap_attributes(attributes, {
|
13
|
-
'keyFingerprint' => :fingerprint,
|
14
|
-
'keyMaterial' => :material,
|
15
|
-
'keyName' => :name
|
16
|
-
})
|
17
|
-
super
|
18
|
-
end
|
7
|
+
attribute :fingerprint, 'keyFingerprint'
|
8
|
+
attribute :material, 'keyMaterial'
|
9
|
+
attribute :name, 'keyName'
|
19
10
|
|
20
11
|
def delete
|
21
12
|
connection.delete_key_pair(@name)
|
13
|
+
true
|
22
14
|
end
|
23
15
|
|
24
16
|
def save
|
25
17
|
data = connection.create_key_pair(@name).body
|
26
18
|
new_attributes = data.reject {|key,value| !['keyFingerprint', 'keyMaterial', 'keyName'].include?(key)}
|
27
19
|
update_attributes(new_attributes)
|
28
|
-
|
20
|
+
true
|
29
21
|
end
|
30
22
|
|
31
23
|
end
|
@@ -10,7 +10,7 @@ module Fog
|
|
10
10
|
|
11
11
|
def all(key_name = [])
|
12
12
|
data = connection.describe_key_pairs(key_name).body
|
13
|
-
key_pairs =
|
13
|
+
key_pairs = Fog::AWS::EC2::KeyPairs.new(:connection => connection)
|
14
14
|
data['keySet'].each do |key|
|
15
15
|
key_pairs << Fog::AWS::EC2::KeyPair.new({
|
16
16
|
:connection => connection
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module Fog
|
2
|
+
module AWS
|
3
|
+
class EC2
|
4
|
+
|
5
|
+
class Snapshot < Fog::Model
|
6
|
+
|
7
|
+
attribute :progress
|
8
|
+
attribute :snapshot_id, 'snapshotId'
|
9
|
+
attribute :start_time, 'startTime'
|
10
|
+
attribute :status
|
11
|
+
attribute :volumeId, 'volumeId'
|
12
|
+
|
13
|
+
def delete
|
14
|
+
connection.delete_snapshot(@snapshot_id)
|
15
|
+
true
|
16
|
+
end
|
17
|
+
|
18
|
+
def save
|
19
|
+
data = connection.create_snapshot(@volume.volume_id).body
|
20
|
+
new_attributes = data.reject {|key,value| key == 'requestId'}
|
21
|
+
update_attributes(new_attributes)
|
22
|
+
true
|
23
|
+
end
|
24
|
+
|
25
|
+
def snapshots
|
26
|
+
@snapshots ||= begin
|
27
|
+
Fog::AWS::S3::Snapshots.new(
|
28
|
+
:connection => connection,
|
29
|
+
:volume => self
|
30
|
+
)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def volume
|
35
|
+
@volume
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def snapshots=(new_snapshots)
|
41
|
+
@snapshots = new_snapshots
|
42
|
+
end
|
43
|
+
|
44
|
+
def volume=(new_volume)
|
45
|
+
@volume = new_volume
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Fog
|
2
|
+
module AWS
|
3
|
+
class EC2
|
4
|
+
|
5
|
+
def snapshots
|
6
|
+
Fog::AWS::EC2::Snapshots.new(:connection => self)
|
7
|
+
end
|
8
|
+
|
9
|
+
class Snapshots < Fog::Collection
|
10
|
+
|
11
|
+
def all(snapshot_id = [])
|
12
|
+
data = connection.describe_snapshots(snapshot_id)
|
13
|
+
snapshots = Fog::AWS::EC2::Snapshots.new(:connection => connection)
|
14
|
+
data['snapshotSet'].each do |volume|
|
15
|
+
snapshots << Fog::AWS::EC2::Snapshot.new({
|
16
|
+
:connection => connection
|
17
|
+
}.merge!(snapshot))
|
18
|
+
end
|
19
|
+
snapshots
|
20
|
+
end
|
21
|
+
|
22
|
+
def create(attributes = {})
|
23
|
+
volume = new(attributes)
|
24
|
+
volume.save
|
25
|
+
volume
|
26
|
+
end
|
27
|
+
|
28
|
+
def new(attributes = {})
|
29
|
+
Fog::AWS::S3::Snapshot.new({
|
30
|
+
:connection => connection,
|
31
|
+
:volume => @volume,
|
32
|
+
:snapshots => self
|
33
|
+
}.merge!(attributes))
|
34
|
+
end
|
35
|
+
|
36
|
+
def volume
|
37
|
+
@volume
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def volume=(new_volume)
|
43
|
+
@volume = new_volume
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -4,40 +4,41 @@ module Fog
|
|
4
4
|
|
5
5
|
class Volume < Fog::Model
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
7
|
+
attribute :attachment_time, 'attachmentTime'
|
8
|
+
attribute :availability_zone, 'availabilityZone'
|
9
|
+
attribute :device, 'createTime'
|
10
|
+
attribute :instance_id, 'instanceId'
|
11
|
+
attribute :size
|
12
|
+
attribute :snapshot_id, 'snapshotId'
|
13
|
+
attribute :status, 'status'
|
14
|
+
attribute :volume_id, 'volumeId'
|
15
15
|
|
16
16
|
def initialize(attributes = {})
|
17
17
|
if attributes['attachmentSet']
|
18
18
|
attributes.merge!(attributes.delete('attachmentSet'))
|
19
19
|
end
|
20
|
-
remap_attributes(attributes, {
|
21
|
-
'attachmentTime' => :attachment_time,
|
22
|
-
'availabilityZone' => :availability_zone,
|
23
|
-
'createTime' => :create_time,
|
24
|
-
'instanceId' => :instance_id,
|
25
|
-
'snapshotId' => :snapshot_id,
|
26
|
-
'status' => :status
|
27
|
-
'volumeId' => :volume_id
|
28
|
-
})
|
29
20
|
super
|
30
21
|
end
|
31
22
|
|
32
23
|
def delete
|
33
24
|
connection.delete_volume(@volume_id)
|
25
|
+
true
|
34
26
|
end
|
35
27
|
|
36
28
|
def save
|
37
29
|
data = connection.create_volume(@availability_zone, @size, @snapshot_id).body
|
38
30
|
new_attributes = data.reject {|key,value| key == 'requestId'}
|
39
31
|
update_attributes(new_attributes)
|
40
|
-
|
32
|
+
true
|
33
|
+
end
|
34
|
+
|
35
|
+
def snapshots
|
36
|
+
@snapshots ||= begin
|
37
|
+
Fog::AWS::S3::Snapshots.new(
|
38
|
+
:connection => connection,
|
39
|
+
:volume => self
|
40
|
+
)
|
41
|
+
end
|
41
42
|
end
|
42
43
|
|
43
44
|
end
|
@@ -10,7 +10,7 @@ module Fog
|
|
10
10
|
|
11
11
|
def all(volume_id = [])
|
12
12
|
data = connection.describe_volumes(volume_id)
|
13
|
-
volumes =
|
13
|
+
volumes = Fog::AWS::EC2::Volumes.new(:connection => connection)
|
14
14
|
data['volumeSet'].each do |volume|
|
15
15
|
volumes << Fog::AWS::EC2::Volume.new({
|
16
16
|
:connection => connection
|
@@ -1,31 +1,70 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
1
|
+
unless Fog.mocking?
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module AWS
|
5
|
+
class SimpleDB
|
6
|
+
|
7
|
+
# Put items attributes into a SimpleDB domain
|
8
|
+
#
|
9
|
+
# ==== Parameters
|
10
|
+
# * domain_name<~String> - Name of domain. Must be between 3 and 255 of the
|
11
|
+
# following characters: a-z, A-Z, 0-9, '_', '-' and '.'.
|
12
|
+
# * items<~Hash> - Keys are the items names and may use any UTF-8
|
13
|
+
# characters valid in xml. Control characters and sequences not allowed
|
14
|
+
# in xml are not valid. Can be up to 1024 bytes long. Values are the
|
15
|
+
# attributes to add to the given item and may use any UTF-8 characters
|
16
|
+
# valid in xml. Control characters and sequences not allowed in xml are
|
17
|
+
# not valid. Each name and value can be up to 1024 bytes long.
|
18
|
+
#
|
19
|
+
# ==== Returns
|
20
|
+
# * response<~Fog::AWS::Response>:
|
21
|
+
# * body<~Hash>:
|
22
|
+
# * 'BoxUsage'
|
23
|
+
# * 'RequestId'
|
24
|
+
def batch_put_attributes(domain_name, items, replace_attributes = Hash.new([]))
|
25
|
+
request({
|
26
|
+
'Action' => 'BatchPutAttributes',
|
27
|
+
'DomainName' => domain_name
|
28
|
+
}.merge!(encode_batch_attributes(items, replace_attributes)), Fog::Parsers::AWS::SimpleDB::Basic.new(@nil_string))
|
29
|
+
end
|
30
|
+
|
27
31
|
end
|
32
|
+
end
|
33
|
+
end
|
28
34
|
|
35
|
+
else
|
36
|
+
|
37
|
+
module Fog
|
38
|
+
module AWS
|
39
|
+
class SimpleDB
|
40
|
+
|
41
|
+
def batch_put_attributes(domain_name, items, replace_attributes = Hash.new([]))
|
42
|
+
response = Fog::Response.new
|
43
|
+
if Fog::AWS::SimpleDB.data[:domains][domain_name]
|
44
|
+
for key, value in items do
|
45
|
+
for item in value do
|
46
|
+
if replace_attributes[key] && replace_attributes[key].include?(value)
|
47
|
+
Fog::AWS::SimpleDB.data[:domains][domain_name][key] = []
|
48
|
+
else
|
49
|
+
Fog::AWS::SimpleDB.data[:domains][domain_name][key] ||= []
|
50
|
+
end
|
51
|
+
Fog::AWS::SimpleDB.data[:domains][domain_name][key] << value.to_s
|
52
|
+
end
|
53
|
+
end
|
54
|
+
response.status = 200
|
55
|
+
response.body = {
|
56
|
+
'BoxUsage' => Fog::AWS::Mock.box_usage,
|
57
|
+
'RequestId' => Fog::AWS::Mock.request_id
|
58
|
+
}
|
59
|
+
else
|
60
|
+
response.status = 400
|
61
|
+
raise(Fog::Errors.status_error(200, 400, response))
|
62
|
+
end
|
63
|
+
response
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
29
67
|
end
|
30
68
|
end
|
69
|
+
|
31
70
|
end
|
@@ -1,25 +1,50 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
1
|
+
unless Fog.mocking?
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module AWS
|
5
|
+
class SimpleDB
|
6
|
+
|
7
|
+
# Create a SimpleDB domain
|
8
|
+
#
|
9
|
+
# ==== Parameters
|
10
|
+
# * domain_name<~String>:: Name of domain. Must be between 3 and 255 of the
|
11
|
+
# following characters: a-z, A-Z, 0-9, '_', '-' and '.'.
|
12
|
+
#
|
13
|
+
# ==== Returns
|
14
|
+
# * response<~Fog::AWS::Response>:
|
15
|
+
# * body<~Hash>:
|
16
|
+
# * 'BoxUsage'
|
17
|
+
# * 'RequestId'
|
18
|
+
def create_domain(domain_name)
|
19
|
+
request({
|
20
|
+
'Action' => 'CreateDomain',
|
21
|
+
'DomainName' => domain_name
|
22
|
+
}, Fog::Parsers::AWS::SimpleDB::Basic.new(@nil_string))
|
23
|
+
end
|
24
|
+
|
21
25
|
end
|
26
|
+
end
|
27
|
+
end
|
22
28
|
|
29
|
+
else
|
30
|
+
|
31
|
+
module Fog
|
32
|
+
module AWS
|
33
|
+
class SimpleDB
|
34
|
+
|
35
|
+
def create_domain(domain_name)
|
36
|
+
response = Fog::Response.new
|
37
|
+
Fog::AWS::SimpleDB.data[:domains][domain_name] = { :attributes => {} }
|
38
|
+
response.status = 200
|
39
|
+
response.body = {
|
40
|
+
'BoxUsage' => Fog::AWS::Mock.box_usage,
|
41
|
+
'RequestId' => Fog::AWS::Mock.request_id
|
42
|
+
}
|
43
|
+
response
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
23
47
|
end
|
24
48
|
end
|
49
|
+
|
25
50
|
end
|
@@ -1,25 +1,51 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
1
|
+
unless Fog.mocking?
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module AWS
|
5
|
+
class SimpleDB
|
6
|
+
|
7
|
+
# Delete a SimpleDB domain
|
8
|
+
#
|
9
|
+
# ==== Parameters
|
10
|
+
# * domain_name<~String>:: Name of domain. Must be between 3 and 255 of the
|
11
|
+
# following characters: a-z, A-Z, 0-9, '_', '-' and '.'.
|
12
|
+
#
|
13
|
+
# ==== Returns
|
14
|
+
# * response<~Fog::AWS::Response>:
|
15
|
+
# * body<~Hash>:
|
16
|
+
# * 'BoxUsage'
|
17
|
+
# * 'RequestId'
|
18
|
+
def delete_domain(domain_name)
|
19
|
+
request({
|
20
|
+
'Action' => 'DeleteDomain',
|
21
|
+
'DomainName' => domain_name
|
22
|
+
}, Fog::Parsers::AWS::SimpleDB::Basic.new(@nil_string))
|
23
|
+
end
|
24
|
+
|
21
25
|
end
|
26
|
+
end
|
27
|
+
end
|
22
28
|
|
29
|
+
else
|
30
|
+
|
31
|
+
module Fog
|
32
|
+
module AWS
|
33
|
+
class SimpleDB
|
34
|
+
|
35
|
+
def delete_domain(domain_name)
|
36
|
+
response = Fog::Response.new
|
37
|
+
if Fog::AWS::SimpleDB.data[:domains].delete(domain_name)
|
38
|
+
response.status = 200
|
39
|
+
response.body = {
|
40
|
+
'BoxUsage' => Fog::AWS::Mock.box_usage,
|
41
|
+
'RequestId' => Fog::AWS::Mock.request_id
|
42
|
+
}
|
43
|
+
end
|
44
|
+
response
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
23
48
|
end
|
24
49
|
end
|
50
|
+
|
25
51
|
end
|
@@ -1,30 +1,63 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
1
|
+
unless Fog.mocking?
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module AWS
|
5
|
+
class SimpleDB
|
6
|
+
|
7
|
+
# List SimpleDB domains
|
8
|
+
#
|
9
|
+
# ==== Parameters
|
10
|
+
# * options<~Hash> - options, defaults to {}
|
11
|
+
# * 'MaxNumberOfDomains'<~Integer> - number of domains to return
|
12
|
+
# between 1 and 100, defaults to 100
|
13
|
+
# * 'NextToken'<~String> - Offset token to start listing, defaults to nil
|
14
|
+
#
|
15
|
+
# ==== Returns
|
16
|
+
# * response<~Fog::AWS::Response>:
|
17
|
+
# * body<~Hash>:
|
18
|
+
# * 'BoxUsage'
|
19
|
+
# * 'Domains' - array of domain names.
|
20
|
+
# * 'NextToken' - offset to start with if there are are more domains to list
|
21
|
+
# * 'RequestId'
|
22
|
+
def list_domains(options = {})
|
23
|
+
request({
|
24
|
+
'Action' => 'ListDomains'
|
25
|
+
}.merge!(options), Fog::Parsers::AWS::SimpleDB::ListDomains.new(@nil_string))
|
26
|
+
end
|
27
|
+
|
26
28
|
end
|
29
|
+
end
|
30
|
+
end
|
27
31
|
|
32
|
+
else
|
33
|
+
|
34
|
+
module Fog
|
35
|
+
module AWS
|
36
|
+
class SimpleDB
|
37
|
+
|
38
|
+
def list_domains(options = {})
|
39
|
+
response = Fog::Response.new
|
40
|
+
keys = Fog::AWS::SimpleDB.data[:domains].keys
|
41
|
+
max = options['MaxNumberOfDomains'] || keys.size
|
42
|
+
offset = options['NextToken'] || 0
|
43
|
+
domains = []
|
44
|
+
for key, value in Fog::AWS::SimpleDB.data[:domains].keys[offset...max]
|
45
|
+
domains << key
|
46
|
+
end
|
47
|
+
response.status = 200
|
48
|
+
response.body = {
|
49
|
+
'BoxUsage' => Fog::AWS::Mock.box_usage,
|
50
|
+
'Domains' => domains,
|
51
|
+
'RequestId' => Fog::AWS::Mock.request_id
|
52
|
+
}
|
53
|
+
if max < keys.size
|
54
|
+
response.body['NextToken'] = max + 1
|
55
|
+
end
|
56
|
+
response
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
28
60
|
end
|
29
61
|
end
|
62
|
+
|
30
63
|
end
|
data/lib/fog/aws/simpledb.rb
CHANGED
@@ -2,6 +2,15 @@ module Fog
|
|
2
2
|
module AWS
|
3
3
|
class SimpleDB
|
4
4
|
|
5
|
+
if Fog.mocking?
|
6
|
+
def self.reset_data
|
7
|
+
@data = { :domains => {} }
|
8
|
+
end
|
9
|
+
def self.data
|
10
|
+
@data
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
5
14
|
def self.reload
|
6
15
|
current_directory = File.dirname(__FILE__)
|
7
16
|
load "#{current_directory}/../connection.rb"
|
@@ -25,6 +34,10 @@ module Fog
|
|
25
34
|
load "#{requests_directory}/list_domains.rb"
|
26
35
|
load "#{requests_directory}/put_attributes.rb"
|
27
36
|
load "#{requests_directory}/select.rb"
|
37
|
+
|
38
|
+
if Fog.mocking?
|
39
|
+
reset_data
|
40
|
+
end
|
28
41
|
end
|
29
42
|
|
30
43
|
# Initialize connection to SimpleDB
|
@@ -19,4 +19,13 @@ describe 'SimpleDB.batch_put_attributes' do
|
|
19
19
|
end
|
20
20
|
|
21
21
|
end
|
22
|
+
describe 'failure' do
|
23
|
+
|
24
|
+
it 'should raise a BadRequest error if the domain does not exist' do
|
25
|
+
lambda {
|
26
|
+
sdb.batch_put_attributes('notadomain', { 'a' => { 'b' => 'c' }, 'x' => { 'y' => 'z' } })
|
27
|
+
}.should raise_error(Fog::Errors::BadRequest)
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
22
31
|
end
|
@@ -1,15 +1,15 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../../../spec_helper'
|
2
2
|
|
3
3
|
describe 'SimpleDB.create_domain' do
|
4
|
-
|
4
|
+
before(:each) do
|
5
|
+
@domain_name = "fog_domain_#{Time.now.to_i}"
|
6
|
+
end
|
5
7
|
|
6
|
-
|
7
|
-
|
8
|
-
|
8
|
+
after(:each) do
|
9
|
+
sdb.delete_domain(@domain_name)
|
10
|
+
end
|
9
11
|
|
10
|
-
|
11
|
-
sdb.delete_domain(@domain_name)
|
12
|
-
end
|
12
|
+
describe 'success' do
|
13
13
|
|
14
14
|
it 'should return proper attributes' do
|
15
15
|
actual = sdb.create_domain(@domain_name)
|
@@ -18,4 +18,12 @@ describe 'SimpleDB.create_domain' do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
end
|
21
|
+
describe 'failure' do
|
22
|
+
|
23
|
+
it 'should not raise an error if the domain already exists' do
|
24
|
+
sdb.create_domain(@domain_name)
|
25
|
+
sdb.create_domain(@domain_name)
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
21
29
|
end
|
@@ -4,19 +4,36 @@ describe 'SimpleDB.delete_attributes' do
|
|
4
4
|
describe 'success' do
|
5
5
|
|
6
6
|
before(:each) do
|
7
|
-
|
8
|
-
sdb.
|
7
|
+
@domain_name = "fog_domain_#{Time.now.to_i}"
|
8
|
+
sdb.create_domain(@domain_name)
|
9
|
+
sdb.put_attributes(@domain_name, 'foo', { :bar => :baz })
|
9
10
|
end
|
10
11
|
|
11
12
|
after(:each) do
|
12
|
-
sdb.delete_domain(
|
13
|
+
sdb.delete_domain(@domain_name)
|
13
14
|
end
|
14
15
|
|
15
16
|
it 'should return proper attributes from delete_attributes' do
|
16
|
-
actual = sdb.delete_attributes(
|
17
|
+
actual = sdb.delete_attributes(@domain_name, 'foo')
|
17
18
|
actual.body['RequestId'].should be_a(String)
|
18
19
|
actual.body['BoxUsage'].should be_a(Float)
|
19
20
|
end
|
20
21
|
|
21
22
|
end
|
23
|
+
describe 'failure' do
|
24
|
+
|
25
|
+
it 'shouild raise a BadRequest error if the domain does not exist' do
|
26
|
+
lambda {
|
27
|
+
sdb.delete_attributes('notadomain', 'notanattribute')
|
28
|
+
}.should raise_error(Fog::Errors::BadRequest)
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'should not raise an error if the attribute does not exist' do
|
32
|
+
@domain_name = "fog_domain_#{Time.now.to_i}"
|
33
|
+
sdb.create_domain(@domain_name)
|
34
|
+
sdb.delete_attributes(@domain_name, 'notanattribute')
|
35
|
+
sdb.delete_domain(@domain_name)
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
22
39
|
end
|
@@ -40,4 +40,13 @@ describe 'SimpleDB.domain_metadata' do
|
|
40
40
|
end
|
41
41
|
|
42
42
|
end
|
43
|
+
describe 'failure' do
|
44
|
+
|
45
|
+
it 'should raise a BadRequest error if the domain does not exist' do
|
46
|
+
lambda {
|
47
|
+
sdb.domain_metadata('notadomain')
|
48
|
+
}.should raise_error(Fog::Errors::BadRequest)
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
43
52
|
end
|
@@ -28,4 +28,20 @@ describe 'SimpleDB.get_attributes' do
|
|
28
28
|
end
|
29
29
|
|
30
30
|
end
|
31
|
+
describe 'failure' do
|
32
|
+
|
33
|
+
it 'should raise a BadRequest error if the domain does not exist' do
|
34
|
+
lambda {
|
35
|
+
sdb.get_attributes('notadomain', 'notanattribute')
|
36
|
+
}.should raise_error(Fog::Errors::BadRequest)
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'should not raise an error if the attribute does not exist' do
|
40
|
+
@domain_name = "fog_domain_#{Time.now.to_i}"
|
41
|
+
sdb.create_domain(@domain_name)
|
42
|
+
sdb.get_attributes(@domain_name, 'notanattribute')
|
43
|
+
sdb.delete_domain(@domain_name)
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
31
47
|
end
|
@@ -19,4 +19,13 @@ describe 'SimpleDB.put_attributes' do
|
|
19
19
|
end
|
20
20
|
|
21
21
|
end
|
22
|
+
describe 'failure' do
|
23
|
+
|
24
|
+
it 'should raise a BadRequest error if the domain does not exist' do
|
25
|
+
lambda {
|
26
|
+
sdb.put_attributes(@domain_name, 'notadomain', { 'notanattribute' => 'value' })
|
27
|
+
}.should raise_error(Fog::Errors::BadRequest)
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
22
31
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Wesley Beary
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-09-
|
12
|
+
date: 2009-09-08 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -71,6 +71,8 @@ files:
|
|
71
71
|
- lib/fog/aws/models/ec2/addresses.rb
|
72
72
|
- lib/fog/aws/models/ec2/key_pair.rb
|
73
73
|
- lib/fog/aws/models/ec2/key_pairs.rb
|
74
|
+
- lib/fog/aws/models/ec2/snapshot.rb
|
75
|
+
- lib/fog/aws/models/ec2/snapshots.rb
|
74
76
|
- lib/fog/aws/models/ec2/volume.rb
|
75
77
|
- lib/fog/aws/models/ec2/volumes.rb
|
76
78
|
- lib/fog/aws/models/s3/bucket.rb
|