fog 0.1.8 → 0.1.9

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 (128) hide show
  1. data/Gemfile +2 -2
  2. data/Gemfile.lock +5 -5
  3. data/README.rdoc +29 -29
  4. data/fog.gemspec +24 -2
  5. data/lib/fog.rb +4 -15
  6. data/lib/fog/aws.rb +2 -2
  7. data/lib/fog/aws/ec2.rb +64 -101
  8. data/lib/fog/aws/elb.rb +19 -27
  9. data/lib/fog/aws/models/ec2/addresses.rb +1 -9
  10. data/lib/fog/aws/models/ec2/flavors.rb +1 -7
  11. data/lib/fog/aws/models/ec2/images.rb +1 -7
  12. data/lib/fog/aws/models/ec2/key_pairs.rb +1 -7
  13. data/lib/fog/aws/models/ec2/security_groups.rb +1 -7
  14. data/lib/fog/aws/models/ec2/servers.rb +1 -7
  15. data/lib/fog/aws/models/ec2/snapshots.rb +1 -9
  16. data/lib/fog/aws/models/ec2/volumes.rb +1 -9
  17. data/lib/fog/aws/models/s3/directories.rb +1 -7
  18. data/lib/fog/aws/models/s3/file.rb +5 -0
  19. data/lib/fog/aws/requests/ec2/allocate_address.rb +2 -0
  20. data/lib/fog/aws/requests/ec2/attach_volume.rb +2 -0
  21. data/lib/fog/aws/requests/ec2/create_key_pair.rb +2 -0
  22. data/lib/fog/aws/requests/ec2/create_snapshot.rb +2 -0
  23. data/lib/fog/aws/requests/ec2/create_volume.rb +2 -0
  24. data/lib/fog/aws/requests/ec2/describe_addresses.rb +2 -0
  25. data/lib/fog/aws/requests/ec2/describe_availability_zones.rb +2 -0
  26. data/lib/fog/aws/requests/ec2/describe_images.rb +2 -0
  27. data/lib/fog/aws/requests/ec2/describe_instances.rb +2 -0
  28. data/lib/fog/aws/requests/ec2/describe_key_pairs.rb +2 -0
  29. data/lib/fog/aws/requests/ec2/describe_regions.rb +2 -0
  30. data/lib/fog/aws/requests/ec2/describe_reserved_instances.rb +2 -0
  31. data/lib/fog/aws/requests/ec2/describe_security_groups.rb +2 -0
  32. data/lib/fog/aws/requests/ec2/describe_snapshots.rb +2 -0
  33. data/lib/fog/aws/requests/ec2/describe_volumes.rb +2 -0
  34. data/lib/fog/aws/requests/ec2/detach_volume.rb +2 -0
  35. data/lib/fog/aws/requests/ec2/get_console_output.rb +2 -0
  36. data/lib/fog/aws/requests/ec2/run_instances.rb +2 -0
  37. data/lib/fog/aws/requests/ec2/terminate_instances.rb +2 -0
  38. data/lib/fog/aws/requests/elb/create_load_balancer.rb +2 -0
  39. data/lib/fog/aws/requests/elb/delete_load_balancer.rb +2 -0
  40. data/lib/fog/aws/requests/elb/deregister_instances_from_load_balancer.rb +2 -0
  41. data/lib/fog/aws/requests/elb/describe_instance_health.rb +2 -0
  42. data/lib/fog/aws/requests/elb/describe_load_balancers.rb +2 -0
  43. data/lib/fog/aws/requests/elb/disable_availability_zones_for_load_balancer.rb +2 -0
  44. data/lib/fog/aws/requests/elb/enable_availability_zones_for_load_balancer.rb +2 -0
  45. data/lib/fog/aws/requests/elb/register_instances_with_load_balancer.rb +2 -0
  46. data/lib/fog/aws/requests/s3/copy_object.rb +2 -0
  47. data/lib/fog/aws/requests/s3/get_bucket.rb +2 -0
  48. data/lib/fog/aws/requests/s3/get_bucket_acl.rb +2 -0
  49. data/lib/fog/aws/requests/s3/get_bucket_location.rb +2 -0
  50. data/lib/fog/aws/requests/s3/get_bucket_logging.rb +2 -0
  51. data/lib/fog/aws/requests/s3/get_bucket_object_versions.rb +2 -0
  52. data/lib/fog/aws/requests/s3/get_bucket_versioning.rb +2 -0
  53. data/lib/fog/aws/requests/s3/get_object_acl.rb +2 -0
  54. data/lib/fog/aws/requests/s3/get_request_payment.rb +2 -0
  55. data/lib/fog/aws/requests/s3/get_service.rb +2 -0
  56. data/lib/fog/aws/requests/s3/put_object.rb +2 -2
  57. data/lib/fog/aws/requests/simpledb/domain_metadata.rb +2 -0
  58. data/lib/fog/aws/requests/simpledb/get_attributes.rb +2 -0
  59. data/lib/fog/aws/requests/simpledb/list_domains.rb +2 -0
  60. data/lib/fog/aws/requests/simpledb/select.rb +2 -0
  61. data/lib/fog/aws/s3.rb +68 -85
  62. data/lib/fog/aws/simpledb.rb +15 -29
  63. data/lib/fog/bluebox.rb +23 -40
  64. data/lib/fog/bluebox/models/flavors.rb +1 -7
  65. data/lib/fog/bluebox/models/images.rb +1 -9
  66. data/lib/fog/bluebox/models/servers.rb +1 -7
  67. data/lib/fog/credentials.rb +2 -0
  68. data/lib/fog/errors.rb +20 -0
  69. data/lib/fog/hmac.rb +48 -0
  70. data/lib/fog/local.rb +9 -22
  71. data/lib/fog/local/models/directories.rb +1 -7
  72. data/lib/fog/rackspace.rb +2 -6
  73. data/lib/fog/rackspace/files.rb +46 -48
  74. data/lib/fog/rackspace/models/files/directories.rb +1 -7
  75. data/lib/fog/rackspace/models/servers/flavors.rb +1 -7
  76. data/lib/fog/rackspace/models/servers/images.rb +1 -9
  77. data/lib/fog/rackspace/models/servers/server.rb +37 -1
  78. data/lib/fog/rackspace/models/servers/servers.rb +8 -7
  79. data/lib/fog/rackspace/requests/files/put_object.rb +1 -1
  80. data/lib/fog/rackspace/servers.rb +33 -45
  81. data/lib/fog/service.rb +82 -0
  82. data/lib/fog/slicehost.rb +28 -42
  83. data/lib/fog/slicehost/models/flavors.rb +1 -7
  84. data/lib/fog/slicehost/models/images.rb +1 -9
  85. data/lib/fog/slicehost/models/servers.rb +1 -7
  86. data/lib/fog/ssh.rb +1 -1
  87. data/lib/fog/vcloud.rb +20 -3
  88. data/lib/fog/vcloud/collection.rb +25 -5
  89. data/lib/fog/vcloud/model.rb +4 -0
  90. data/lib/fog/vcloud/parsers/get_organization.rb +2 -2
  91. data/lib/fog/vcloud/parsers/get_vdc.rb +2 -2
  92. data/lib/fog/vcloud/parsers/get_versions.rb +1 -1
  93. data/lib/fog/vcloud/parsers/login.rb +2 -2
  94. data/lib/fog/vcloud/parsers/network.rb +53 -0
  95. data/lib/fog/vcloud/requests/get_network.rb +54 -0
  96. data/lib/fog/vcloud/requests/get_organization.rb +1 -2
  97. data/lib/fog/vcloud/terremark/ecloud.rb +17 -4
  98. data/lib/fog/vcloud/terremark/ecloud/models/internet_service.rb +35 -0
  99. data/lib/fog/vcloud/terremark/ecloud/models/internet_services.rb +9 -9
  100. data/lib/fog/vcloud/terremark/ecloud/models/ip.rb +18 -0
  101. data/lib/fog/vcloud/terremark/ecloud/models/ips.rb +36 -0
  102. data/lib/fog/vcloud/terremark/ecloud/models/network.rb +32 -0
  103. data/lib/fog/vcloud/terremark/ecloud/models/networks.rb +38 -0
  104. data/lib/fog/vcloud/terremark/ecloud/models/public_ip.rb +3 -1
  105. data/lib/fog/vcloud/terremark/ecloud/models/public_ips.rb +1 -1
  106. data/lib/fog/vcloud/terremark/ecloud/models/vdc.rb +9 -0
  107. data/lib/fog/vcloud/terremark/ecloud/models/vdcs.rb +2 -0
  108. data/lib/fog/vcloud/terremark/ecloud/parsers/network.rb +28 -0
  109. data/lib/fog/vcloud/terremark/ecloud/parsers/network_ips.rb +31 -0
  110. data/lib/fog/vcloud/terremark/ecloud/requests/add_internet_service.rb +10 -7
  111. data/lib/fog/vcloud/terremark/ecloud/requests/configure_internet_service.rb +99 -0
  112. data/lib/fog/vcloud/terremark/ecloud/requests/get_network.rb +54 -0
  113. data/lib/fog/vcloud/terremark/ecloud/requests/get_network_ips.rb +51 -0
  114. data/spec/aws/models/s3/file_spec.rb +15 -0
  115. data/spec/vcloud/requests/get_network_spec.rb +55 -0
  116. data/spec/vcloud/spec_helper.rb +1 -0
  117. data/spec/vcloud/terremark/ecloud/models/internet_service_spec.rb +15 -0
  118. data/spec/vcloud/terremark/ecloud/models/ip_spec.rb +35 -0
  119. data/spec/vcloud/terremark/ecloud/models/ips_spec.rb +28 -0
  120. data/spec/vcloud/terremark/ecloud/models/network_spec.rb +65 -0
  121. data/spec/vcloud/terremark/ecloud/models/networks_spec.rb +26 -0
  122. data/spec/vcloud/terremark/ecloud/models/public_ip_spec.rb +0 -2
  123. data/spec/vcloud/terremark/ecloud/requests/configure_internet_service_spec.rb +44 -0
  124. data/spec/vcloud/terremark/ecloud/requests/get_network_ips_spec.rb +54 -0
  125. data/spec/vcloud/terremark/ecloud/requests/get_network_spec.rb +63 -0
  126. data/tests/aws/requests/ec2/volume_tests.rb +2 -2
  127. data/tests/helper.rb +2 -0
  128. metadata +25 -3
