fog 0.0.56 → 0.0.57

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.
Files changed (85) hide show
  1. data/Rakefile +1 -1
  2. data/VERSION.yml +1 -1
  3. data/fog.gemspec +4 -4
  4. data/lib/fog/aws.rb +4 -3
  5. data/lib/fog/aws/ec2.rb +136 -150
  6. data/lib/fog/aws/models/ec2/address.rb +3 -1
  7. data/lib/fog/aws/models/ec2/addresses.rb +20 -6
  8. data/lib/fog/aws/models/ec2/flavor.rb +3 -1
  9. data/lib/fog/aws/models/ec2/flavors.rb +14 -3
  10. data/lib/fog/aws/models/ec2/image.rb +3 -1
  11. data/lib/fog/aws/models/ec2/images.rb +14 -3
  12. data/lib/fog/aws/models/ec2/key_pair.rb +3 -1
  13. data/lib/fog/aws/models/ec2/key_pairs.rb +14 -3
  14. data/lib/fog/aws/models/ec2/security_group.rb +3 -1
  15. data/lib/fog/aws/models/ec2/security_groups.rb +14 -3
  16. data/lib/fog/aws/models/ec2/server.rb +3 -1
  17. data/lib/fog/aws/models/ec2/servers.rb +14 -3
  18. data/lib/fog/aws/models/ec2/snapshot.rb +3 -1
  19. data/lib/fog/aws/models/ec2/snapshots.rb +18 -5
  20. data/lib/fog/aws/models/ec2/volume.rb +3 -1
  21. data/lib/fog/aws/models/ec2/volumes.rb +18 -5
  22. data/lib/fog/aws/models/s3/directories.rb +14 -3
  23. data/lib/fog/aws/models/s3/directory.rb +4 -1
  24. data/lib/fog/aws/models/s3/file.rb +3 -1
  25. data/lib/fog/aws/models/s3/files.rb +4 -1
  26. data/lib/fog/aws/parsers/simpledb/domain_metadata.rb +2 -0
  27. data/lib/fog/aws/parsers/simpledb/get_attributes.rb +2 -0
  28. data/lib/fog/aws/parsers/simpledb/list_domains.rb +2 -0
  29. data/lib/fog/aws/parsers/simpledb/select.rb +2 -0
  30. data/lib/fog/aws/requests/ec2/allocate_address.rb +11 -16
  31. data/lib/fog/aws/requests/ec2/associate_address.rb +14 -19
  32. data/lib/fog/aws/requests/ec2/attach_volume.rb +16 -21
  33. data/lib/fog/aws/requests/ec2/authorize_security_group_ingress.rb +29 -27
  34. data/lib/fog/aws/requests/ec2/create_key_pair.rb +13 -18
  35. data/lib/fog/aws/requests/ec2/create_security_group.rb +14 -19
  36. data/lib/fog/aws/requests/ec2/create_snapshot.rb +13 -18
  37. data/lib/fog/aws/requests/ec2/create_volume.rb +14 -19
  38. data/lib/fog/aws/requests/ec2/delete_key_pair.rb +12 -17
  39. data/lib/fog/aws/requests/ec2/delete_security_group.rb +13 -18
  40. data/lib/fog/aws/requests/ec2/delete_snapshot.rb +12 -17
  41. data/lib/fog/aws/requests/ec2/delete_volume.rb +13 -18
  42. data/lib/fog/aws/requests/ec2/describe_addresses.rb +11 -16
  43. data/lib/fog/aws/requests/ec2/describe_availability_zones.rb +9 -14
  44. data/lib/fog/aws/requests/ec2/describe_images.rb +9 -14
  45. data/lib/fog/aws/requests/ec2/describe_instances.rb +17 -22
  46. data/lib/fog/aws/requests/ec2/describe_key_pairs.rb +11 -16
  47. data/lib/fog/aws/requests/ec2/describe_regions.rb +9 -14
  48. data/lib/fog/aws/requests/ec2/describe_reserved_instances.rb +9 -14
  49. data/lib/fog/aws/requests/ec2/describe_security_groups.rb +11 -16
  50. data/lib/fog/aws/requests/ec2/describe_snapshots.rb +12 -17
  51. data/lib/fog/aws/requests/ec2/describe_volumes.rb +14 -19
  52. data/lib/fog/aws/requests/ec2/detach_volume.rb +11 -16
  53. data/lib/fog/aws/requests/ec2/disassociate_address.rb +12 -17
  54. data/lib/fog/aws/requests/ec2/get_console_output.rb +12 -17
  55. data/lib/fog/aws/requests/ec2/reboot_instances.rb +11 -16
  56. data/lib/fog/aws/requests/ec2/release_address.rb +12 -17
  57. data/lib/fog/aws/requests/ec2/revoke_security_group_ingress.rb +10 -15
  58. data/lib/fog/aws/requests/ec2/run_instances.rb +36 -38
  59. data/lib/fog/aws/requests/ec2/terminate_instances.rb +16 -20
  60. data/lib/fog/aws/requests/s3/copy_object.rb +9 -15
  61. data/lib/fog/aws/requests/s3/delete_bucket.rb +9 -16
  62. data/lib/fog/aws/requests/s3/delete_object.rb +6 -14
  63. data/lib/fog/aws/requests/s3/get_bucket.rb +9 -14
  64. data/lib/fog/aws/requests/s3/get_bucket_location.rb +8 -14
  65. data/lib/fog/aws/requests/s3/get_object.rb +7 -15
  66. data/lib/fog/aws/requests/s3/get_request_payment.rb +7 -13
  67. data/lib/fog/aws/requests/s3/get_service.rb +7 -13
  68. data/lib/fog/aws/requests/s3/head_object.rb +6 -14
  69. data/lib/fog/aws/requests/s3/put_bucket.rb +13 -21
  70. data/lib/fog/aws/requests/s3/put_object.rb +8 -16
  71. data/lib/fog/aws/requests/s3/put_request_payment.rb +7 -16
  72. data/lib/fog/aws/requests/simpledb/batch_put_attributes.rb +14 -21
  73. data/lib/fog/aws/requests/simpledb/create_domain.rb +11 -18
  74. data/lib/fog/aws/requests/simpledb/delete_attributes.rb +15 -22
  75. data/lib/fog/aws/requests/simpledb/delete_domain.rb +11 -18
  76. data/lib/fog/aws/requests/simpledb/domain_metadata.rb +14 -19
  77. data/lib/fog/aws/requests/simpledb/get_attributes.rb +19 -23
  78. data/lib/fog/aws/requests/simpledb/list_domains.rb +11 -16
  79. data/lib/fog/aws/requests/simpledb/put_attributes.rb +15 -15
  80. data/lib/fog/aws/requests/simpledb/select.rb +12 -17
  81. data/lib/fog/aws/s3.rb +117 -121
  82. data/lib/fog/aws/simpledb.rb +127 -127
  83. data/lib/fog/rackspace/models/servers/images.rb +1 -1
  84. data/spec/aws/requests/ec2/authorize_security_group_ingress_spec.rb +11 -1
  85. metadata +4 -4
