fog 0.0.56 → 0.0.57

Sign up to get free protection for your applications and to get access to all the features.
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