@@ -1,47 +1,29 @@
1
1
  module Fog
2
2
  module Bluebox
3
+ extend Fog::Service
3
4
 
4
- class Error < Fog::Errors::Error; end
5
- class NotFound < Fog::Errors::NotFound; end
5
+ requires :bluebox_api_key, :bluebox_customer_id
6
6
 
7
- def self.new(options={})
7
+ model_path 'fog/bluebox/models'
8
+ model 'flavor'
9
+ model 'flavors'
10
+ model 'images'
11
+ model 'server'
12
+ model 'servers'
8
13
 
9
- unless @required
10
- require 'fog/bluebox/models/flavor'
11
- require 'fog/bluebox/models/flavors'
12
- require 'fog/bluebox/models/images'
13
- require 'fog/bluebox/models/server'
14
- require 'fog/bluebox/models/servers'
15
- require 'fog/bluebox/requests/create_block'
16
- require 'fog/bluebox/requests/destroy_block'
17
- require 'fog/bluebox/requests/get_block'
18
- require 'fog/bluebox/requests/get_blocks'
19
- require 'fog/bluebox/requests/get_product'
20
- require 'fog/bluebox/requests/get_products'
21
- require 'fog/bluebox/requests/get_template'
22
- require 'fog/bluebox/requests/get_templates'
23
- require 'fog/bluebox/requests/reboot_block'
24
- @required = true
25
- end
26
-
27
- unless options[:bluebox_api_key]
28
- raise ArgumentError.new('bluebox_api_key is required to access Blue Box')
29
- end
30
- unless options[:bluebox_customer_id]
31
- raise ArgumentError.new('bluebox_customer_id is required to access Blue Box')
32
- end
33
- if Fog.mocking?
34
- Fog::Bluebox::Mock.new(options)
35
- else
36
- Fog::Bluebox::Real.new(options)
37
- end
38
- end
39
-
40
- def self.reset_data(keys=Mock.data.keys)
41
- Mock.reset_data(keys)
42
- end
14
+ request_path 'fog/bluebox/requests'
15
+ request 'create_block'
16
+ request 'destroy_block'
17
+ request 'get_block'
18
+ request 'get_blocks'
19
+ request 'get_product'
20
+ request 'get_products'
21
+ request 'get_template'
22
+ request 'get_templates'
23
+ request 'reboot_block'
43
24
 