@@ -1,8 +1,9 @@
1
- unless Fog.mocking?
1
+ module Fog
2
+ module AWS
3
+ module EC2
4
+ class Real
2
5
 
3
- module Fog
4
- module AWS
5
- class EC2
6
+ require 'fog/aws/parsers/ec2/terminate_instances'
6
7
 
7
8
  # Terminate specified instances
8
9
  #
@@ -24,32 +25,26 @@ unless Fog.mocking?
24
25
  def terminate_instances(instance_id)
25
26
  params = AWS.indexed_param('InstanceId', instance_id)
26
27
  request({
27
- 'Action' => 'TerminateInstances'
28
- }.merge!(params), Fog::Parsers::AWS::EC2::TerminateInstances.new)
28
+ 'Action' => 'TerminateInstances',
29
+ :parser => Fog::Parsers::AWS::EC2::TerminateInstances.new
30
+ }.merge!(params))
29
31
  end
30
32
 
31
33
  end
32
- end
33
- end
34
34
 
35
- else
36
-
37
- module Fog
38
- module AWS
39
- class EC2
35
+ class Mock
40
36
 
41
37
  def terminate_instances(instance_id)
42
38
  response = Excon::Response.new
43
39
  instance_id = [*instance_id]
44
- if (Fog::AWS::EC2.data[:instances].keys & instance_id).length == instance_id.length
40
+ if (@data[:instances].keys & instance_id).length == instance_id.length
45
41
  for instance_id in instance_id
46
42
  response.body = {
47
43
  'requestId' => Fog::AWS::Mock.request_id,
48
44
  'instancesSet' => []
49
45
  }
50
- instance = Fog::AWS::EC2.data[:instances][instance_id]
51
- Fog::AWS::EC2.data[:deleted_at][instance_id] = Time.now
52
- instance['status'] = 'deleting'
46
+ instance = @data[:instances][instance_id]
47
+ @data[:deleted_at][instance_id] = Time.now
53
48
  response.status = 200
54
49
  # TODO: the codes are mostly educated guessing, not certainty
55
50
  code = case instance['state']
@@ -64,11 +59,13 @@ else
64
59
  when 'rebooting'
65
60
  128
66
61
  end
62
+ state = { 'name' => 'shutting-down', 'code' => 32}
67
63
  response.body['instancesSet'] << {
68
64
  'instanceId' => instance_id,
69
- 'previousState' => { 'name' => instance['state'], 'code' => code },
70
- 'shutdownState' => { 'name' => 'shutting-down', 'code' => 32}
65
+ 'previousState' => instance['instanceState'],
66
+ 'currentState' => state
71
67
  }
68
+ instance['instanceState'] = state
72
69
  end
73
70
  else
74
71
  response.status = 400
@@ -80,5 +77,4 @@ else
80
77
  end
81
78
  end
82
79
  end
83
-
84
80
  end
@@ -1,8 +1,9 @@
1
- unless Fog.mocking?
1
+ module Fog
2
+ module AWS
3
+ module S3
4
+ class Real
2
5
 
3
- module Fog
4
- module AWS
5
- class S3
6
+ require 'fog/aws/parsers/s3/copy_object'
6
7
 
7
8
  # Copy an object from one S3 bucket to another
8
9
  #
@@ -38,20 +39,14 @@ unless Fog.mocking?
38
39
  end
39
40
 
40
41
  end
41
- end
42
- end
43
42
 
44
- else
45
-
46
- module Fog
47
- module AWS
48
- class S3
43
+ class Mock
49
44
 
50
45
  def copy_object(source_bucket_name, source_object_name, target_bucket_name, target_object_name, options = {})
51
46
  response = Excon::Response.new
52
- source_bucket = Fog::AWS::S3.data[:buckets][source_bucket_name]
47
+ source_bucket = @data[:buckets][source_bucket_name]
53
48
  source_object = source_bucket && source_bucket[:objects][source_object_name]
54
- target_bucket = Fog::AWS::S3.data[:buckets][target_bucket_name]
49
+ target_bucket = @data[:buckets][target_bucket_name]
55
50
 
56
51
  if source_object && target_bucket
57
52
  response.status = 200
@@ -75,5 +70,4 @@ else
75
70
  end
76
71
  end
77
72
  end
78
-
79
- end
73
+ end
@@ -1,8 +1,7 @@
1
- unless Fog.mocking?
2
-
3
- module Fog
4
- module AWS
5
- class S3
1
+ module Fog
2
+ module AWS
3
+ module S3
4
+ class Real
6
5
 
7
6
  # Delete an S3 bucket
8
7
  #
@@ -22,32 +21,26 @@ unless Fog.mocking?
22
21
  end
23
22
 
24
23
  end
25
- end
26
- end
27
24
 
28
- else
29
-
30
- module Fog
31
- module AWS
32
- class S3
25
+ class Mock
33
26
 
34
27
  def delete_bucket(bucket_name)
35
28
  response = Excon::Response.new
36
- if Fog::AWS::S3.data[:buckets][bucket_name].nil?
29
+ if @data[:buckets][bucket_name].nil?
37
30
  response.status = 404
38
31
  raise(Excon::Errors.status_error({:expects => 204}, response))
39
- elsif Fog::AWS::S3.data[:buckets][bucket_name] && !Fog::AWS::S3.data[:buckets][bucket_name][:objects].empty?
32
+ elsif @data[:buckets][bucket_name] && !@data[:buckets][bucket_name][:objects].empty?
40
33
  response.status = 409
41
34
  raise(Excon::Errors.status_error({:expects => 204}, response))
42
35
  else
43
- Fog::AWS::S3.data[:buckets].delete(bucket_name)
36
+ @data[:buckets].delete(bucket_name)
44
37
  response.status = 204
45
38
  end
46
39
  response
47
40
  end
48
41
 
49
42
  end
43
+
50
44
  end
51
45
  end
52
-
53
46
  end
@@ -1,8 +1,7 @@
1
- unless Fog.mocking?
2
-
3
- module Fog
4
- module AWS
5
- class S3
1
+ module Fog
2
+ module AWS
3
+ module S3
4
+ class Real
6
5
 