44
25
  class Mock
26
+ include Collections
45
27
 
46
28
  def self.data
47
29
  @data ||= Hash.new do |hash, key|
@@ -63,6 +45,7 @@ module Fog
63
45
  end
64
46
 
65
47
  class Real
48
+ include Collections
66
49
 
67
50
  def initialize(options={})
68
51
  @bluebox_api_key = options[:bluebox_api_key]
@@ -82,11 +65,11 @@ module Fog
82
65
  begin
83
66
  response = @connection.request(params.merge!({:host => @host}))
84
67
  rescue Excon::Errors::Error => error
85
- case error
68
+ raise case error
86
69
  when Excon::Errors::NotFound
87
- raise Fog::Bluebox::NotFound
70
+ Fog::Bluebox::NotFound.slurp(error)
88
71
  else
89
- raise error
72
+ error
90
73
  end
91
74
  end
92
75
  unless response.body.empty?
@@ -4,13 +4,7 @@ require 'fog/bluebox/models/flavor'
4
4
  module Fog
5
5
  module Bluebox
6
6
 
7
- class Mock
8
- def flavors
9
- Fog::Bluebox::Flavors.new(:connection => self)
10
- end
11
- end
12
-
13
- class Real
7
+ module Collections
14
8
  def flavors
15
9
  Fog::Bluebox::Flavors.new(:connection => self)
16
10
  end
@@ -4,15 +4,7 @@ require 'fog/bluebox/models/image'
4
4
  module Fog
5
5
  module Bluebox
6
6
 
7
- class Mock
8
- def images(attributes = {})
9
- Fog::Bluebox::Images.new({
10
- :connection => self
11
- }.merge!(attributes))
12
- end
13
- end
14
-
15
- class Real
7
+ module Collections
16
8
  def images(attributes = {})
17
9
  Fog::Bluebox::Images.new({
18
10
  :connection => self
@@ -4,13 +4,7 @@ require 'fog/bluebox/models/server'
4
4
  module Fog
5
5
  module Bluebox
6
6
 
7
- class Mock
8
- def servers
9
- Fog::Bluebox::Servers.new(:connection => self)
10
- end
11
- end
12
-
13
- class Real
7
+ module Collections
14
8
  def servers
15
9
  Fog::Bluebox::Servers.new(:connection => self)
16
10
  end
@@ -34,6 +34,8 @@ module Fog
34
34
  :bluebox_api_key: INTENTIONALLY_LEFT_BLANK
35
35
  :bluebox_customer_id: INTENTIONALLY_LEFT_BLANK
36
36
  :local_root: INTENTIONALLY_LEFT_BLANK
37
+ :public_key_path: INTENTIONALLY_LEFT_BLANK
38
+ :private_key_path: INTENTIONALLY_LEFT_BLANK
37
39
  :rackspace_api_key: INTENTIONALLY_LEFT_BLANK
38
40
  :rackspace_username: INTENTIONALLY_LEFT_BLANK
39
41
  :slicehost_password: INTENTIONALLY_LEFT_BLANK
@@ -0,0 +1,20 @@
1
+ module Fog
2
+ module Errors
3
+
4
+ class Error < StandardError
5
+ attr_accessor :verbose
6
+
7
+ def self.slurp(error, message = nil)
8
+ new_error = new(message)
9
+ new_error.set_backtrace(error.backtrace)
10
+ new_error.verbose = error.message
11
+ new_error
12
+ end
13
+ end
14
+
15
+ class MockNotImplemented < Fog::Errors::Error; end
16
+
17
+ class NotFound < Fog::Errors::Error; end
18
+
19
+ end
20
+ end
@@ -0,0 +1,48 @@
1
+ module Fog
2
+ class HMAC
3
+
4
+ def initialize(type, key)
5
+ @key = key
6
+ case type
7
+ when 'sha1'
8
+ setup_sha1
9
+ when 'sha256'
10
+ setup_sha256
11
+ end
12
+ end
13
+
14
+ def sign(data)
15
+ @signer.call(data)
16
+ end
17
+
18
+ private
19
+
20
+ def setup_sha1
21
+ @digest = OpenSSL::Digest::Digest.new('sha1')
22
+ @signer = lambda do |data|
23
+ OpenSSL::HMAC.digest(@digest, @key, data)
24
+ end
25
+ end
26
+
27
+ def setup_sha256
28
+ begin
29
+ @digest = OpenSSL::Digest::Digest.new('sha256')
30
+ @signer = lambda do |data|
31
+ OpenSSL::HMAC.digest(@digest, @key, data)
32
+ end
33
+ rescue RuntimeError => error
34
+ unless error.message == 'Unsupported digest algorithm (sha256).'
35
+ raise error
36
+ else
37
+ require 'hmac-sha2'
38
+ @hmac = ::HMAC::SHA256.new(@key)
39
+ @signer = lambda do |data|
40
+ @hmac.update(data)
41
+ @hmac.digest
42
+ end
43
+ end
44
+ end
45
+ end
46
+
47
+ end
48
+ end
@@ -1,31 +1,17 @@
1
1
  module Fog
2
2
  module Local
3
+ extend Fog::Service
3
4
 
4
- def self.new(options={})
5
+ requires :local_root
5
6
 
6
- unless @required
7
- require 'fog/local/models/directories'
8
- require 'fog/local/models/directory'
9
- require 'fog/local/models/file'
10
- require 'fog/local/models/files'
11
- @required = true
12
- end
13
-
14
- unless options[:local_root]
15
- raise ArgumentError.new('local_root is required to access local')
16
- end
17
- if Fog.mocking?
18
- Fog::Local::Mock.new(options)
19
- else
20
- Fog::Local::Real.new(options)
21
- end
22
- end
23
-
24
- def self.reset_data(keys=Mock.data.keys)
25
- Mock.reset_data(keys)
26
- end
7
+ model_path 'fog/local/models'
8
+ model 'directories'
9
+ model 'directory'
10
+ model 'file'
11
+ model 'files'
27
12
 
28
13
  class Mock
14
+ include Collections
29
15
 
30
16
  def self.data
31
17
  @data ||= Hash.new do |hash, key|
@@ -54,6 +40,7 @@ module Fog
54
40
  end
55
41
 
56
42
  class Real
43
+ include Collections
57
44
 
58
45
  def initialize(options={})
59
46
  @local_root = ::File.expand_path(options[:local_root])
@@ -4,13 +4,7 @@ require 'fog/local/models/directory'
4
4
  module Fog
5
5
  module Local
6
6
 
7
- class Real
8
- def directories
9
- Fog::Local::Directories.new(:connection => self)
10
- end
11
- end
12
-
13
- class Mock
7
+ module Collections
14
8
  def directories
15
9
  Fog::Local::Directories.new(:connection => self)
16
10
  end
@@ -5,13 +5,9 @@ module Fog
5
5
  module Rackspace
6
6
 
7
7
  def self.authenticate(options)
8
- unless @rackspace_api_key = options[:rackspace_api_key]
9
- raise ArgumentError.new('rackspace_api_key is required to access rackspace')
10
- end
11
- unless @rackspace_username = options[:rackspace_username]
12
- raise ArgumentError.new('rackspace_username is required to access rackspace')
13
- end
14
8
  connection = Fog::Connection.new("https://auth.api.rackspacecloud.com")
9
+ @rackspace_api_key = options[:rackspace_api_key]
10
+ @rackspace_username = options[:rackspace_username]
15
11
  response = connection.request({
16
12
  :expects => 204,
17
13
  :headers => {
@@ -1,60 +1,56 @@
1
1
  module Fog
2
2
  module Rackspace
3
3
  module Files
4
-
5
- def self.new(options={})
6
-
7
- unless @required
8
- require 'fog/rackspace/models/files/directory'
9
- require 'fog/rackspace/models/files/directories'
10
- require 'fog/rackspace/models/files/file'
11
- require 'fog/rackspace/models/files/files'
12
- require 'fog/rackspace/requests/files/delete_container'
13
- require 'fog/rackspace/requests/files/delete_object'
14
- require 'fog/rackspace/requests/files/get_container'
15
- require 'fog/rackspace/requests/files/get_containers'
16
- require 'fog/rackspace/requests/files/get_object'
17
- require 'fog/rackspace/requests/files/head_container'
18
- require 'fog/rackspace/requests/files/head_containers'
19
- require 'fog/rackspace/requests/files/head_object'
20
- require 'fog/rackspace/requests/files/put_container'
21
- require 'fog/rackspace/requests/files/put_object'
22
- @required = true
23
- end
24
-
25
- if Fog.mocking?
26
- Fog::Rackspace::Files::Mock.new(options)
27
- else
28
- Fog::Rackspace::Files::Real.new(options)
29
- end
30
- end
31
-
32
- def self.parse_data(data)
33
- metadata = {
34
- :body => nil,
35
- :headers => {}
36
- }
37
-
38
- if data.is_a?(String)
39
- metadata[:body] = data
40
- metadata[:headers]['Content-Length'] = metadata[:body].size.to_s
41
- else
42
- filename = ::File.basename(data.path)
43
- unless (mime_types = MIME::Types.of(filename)).empty?
44
- metadata[:headers]['Content-Type'] = mime_types.first.content_type
4
+ extend Fog::Service
5
+
6
+ requires :rackspace_api_key, :rackspace_username
7
+
8
+ model_path 'fog/rackspace/models/files'
9
+ model 'directory'
10
+ model 'directories'
11
+ model 'file'
12
+ model 'files'
13
+
14
+ request_path 'fog/rackspace/requests/files'
15
+ request 'delete_container'
16
+ request 'delete_object'
17
+ request 'get_container'
18
+ request 'get_containers'
19
+ request 'get_object'
20
+ request 'head_container'
21
+ request 'head_containers'
22
+ request 'head_object'
23
+ request 'put_container'
24
+ request 'put_object'
25
+
26
+ module Utils
27
+
28
+ def parse_data(data)
29
+ metadata = {
30
+ :body => nil,
31
+ :headers => {}
32
+ }
33
+
34
+ if data.is_a?(String)
35
+ metadata[:body] = data
36
+ metadata[:headers]['Content-Length'] = metadata[:body].size.to_s
37
+ else
38
+ filename = ::File.basename(data.path)
39
+ unless (mime_types = MIME::Types.of(filename)).empty?
40
+ metadata[:headers]['Content-Type'] = mime_types.first.content_type
41
+ end
42
+ metadata[:body] = data.read
43
+ metadata[:headers]['Content-Length'] = ::File.size(data.path).to_s
45
44
  end
46
- metadata[:body] = data.read
47
- metadata[:headers]['Content-Length'] = ::File.size(data.path).to_s
45
+ # metadata[:headers]['Content-MD5'] = Base64.encode64(Digest::MD5.digest(metadata[:body])).strip
46
+ metadata
48
47
  end
49
- # metadata[:headers]['Content-MD5'] = Base64.encode64(Digest::MD5.digest(metadata[:body])).strip
50
- metadata
51
- end
52
48
 
53
- def self.reset_data(keys=Mock.data.keys)
54
- Mock.reset_data(keys)
55
49
  end
56
50
 
57
51
  class Mock
52
+ include Collections
53
+ include Utils
58
54
 
59
55
  def self.data
60
56
  @data ||= Hash.new do |hash, key|
@@ -76,6 +72,8 @@ module Fog
76
72
  end
77
73
 
78
74
  class Real
75
+ include Collections
76
+ include Utils
79
77
 
80
78
  def initialize(options={})
81
79
  credentials = Fog::Rackspace.authenticate(options)
@@ -5,13 +5,7 @@ module Fog
5
5
  module Rackspace
6
6
  module Files
7
7
 
8
- class Real
9
- def directories
10
- Fog::Rackspace::Files::Directories.new(:connection => self)
11
- end
12
- end
13
-
14
- class Mock
8
+ module Collections
15
9
  def directories
16
10
  Fog::Rackspace::Files::Directories.new(:connection => self)
17
11
  end
@@ -5,13 +5,7 @@ module Fog
5
5
  module Rackspace
6
6
  module Servers
7
7
 
8
- class Real
9
- def flavors
10
- Fog::Rackspace::Servers::Flavors.new(:connection => self)
11
- end
12
- end
13
-
14
- class Mock
8
+ module Collections
15
9
  def flavors
16
10
  Fog::Rackspace::Servers::Flavors.new(:connection => self)
17
11
  end
@@ -5,15 +5,7 @@ module Fog
5
5
  module Rackspace
6
6
  module Servers
7
7
 
8
- class Real
9
- def images(attributes = {})
10
- Fog::Rackspace::Servers::Images.new({
11
- :connection => self
12
- }.merge!(attributes))
13
- end
14
- end
15
-
16
- class Mock
8
+ module Collections
17
9
  def images(attributes = {})
18
10
  Fog::Rackspace::Servers::Images.new({
19
11
  :connection => self