7
6
  # Delete an object from S3
8
7
  #
@@ -25,18 +24,12 @@ unless Fog.mocking?
25
24
  end
26
25
 
27
26
  end
28
- end
29
- end
30
27
 
31
- else
32
-
33
- module Fog
34
- module AWS
35
- class S3
28
+ class Mock
36
29
 
37
30
  def delete_object(bucket_name, object_name)
38
31
  response = Excon::Response.new
39
- if bucket = Fog::AWS::S3.data[:buckets][bucket_name]
32
+ if bucket = @data[:buckets][bucket_name]
40
33
  response.status = 204
41
34
  bucket[:objects].delete(object_name)
42
35
  else
@@ -49,5 +42,4 @@ else
49
42
  end
50
43
  end
51
44
  end
52
-
53
45
  end
@@ -1,8 +1,9 @@
1
- unless Fog.mocking?
1
+ module Fog
2
+ module AWS
3
+ module S3
4
+ class Real
2
5
 
3
- module Fog
4
- module AWS
5
- class S3
6
+ require 'fog/aws/parsers/s3/get_bucket'
6
7
 
7
8
  # List information about objects in an S3 bucket
8
9
  #
@@ -54,14 +55,8 @@ unless Fog.mocking?
54
55
  end
55
56
 
56
57
  end
57
- end
58
- end
59
58
 
60
- else
61
-
62
- module Fog
63
- module AWS
64
- class S3
59
+ class Mock
65
60
 
66
61
  # FIXME: implement delimiter
67
62
  def get_bucket(bucket_name, options = {})
@@ -69,16 +64,17 @@ else
69
64
  raise ArgumentError.new('bucket_name is required')
70
65
  end
71
66
  response = Excon::Response.new
72
- if bucket = Fog::AWS::S3.data[:buckets][bucket_name]
67
+ if bucket = @data[:buckets][bucket_name]
73
68
  response.status = 200
74
69
  response.body = {
75
70
  'Contents' => bucket[:objects].values.sort {|x,y| x['Key'] <=> y['Key']}.reject do |object|
76
71
  (options['prefix'] && object['Key'][0...options['prefix'].length] != options['prefix']) ||
77
72
  (options['marker'] && object['Key'] <= options['marker'])
78
73
  end.map do |object|
79
- data = object.reject {|key, value| !['ETag', 'Key', 'LastModified', 'Owner', 'Size', 'StorageClass'].include?(key)}
74
+ data = object.reject {|key, value| !['ETag', 'Key', 'LastModified', 'Size', 'StorageClass'].include?(key)}
80
75
  data.merge!({
81
76
  'LastModified' => Time.parse(data['LastModified']),
77
+ 'Owner' => bucket['Owner'],
82
78
  'Size' => data['Size'].to_i
83
79
  })
84
80
  data
@@ -103,5 +99,4 @@ else
103
99
  end
104
100
  end
105
101
  end
106
-
107
102
  end
@@ -1,8 +1,9 @@
1
- unless Fog.mocking?
1
+ module Fog
2
+ module AWS
3
+ module S3
4
+ class Real
2
5
 
3
- module Fog
4
- module AWS
5
- class S3
6
+ require 'fog/aws/parsers/s3/get_bucket_location'
6
7
 
7
8
  # Get location constraint for an S3 bucket
8
9
  #
@@ -26,18 +27,12 @@ unless Fog.mocking?
26
27
  end
27
28
 
28
29
  end
29
- end
30
- end
31
30
 
32
- else
33
-
34
- module Fog
35
- module AWS
36
- class S3
31
+ class Mock
37
32
 
38
33
  def get_bucket_location(bucket_name)
39
34
  response = Excon::Response.new
40
- if bucket = Fog::AWS::S3.data[:buckets][bucket_name]
35
+ if bucket = @data[:buckets][bucket_name]
41
36
  response.status = 200
42
37
  response.body = {'LocationConstraint' => bucket['LocationConstraint'] }
43
38
  else
@@ -50,5 +45,4 @@ else
50
45
  end
51
46
  end
52
47
  end
53
-
54
- end
48
+ end
@@ -1,8 +1,7 @@
1
- unless Fog.mocking?
2
-
3
- module Fog
4
- module AWS
5
- class S3
1
+ module Fog
2
+ module AWS
3
+ module S3
4
+ class Real
6
5
 
7
6
  # Get an object from S3
8
7
  #
@@ -56,19 +55,13 @@ unless Fog.mocking?
56
55
  :headers => {},
57
56
  :host => "#{bucket_name}.#{@host}",
58
57
  :method => 'GET',
59
- :path => object_name
58
+ :path => CGI.escape(object_name)
60
59
  }, expires)
61
60
  end
62
61
 
63
62
  end
64
- end
65
- end
66
-
67
- else
68
63
 
69
- module Fog
70
- module AWS
71
- class S3
64
+ class Mock
72
65
 
73
66
  def get_object(bucket_name, object_name, options = {}, &block)
74
67
  unless bucket_name
@@ -78,7 +71,7 @@ else
78
71
  raise ArgumentError.new('object_name is required')
79
72
  end
80
73
  response = Excon::Response.new
81
- if (bucket = Fog::AWS::S3.data[:buckets][bucket_name]) && (object = bucket[:objects][object_name])
74
+ if (bucket = @data[:buckets][bucket_name]) && (object = bucket[:objects][object_name])
82
75
  if options['If-Match'] && options['If-Match'] != object['ETag']
83
76
  response.status = 412
84
77
  elsif options['If-Modified-Since'] && options['If-Modified-Since'] > Time.parse(object['LastModified'])
@@ -121,5 +114,4 @@ else
121
114
  end
122
115
  end
123
116
  end
124
-
125
117
  end
@@ -1,8 +1,9 @@
1
- unless Fog.mocking?
1
+ module Fog
2
+ module AWS
3
+ module S3
4
+ class Real
2
5
 
3
- module Fog
4
- module AWS
5
- class S3
6
+ require 'fog/aws/parsers/s3/get_request_payment'
6
7
 
7
8
  # Get configured payer for an S3 bucket
8
9
  #
@@ -26,18 +27,12 @@ unless Fog.mocking?
26
27
  end
27
28
 
28
29
  end
29
- end
30
- end
31
30
 
32
- else
33
-
34
- module Fog
35
- module AWS
36
- class S3
31
+ class Mock
37
32
 
38
33
  def get_request_payment(bucket_name)
39
34
  response = Excon::Response.new
40
- if bucket = Fog::AWS::S3.data[:buckets][bucket_name]
35
+ if bucket = @data[:buckets][bucket_name]
41
36
  response.status = 200
42
37
  response.body = { 'Payer' => bucket['Payer'] }
43
38
  else
@@ -50,5 +45,4 @@ else
50
45
  end
51
46
  end
52
47
  end
53
-
54
48
  end
@@ -1,8 +1,9 @@
1
- unless Fog.mocking?
1
+ module Fog
2
+ module AWS
3
+ module S3
4
+ class Real
2
5
 
3
- module Fog
4
- module AWS
5
- class S3
6
+ require 'fog/aws/parsers/s3/get_service'
6
7
 
7
8
  # List information about S3 buckets for authorized user
8
9
  #
@@ -28,19 +29,13 @@ unless Fog.mocking?
28
29
  end
29
30
 
30
31
  end
31
- end
32
- end
33
32
 
34
- else
35
-
36
- module Fog
37
- module AWS
38
- class S3
33
+ class Mock
39
34
 
40
35
  def get_service
41
36
  response = Excon::Response.new
42
37
  response.headers['Status'] = 200
43
- buckets = Fog::AWS::S3.data[:buckets].values.map do |bucket|
38
+ buckets = @data[:buckets].values.map do |bucket|
44
39
  bucket.reject do |key, value|
45
40
  !['CreationDate', 'Name'].include?(key)
46
41
  end
@@ -55,5 +50,4 @@ else
55
50
  end
56
51
  end
57
52
  end
58
-
59
53
  end
@@ -1,8 +1,7 @@
1
- unless Fog.mocking?
2
-
3
- module Fog
4
- module AWS
5
- class S3
1
+ module Fog
2
+ module AWS
3
+ module S3
4
+ class Real
6
5
 
7
6
  # Get headers for an object from S3
8
7
  #
@@ -39,14 +38,8 @@ unless Fog.mocking?
39
38
  end
40
39
 
41
40
  end
42
- end
43
- end
44
41
 
45
- else
46
-
47
- module Fog
48
- module AWS
49
- class S3
42
+ class Mock
50
43
 
51
44
  def head_object(bucket_name, object_name, options = {})
52
45
  response = get_object(bucket_name, object_name, options)
@@ -57,5 +50,4 @@ else
57
50
  end
58
51
  end
59
52
  end
60
-
61
- end
53
+ end