fog 0.3.7 → 0.3.8

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 (201) hide show
  1. data/Gemfile.lock +6 -6
  2. data/README.rdoc +7 -1
  3. data/bin/fog +4 -3
  4. data/fog.gemspec +39 -24
  5. data/lib/fog.rb +4 -12
  6. data/lib/fog/aws.rb +14 -5
  7. data/lib/fog/aws/compute.rb +26 -9
  8. data/lib/fog/aws/elb.rb +3 -2
  9. data/lib/fog/aws/models/compute/address.rb +2 -1
  10. data/lib/fog/aws/models/compute/addresses.rb +11 -9
  11. data/lib/fog/aws/models/compute/flavor.rb +1 -1
  12. data/lib/fog/aws/models/compute/flavors.rb +13 -11
  13. data/lib/fog/aws/models/compute/image.rb +2 -1
  14. data/lib/fog/aws/models/compute/images.rb +7 -9
  15. data/lib/fog/aws/models/compute/key_pair.rb +1 -1
  16. data/lib/fog/aws/models/compute/key_pairs.rb +10 -8
  17. data/lib/fog/aws/models/compute/security_group.rb +1 -1
  18. data/lib/fog/aws/models/compute/security_groups.rb +11 -9
  19. data/lib/fog/aws/models/compute/server.rb +10 -3
  20. data/lib/fog/aws/models/compute/servers.rb +14 -8
  21. data/lib/fog/aws/models/compute/snapshot.rb +3 -2
  22. data/lib/fog/aws/models/compute/snapshots.rb +11 -16
  23. data/lib/fog/aws/models/compute/tag.rb +36 -0
  24. data/lib/fog/aws/models/compute/tags.rb +34 -0
  25. data/lib/fog/aws/models/compute/volume.rb +11 -10
  26. data/lib/fog/aws/models/compute/volumes.rb +11 -9
  27. data/lib/fog/aws/models/storage/directories.rb +1 -1
  28. data/lib/fog/aws/models/storage/directory.rb +1 -1
  29. data/lib/fog/aws/models/storage/file.rb +3 -2
  30. data/lib/fog/aws/models/storage/files.rb +1 -7
  31. data/lib/fog/aws/parsers/compute/describe_availability_zones.rb +4 -2
  32. data/lib/fog/aws/parsers/compute/describe_images.rb +23 -13
  33. data/lib/fog/aws/parsers/compute/describe_instances.rb +34 -8
  34. data/lib/fog/aws/parsers/compute/describe_security_groups.rb +4 -3
  35. data/lib/fog/aws/parsers/compute/describe_snapshots.rb +33 -13
  36. data/lib/fog/aws/parsers/compute/describe_tags.rb +30 -0
  37. data/lib/fog/aws/parsers/compute/describe_volumes.rb +17 -3
  38. data/lib/fog/aws/parsers/compute/run_instances.rb +4 -4
  39. data/lib/fog/aws/parsers/storage/get_bucket.rb +1 -1
  40. data/lib/fog/aws/parsers/storage/get_bucket_logging.rb +1 -1
  41. data/lib/fog/aws/parsers/storage/get_bucket_object_versions.rb +3 -3
  42. data/lib/fog/aws/requests/compute/create_snapshot.rb +1 -0
  43. data/lib/fog/aws/requests/compute/create_tags.rb +78 -0
  44. data/lib/fog/aws/requests/compute/delete_tags.rb +45 -0
  45. data/lib/fog/aws/requests/compute/describe_addresses.rb +27 -19
  46. data/lib/fog/aws/requests/compute/describe_availability_zones.rb +31 -25
  47. data/lib/fog/aws/requests/compute/describe_images.rb +11 -18
  48. data/lib/fog/aws/requests/compute/describe_instances.rb +125 -53
  49. data/lib/fog/aws/requests/compute/describe_key_pairs.rb +29 -21
  50. data/lib/fog/aws/requests/compute/describe_regions.rb +28 -23
  51. data/lib/fog/aws/requests/compute/describe_reserved_instances.rb +8 -4
  52. data/lib/fog/aws/requests/compute/describe_security_groups.rb +48 -19
  53. data/lib/fog/aws/requests/compute/describe_snapshots.rb +72 -35
  54. data/lib/fog/aws/requests/compute/describe_tags.rb +42 -0
  55. data/lib/fog/aws/requests/compute/describe_volumes.rb +67 -36
  56. data/lib/fog/aws/requests/compute/run_instances.rb +10 -3
  57. data/lib/fog/aws/simpledb.rb +3 -1
  58. data/lib/fog/aws/storage.rb +17 -8
  59. data/lib/fog/bluebox/models/compute/flavor.rb +1 -1
  60. data/lib/fog/bluebox/models/compute/flavors.rb +1 -1
  61. data/lib/fog/bluebox/models/compute/image.rb +1 -1
  62. data/lib/fog/bluebox/models/compute/images.rb +1 -1
  63. data/lib/fog/bluebox/models/compute/server.rb +8 -6
  64. data/lib/fog/bluebox/models/compute/servers.rb +1 -1
  65. data/lib/fog/bluebox/requests/compute/get_blocks.rb +1 -1
  66. data/lib/fog/core.rb +11 -0
  67. data/lib/fog/{attributes.rb → core/attributes.rb} +0 -0
  68. data/lib/fog/{bin.rb → core/bin.rb} +1 -1
  69. data/lib/fog/{collection.rb → core/collection.rb} +4 -0
  70. data/lib/fog/{connection.rb → core/connection.rb} +0 -0
  71. data/lib/fog/{credentials.rb → core/credentials.rb} +2 -0
  72. data/lib/fog/{deprecation.rb → core/deprecation.rb} +0 -0
  73. data/lib/fog/{errors.rb → core/errors.rb} +0 -0
  74. data/lib/fog/{hmac.rb → core/hmac.rb} +0 -0
  75. data/lib/fog/{model.rb → core/model.rb} +0 -0
  76. data/lib/fog/{parser.rb → core/parser.rb} +0 -0
  77. data/lib/fog/{provider.rb → core/provider.rb} +0 -0
  78. data/lib/fog/{service.rb → core/service.rb} +1 -0
  79. data/lib/fog/{ssh.rb → core/ssh.rb} +7 -7
  80. data/lib/fog/go_grid.rb +1 -1
  81. data/lib/fog/go_grid/compute.rb +6 -1
  82. data/lib/fog/go_grid/models/compute/image.rb +60 -0
  83. data/lib/fog/go_grid/models/compute/images.rb +33 -0
  84. data/lib/fog/go_grid/models/compute/server.rb +56 -0
  85. data/lib/fog/go_grid/models/compute/servers.rb +35 -0
  86. data/lib/fog/go_grid/requests/compute/grid_image_get.rb +41 -0
  87. data/lib/fog/go_grid/requests/compute/grid_image_list.rb +6 -1
  88. data/lib/fog/go_grid/requests/compute/grid_server_power.rb +2 -2
  89. data/lib/fog/google/models/storage/directories.rb +1 -1
  90. data/lib/fog/google/models/storage/directory.rb +1 -1
  91. data/lib/fog/google/models/storage/file.rb +3 -2
  92. data/lib/fog/google/models/storage/files.rb +1 -7
  93. data/lib/fog/google/parsers/storage/get_bucket.rb +1 -1
  94. data/lib/fog/linode/requests/compute/avail_linodeplans.rb +2 -2
  95. data/lib/fog/local/models/storage/directories.rb +1 -1
  96. data/lib/fog/local/models/storage/directory.rb +1 -1
  97. data/lib/fog/local/models/storage/file.rb +2 -2
  98. data/lib/fog/local/models/storage/files.rb +2 -5
  99. data/lib/fog/local/storage.rb +1 -1
  100. data/lib/fog/new_servers/compute.rb +1 -1
  101. data/lib/fog/rackspace/models/compute/flavor.rb +1 -3
  102. data/lib/fog/rackspace/models/compute/flavors.rb +1 -1
  103. data/lib/fog/rackspace/models/compute/image.rb +2 -1
  104. data/lib/fog/rackspace/models/compute/images.rb +1 -1
  105. data/lib/fog/rackspace/models/compute/server.rb +12 -11
  106. data/lib/fog/rackspace/models/compute/servers.rb +1 -1
  107. data/lib/fog/rackspace/models/storage/directories.rb +1 -1
  108. data/lib/fog/rackspace/models/storage/directory.rb +1 -1
  109. data/lib/fog/rackspace/models/storage/file.rb +4 -4
  110. data/lib/fog/rackspace/models/storage/files.rb +1 -1
  111. data/lib/fog/rackspace/requests/compute/create_image.rb +2 -2
  112. data/lib/fog/rackspace/requests/compute/delete_image.rb +1 -1
  113. data/lib/fog/rackspace/requests/compute/delete_server.rb +1 -1
  114. data/lib/fog/rackspace/requests/compute/get_server_details.rb +1 -1
  115. data/lib/fog/rackspace/requests/compute/list_addresses.rb +1 -1
  116. data/lib/fog/rackspace/requests/compute/list_images_detail.rb +2 -2
  117. data/lib/fog/rackspace/requests/compute/list_private_addresses.rb +1 -1
  118. data/lib/fog/rackspace/requests/compute/list_public_addresses.rb +1 -1
  119. data/lib/fog/rackspace/requests/compute/update_server.rb +1 -1
  120. data/lib/fog/rackspace/requests/storage/put_object.rb +4 -3
  121. data/lib/fog/slicehost/models/compute/flavor.rb +1 -1
  122. data/lib/fog/slicehost/models/compute/flavors.rb +1 -1
  123. data/lib/fog/slicehost/models/compute/image.rb +1 -1
  124. data/lib/fog/slicehost/models/compute/images.rb +1 -1
  125. data/lib/fog/slicehost/models/compute/server.rb +3 -1
  126. data/lib/fog/slicehost/models/compute/servers.rb +1 -1
  127. data/lib/fog/terremark/ecloud.rb +34 -33
  128. data/lib/fog/terremark/models/shared/address.rb +1 -1
  129. data/lib/fog/terremark/models/shared/network.rb +1 -1
  130. data/lib/fog/terremark/models/shared/server.rb +1 -1
  131. data/lib/fog/terremark/models/shared/servers.rb +1 -1
  132. data/lib/fog/terremark/models/shared/task.rb +1 -1
  133. data/lib/fog/terremark/models/shared/tasks.rb +1 -1
  134. data/lib/fog/terremark/models/shared/vdc.rb +1 -1
  135. data/lib/fog/terremark/parser.rb +1 -0
  136. data/lib/fog/terremark/vcloud.rb +4 -4
  137. data/lib/fog/vcloud.rb +15 -7
  138. data/lib/fog/vcloud/terremark/ecloud.rb +15 -3
  139. data/lib/fog/vcloud/terremark/ecloud/models/firewall_acls.rb +1 -1
  140. data/lib/fog/vcloud/terremark/ecloud/models/internet_services.rb +1 -1
  141. data/lib/fog/vcloud/terremark/ecloud/models/ips.rb +1 -1
  142. data/lib/fog/vcloud/terremark/ecloud/models/networks.rb +1 -1
  143. data/lib/fog/vcloud/terremark/ecloud/models/nodes.rb +1 -1
  144. data/lib/fog/vcloud/terremark/ecloud/models/public_ips.rb +1 -1
  145. data/lib/fog/vcloud/terremark/ecloud/models/servers.rb +1 -1
  146. data/lib/fog/vcloud/terremark/ecloud/models/tasks.rb +1 -1
  147. data/lib/fog/vcloud/terremark/ecloud/models/vdcs.rb +1 -1
  148. data/lib/fog/vcloud/terremark/ecloud/requests/add_internet_service.rb +55 -49
  149. data/lib/fog/vcloud/terremark/ecloud/requests/add_node.rb +19 -15
  150. data/lib/fog/vcloud/terremark/ecloud/requests/configure_internet_service.rb +8 -1
  151. data/lib/fog/vcloud/terremark/ecloud/requests/configure_node.rb +17 -12
  152. data/lib/fog/vcloud/terremark/ecloud/requests/get_catalog.rb +29 -1
  153. data/lib/fog/vcloud/terremark/ecloud/requests/get_catalog_item.rb +38 -2
  154. data/lib/fog/vcloud/terremark/ecloud/requests/get_customization_options.rb +8 -2
  155. data/lib/fog/vcloud/terremark/ecloud/requests/instantiate_vapp_template.rb +46 -4
  156. data/spec/aws/models/compute/server_spec.rb +2 -0
  157. data/spec/aws/requests/simpledb/select_spec.rb +1 -0
  158. data/spec/spec_helper.rb +1 -1
  159. data/spec/vcloud/spec_helper.rb +1 -1
  160. data/spec/vcloud/terremark/ecloud/requests/get_catalog_item_spec.rb +62 -0
  161. data/spec/vcloud/terremark/ecloud/requests/get_catalog_spec.rb +44 -0
  162. data/spec/vcloud/terremark/ecloud/requests/get_customization_options_spec.rb +39 -0
  163. data/spec/vcloud/terremark/ecloud/requests/instantiate_vapp_template_spec.rb +73 -0
  164. data/tests/aws/requests/compute/address_tests.rb +2 -6
  165. data/tests/aws/requests/compute/availability_zone_tests.rb +3 -10
  166. data/tests/aws/requests/compute/image_tests.rb +4 -9
  167. data/tests/aws/requests/compute/instance_tests.rb +7 -8
  168. data/tests/aws/requests/compute/key_pair_tests.rb +2 -6
  169. data/tests/aws/requests/compute/region_tests.rb +2 -9
  170. data/tests/aws/requests/compute/security_group_tests.rb +3 -7
  171. data/tests/aws/requests/compute/snapshot_tests.rb +4 -7
  172. data/tests/aws/requests/compute/tag_tests.rb +49 -0
  173. data/tests/aws/requests/compute/volume_tests.rb +2 -6
  174. data/tests/aws/requests/storage/bucket_tests.rb +48 -0
  175. data/tests/aws/requests/storage/object_tests.rb +63 -0
  176. data/tests/bluebox/requests/compute/block_tests.rb +24 -11
  177. data/tests/bluebox/requests/compute/product_tests.rb +3 -0
  178. data/tests/bluebox/requests/compute/template_tests.rb +3 -0
  179. data/tests/go_grid/helper.rb +0 -0
  180. data/tests/go_grid/requests/compute/image_tests.rb +0 -0
  181. data/tests/helper.rb +5 -1
  182. data/tests/linode/requests/compute/datacenter_tests.rb +1 -0
  183. data/tests/linode/requests/compute/distribution_tests.rb +2 -0
  184. data/tests/linode/requests/compute/linode_tests.rb +6 -0
  185. data/tests/linode/requests/compute/linodeplans_tests.rb +2 -0
  186. data/tests/lorem.txt +1 -0
  187. data/tests/rackspace/requests/compute/flavor_tests.rb +4 -0
  188. data/tests/rackspace/requests/compute/image_tests.rb +12 -4
  189. data/tests/rackspace/requests/compute/server_tests.rb +9 -0
  190. data/tests/slicehost/requests/compute/backup_tests.rb +1 -0
  191. data/tests/slicehost/requests/compute/flavor_tests.rb +3 -0
  192. data/tests/slicehost/requests/compute/image_tests.rb +3 -0
  193. data/tests/slicehost/requests/compute/slice_tests.rb +14 -2
  194. metadata +42 -27
  195. data/spec/aws/requests/storage/delete_bucket_spec.rb +0 -35
  196. data/spec/aws/requests/storage/delete_object_spec.rb +0 -36
  197. data/spec/aws/requests/storage/get_object_spec.rb +0 -58
  198. data/spec/aws/requests/storage/get_service_spec.rb +0 -32
  199. data/spec/aws/requests/storage/head_object_spec.rb +0 -26
  200. data/spec/aws/requests/storage/put_bucket_spec.rb +0 -19
  201. data/spec/aws/requests/storage/put_object_spec.rb +0 -43
@@ -17,7 +17,6 @@ module Fog
17
17
  class Mock
18
18
 
19
19
  def initialize(options={})
20
- Fog::Mock.not_implemented
21
20
  end
22
21
 
23
22
  end
@@ -59,9 +58,10 @@ module Fog
59
58
  else
60
59
  raise ArgumentError, "Unknown region: #{options[:region].inspect}"
61
60
  end
61
+ @path = options[:path] || '/'
62
62
  @port = options[:port] || 443
63
63
  @scheme = options[:scheme] || 'https'
64
- @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}", options[:persistent])
64
+ @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}#{@path}", options[:persistent])
65
65
  end
66
66
 
67
67
  def reload
@@ -80,6 +80,7 @@ module Fog
80
80
  :aws_access_key_id => @aws_access_key_id,
81
81
  :hmac => @hmac,
82
82
  :host => @host,
83
+ :path => @path,
83
84
  :version => '2009-11-25'
84
85
  }
85
86
  )
@@ -1,4 +1,4 @@
1
- require 'fog/model'
1
+ require 'fog/core/model'
2
2
 
3
3
  module Fog
4
4
  module AWS
@@ -32,6 +32,7 @@ module Fog
32
32
  end
33
33
 
34
34
  def save
35
+ raise Fog::Errors::Error.new('Resaving an existing object may create a duplicate') if identity
35
36
  data = connection.allocate_address
36
37
  @public_ip = data.body['publicIp']
37
38
  if @server
@@ -1,4 +1,4 @@
1
- require 'fog/collection'
1
+ require 'fog/core/collection'
2
2
  require 'fog/aws/models/compute/address'
3
3
 
4
4
  module Fog
@@ -7,19 +7,23 @@ module Fog
7
7
 
8
8
  class Addresses < Fog::Collection
9
9
 
10
- attribute :public_ip
10
+ attribute :filters
11
11
  attribute :server
12
12
 
13
13
  model Fog::AWS::Compute::Address
14
14
 
15
15
  def initialize(attributes)
16
- @public_ip ||= []
16
+ @filters ||= {}
17
17
  super
18
18
  end
19
19
 
20
- def all(public_ip = @public_ip)
21
- @public_ip = public_ip
22
- data = connection.describe_addresses(public_ip).body
20
+ def all(filters = @filters)
21
+ unless filters.is_a?(Hash)
22
+ Formatador.display_line("[yellow][WARN] all with #{filters.class} param is deprecated, use all('public-ip' => []) instead[/] [light_black](#{caller.first})[/]")
23
+ filters = {'public-ip' => [*filters]}
24
+ end
25
+ @filters = filters
26
+ data = connection.describe_addresses(filters).body
23
27
  load(
24
28
  data['addressesSet'].map do |address|
25
29
  address.reject {|key, value| value.nil? || value.empty? }
@@ -33,10 +37,8 @@ module Fog
33
37
 
34
38
  def get(public_ip)
35
39
  if public_ip
36
- all(public_ip).first
40
+ self.class.new(:connection => connection).all('public-ip' => public_ip).first
37
41
  end
38
- rescue Fog::Errors::NotFound
39
- nil
40
42
  end
41
43
 
42
44
  def new(attributes = {})
@@ -1,4 +1,4 @@
1
- require 'fog/model'
1
+ require 'fog/core/model'
2
2
 
3
3
  module Fog
4
4
  module AWS
@@ -1,4 +1,4 @@
1
- require 'fog/collection'
1
+ require 'fog/core/collection'
2
2
  require 'fog/aws/models/compute/flavor'
3
3
 
4
4
  module Fog
@@ -11,25 +11,27 @@ module Fog
11
11
 
12
12
  def all
13
13
  data = [
14
- { :bits => 0, :cores => 2, :disk => 0, :id => 't1.micro', :name => 'Micro Instance', :ram => 613},
14
+ { :bits => 0, :cores => 2, :disk => 0, :id => 't1.micro', :name => 'Micro Instance', :ram => 613},
15
15
 
16
- { :bits => 32, :cores => 1, :disk => 160, :id => 'm1.small', :name => 'Small Instance', :ram => 1740.8},
17
- { :bits => 64, :cores => 4, :disk => 850, :id => 'm1.large', :name => 'Large Instance', :ram => 7680},
18
- { :bits => 64, :cores => 8, :disk => 1690, :id => 'm1.xlarge', :name => 'Extra Large Instance', :ram => 15360},
16
+ { :bits => 32, :cores => 1, :disk => 160, :id => 'm1.small', :name => 'Small Instance', :ram => 1740.8},
17
+ { :bits => 64, :cores => 4, :disk => 850, :id => 'm1.large', :name => 'Large Instance', :ram => 7680},
18
+ { :bits => 64, :cores => 8, :disk => 1690, :id => 'm1.xlarge', :name => 'Extra Large Instance', :ram => 15360},
19
19
 
20
- { :bits => 32, :cores => 5, :disk => 350, :id => 'c1.medium', :name => 'High-CPU Medium', :ram => 1740.8},
21
- { :bits => 64, :cores => 20, :disk => 1690, :id => 'c1.xlarge', :name => 'High-CPU Extra Large', :ram => 7168},
20
+ { :bits => 32, :cores => 5, :disk => 350, :id => 'c1.medium', :name => 'High-CPU Medium', :ram => 1740.8},
21
+ { :bits => 64, :cores => 20, :disk => 1690, :id => 'c1.xlarge', :name => 'High-CPU Extra Large', :ram => 7168},
22
22
 
23
- { :bits => 64, :cores => 6.5, :disk => 420, :id => 'm2.xlarge', :name => 'High-Memory Extra Large', :ram => 17510.4},
24
- { :bits => 64, :cores => 13, :disk => 850, :id => 'm2.2xlarge', :name => 'High Memory Double Extra Large', :ram => 35020.8},
25
- { :bits => 64, :cores => 26, :disk => 1690, :id => 'm2.4xlarge', :name => 'High Memory Quadruple Extra Large', :ram => 70041.6},
23
+ { :bits => 64, :cores => 6.5, :disk => 420, :id => 'm2.xlarge', :name => 'High-Memory Extra Large', :ram => 17510.4},
24
+ { :bits => 64, :cores => 13, :disk => 850, :id => 'm2.2xlarge', :name => 'High Memory Double Extra Large', :ram => 35020.8},
25
+ { :bits => 64, :cores => 26, :disk => 1690, :id => 'm2.4xlarge', :name => 'High Memory Quadruple Extra Large', :ram => 70041.6},
26
+
27
+ { :bits => 64, :cores => 33.5, :disk => 1690, :id => 'cc1.4xlarge', :name => 'Cluster Compute Quadruple Extra Large', :ram => 23552}
26
28
  ]
27
29
  load(data)
28
30
  self
29
31
  end
30
32
 
31
33
  def get(flavor_id)
32
- all.detect {|flavor| flavor.id == flavor_id}
34
+ self.class.new(:connection => connection).all.detect {|flavor| flavor.id == flavor_id}
33
35
  end
34
36
 
35
37
  end
@@ -1,4 +1,4 @@
1
- require 'fog/model'
1
+ require 'fog/core/model'
2
2
 
3
3
  module Fog
4
4
  module AWS
@@ -21,6 +21,7 @@ module Fog
21
21
  attribute :ramdisk_id, :aliases => 'ramdiskId'
22
22
  attribute :root_device_type, :aliases => 'rootDeviceType'
23
23
  attribute :root_device_name, :aliases => 'rootDeviceName'
24
+ attribute :tags, :aliases => 'tagSet'
24
25
 
25
26
  def deregister(delete_snapshot = false)
26
27
  connection.deregister_image(@id)
@@ -1,4 +1,4 @@
1
- require 'fog/collection'
1
+ require 'fog/core/collection'
2
2
  require 'fog/aws/models/compute/image'
3
3
 
4
4
  module Fog
@@ -7,27 +7,25 @@ module Fog
7
7
 
8
8
  class Images < Fog::Collection
9
9
 
10
- attribute :image_id
10
+ attribute :filters
11
11
 
12
12
  model Fog::AWS::Compute::Image
13
13
 
14
14
  def initialize(attributes)
15
- @image_id ||= []
15
+ @filters ||= {}
16
16
  super
17
17
  end
18
18
 
19
- def all(image_id = @image_id)
20
- @image_id = image_id
21
- data = connection.describe_images('ImageId' => image_id).body
19
+ def all(filters = @filters)
20
+ @filters = filters
21
+ data = connection.describe_images(@filters).body
22
22
  load(data['imagesSet'])
23
23
  end
24
24
 
25
25
  def get(image_id)
26
26
  if image_id
27
- all(image_id).first
27
+ self.class.new(:connection => connection).all('image-id' => image_id).first
28
28
  end
29
- rescue Fog::Errors::NotFound
30
- nil
31
29
  end
32
30
  end
33
31
 
@@ -1,4 +1,4 @@
1
- require 'fog/model'
1
+ require 'fog/core/model'
2
2
 
3
3
  module Fog
4
4
  module AWS
@@ -1,4 +1,4 @@
1
- require 'fog/collection'
1
+ require 'fog/core/collection'
2
2
  require 'fog/aws/models/compute/key_pair'
3
3
 
4
4
  module Fog
@@ -12,22 +12,24 @@ module Fog
12
12
  model Fog::AWS::Compute::KeyPair
13
13
 
14
14
  def initialize(attributes)
15
- @key_name ||= []
15
+ @filters ||= {}
16
16
  super
17
17
  end
18
18
 
19
- def all(key_name = @key_name)
20
- @key_name = key_name
21
- data = connection.describe_key_pairs(key_name).body
19
+ def all(filters = @filters)
20
+ unless filters.is_a?(Hash)
21
+ Formatador.display_line("[yellow][WARN] all with #{filters.class} param is deprecated, use all('key-name' => []) instead[/] [light_black](#{caller.first})[/]")
22
+ filters = {'key-name' => [*filters]}
23
+ end
24
+ @filters = filters
25
+ data = connection.describe_key_pairs(filters).body
22
26
  load(data['keySet'])
23
27
  end
24
28
 
25
29
  def get(key_name)
26
30
  if key_name
27
- all(key_name).first
31
+ self.class.new(:connection => connection).all('key-name' => key_name).first
28
32
  end
29
- rescue Fog::Errors::NotFound
30
- nil
31
33
  end
32
34
 
33
35
  end
@@ -1,4 +1,4 @@
1
- require 'fog/model'
1
+ require 'fog/core/model'
2
2
 
3
3
  module Fog
4
4
  module AWS
@@ -1,4 +1,4 @@
1
- require 'fog/collection'
1
+ require 'fog/core/collection'
2
2
  require 'fog/aws/models/compute/security_group'
3
3
 
4
4
  module Fog
@@ -7,27 +7,29 @@ module Fog
7
7
 
8
8
  class SecurityGroups < Fog::Collection
9
9
 
10
- attribute :group_name
10
+ attribute :filters
11
11
 
12
12
  model Fog::AWS::Compute::SecurityGroup
13
13
 
14
14
  def initialize(attributes)
15
- @group_name ||= []
15
+ @filters ||= {}
16
16
  super
17
17
  end
18
18
 
19
- def all(group_name = @group_name)
20
- @group_name = group_name
21
- data = connection.describe_security_groups(group_name).body
19
+ def all(filters = @filters)
20
+ unless filters.is_a?(Hash)
21
+ Formatador.display_line("[yellow][WARN] all with #{filters.class} param is deprecated, use all('group-name' => []) instead[/] [light_black](#{caller.first})[/]")
22
+ filters = {'group-name' => [*filters]}
23
+ end
24
+ @filters = filters
25
+ data = connection.describe_security_groups(@filters).body
22
26
  load(data['securityGroupInfo'])
23
27
  end
24
28
 
25
29
  def get(group_name)
26
30
  if group_name
27
- all(group_name).first
31
+ self.class.new(:connection => connection).all('group-name' => group_name).first
28
32
  end
29
- rescue Fog::Errors::NotFound
30
- nil
31
33
  end
32
34
 
33
35
  end
@@ -1,4 +1,4 @@
1
- require 'fog/model'
1
+ require 'fog/core/model'
2
2
 
3
3
  module Fog
4
4
  module AWS
@@ -12,6 +12,7 @@ module Fog
12
12
  attribute :ami_launch_index, :aliases => 'amiLaunchIndex'
13
13
  attribute :availability_zone, :aliases => 'availabilityZone'
14
14
  attribute :block_device_mapping, :aliases => 'blockDeviceMapping'
15
+ attribute :client_token, :aliases => 'clientToken'
15
16
  attribute :dns_name, :aliases => 'dnsName'
16
17
  attribute :groups
17
18
  attribute :flavor_id, :aliases => 'instanceType'
@@ -29,10 +30,12 @@ module Fog
29
30
  attribute :root_device_name, :aliases => 'rootDeviceName'
30
31
  attribute :root_device_type, :aliases => 'rootDeviceType'
31
32
  attribute :state, :aliases => 'instanceState'
33
+ attribute :state_reason, :aliases => 'stateReason'
32
34
  attribute :subnet_id, :aliases => 'subnetId'
35
+ attribute :tags, :aliases => 'tagSet'
33
36
  attribute :user_data
34
37
 
35
- attr_accessor :password, :username
38
+ attr_accessor :password
36
39
  attr_writer :private_key, :private_key_path, :public_key, :public_key_path
37
40
 
38
41
  def initialize(attributes={})
@@ -60,6 +63,7 @@ module Fog
60
63
  true
61
64
  end
62
65
 
66
+ remove_method :flavor_id
63
67
  def flavor_id
64
68
  @flavor && @flavor.id || @flavor_id
65
69
  end
@@ -82,6 +86,7 @@ module Fog
82
86
  @key_name = new_keypair && new_keypair.name
83
87
  end
84
88
 
89
+ remove_method :monitoring=
85
90
  def monitoring=(new_monitoring)
86
91
  if new_monitoring.is_a?(Hash)
87
92
  @monitoring = new_monitoring['state']
@@ -124,10 +129,12 @@ module Fog
124
129
  end
125
130
 
126
131
  def save
132
+ raise Fog::Errors::Error.new('Resaving an existing object may create a duplicate') if identity
127
133
  requires :image_id
128
134
 
129
135
  options = {
130
136
  'BlockDeviceMapping' => block_device_mapping,
137
+ 'ClientToken' => client_token,
131
138
  'InstanceType' => flavor_id,
132
139
  'KernelId' => kernel_id,
133
140
  'KeyName' => key_name,
@@ -191,12 +198,12 @@ module Fog
191
198
 
192
199
  def volumes
193
200
  requires :id
194
-
195
201
  connection.volumes(:server => self)
196
202
  end
197
203
 
198
204
  private
199
205
 
206
+ remove_method :state=
200
207
  def state=(new_state)
201
208
  if new_state.is_a?(Hash)
202
209
  @state = new_state['name']
@@ -1,4 +1,4 @@
1
- require 'fog/collection'
1
+ require 'fog/core/collection'
2
2
  require 'fog/aws/models/compute/server'
3
3
 
4
4
  module Fog
@@ -7,18 +7,24 @@ module Fog
7
7
 
8
8
  class Servers < Fog::Collection
9
9
 
10
+ attribute :filters
11
+
10
12
  attribute :server_id
11
13
 
12
14
  model Fog::AWS::Compute::Server
13
15
 
14
16
  def initialize(attributes)
15
- @server_id ||= []
17
+ @filters ||= {}
16
18
  super
17
19
  end
18
20
 
19
- def all(server_id = @server_id)
20
- @server_id = server_id
21
- data = connection.describe_instances(server_id).body
21
+ def all(filters = @filters)
22
+ unless filters.is_a?(Hash)
23
+ Formatador.display_line("[yellow][WARN] all with #{filters.class} param is deprecated, use all('instance-id' => []) instead[/] [light_black](#{caller.first})[/]")
24
+ filters = {'instance-id' => [*filters]}
25
+ end
26
+ @filters = filters
27
+ data = connection.describe_instances(filters).body
22
28
  load(
23
29
  data['reservationSet'].map do |reservation|
24
30
  reservation['instancesSet'].map do |instance|
@@ -42,13 +48,13 @@ module Fog
42
48
 
43
49
  # make sure port 22 is open in the first security group
44
50
  security_group = connection.security_groups.get(server.groups.first)
45
- ip_permission = security_group.ip_permissions.detect do |ip_permission|
51
+ authorized = security_group.ip_permissions.detect do |ip_permission|
46
52
  ip_permission['ipRanges'].first && ip_permission['ipRanges'].first['cidrIp'] == '0.0.0.0/0' &&
47
53
  ip_permission['fromPort'] == 22 &&
48
54
  ip_permission['ipProtocol'] == 'tcp' &&
49
55
  ip_permission['toPort'] == 22
50
56
  end
51
- unless ip_permission
57
+ unless authorized
52
58
  security_group.authorize_port_range(22..22)
53
59
  end
54
60
 
@@ -60,7 +66,7 @@ module Fog
60
66
 
61
67
  def get(server_id)
62
68
  if server_id
63
- all(server_id).first
69
+ self.class.new(:connection => connection).all('instance-id' => server_id).first
64
70
  end
65
71
  rescue Fog::Errors::NotFound
66
72
  nil
@@ -1,4 +1,4 @@
1
- require 'fog/model'
1
+ require 'fog/core/model'
2
2
 
3
3
  module Fog
4
4
  module AWS
@@ -15,6 +15,7 @@ module Fog
15
15
  attribute :created_at, :aliases => 'startTime'
16
16
  attribute :owner_id, :aliases => 'ownerId'
17
17
  attribute :state, :aliases => 'status'
18
+ attribute :tags, :aliases => 'tagSet'
18
19
  attribute :volume_id, :aliases => 'volumeId'
19
20
  attribute :volume_size, :aliases => 'volumeSize'
20
21
 
@@ -30,6 +31,7 @@ module Fog
30
31
  end
31
32
 
32
33
  def save
34
+ raise Fog::Errors::Error.new('Resaving an existing object may create a duplicate') if identity
33
35
  requires :volume_id
34
36
 
35
37
  data = connection.create_snapshot(@volume_id, @description).body
@@ -40,7 +42,6 @@ module Fog
40
42
 
41
43
  def volume
42
44
  requires :id
43
-
44
45
  connection.describe_volumes(@volume_id)
45
46
  end
46
47
 
@@ -1,4 +1,4 @@
1
- require 'fog/collection'
1
+ require 'fog/core/collection'
2
2
  require 'fog/aws/models/compute/snapshot'
3
3
 
4
4
  module Fog
@@ -7,26 +7,23 @@ module Fog
7
7
 
8
8
  class Snapshots < Fog::Collection
9
9
 
10
- attribute :owner, :aliases => 'Owner'
11
- attribute :restorable_by, :aliases => 'RestorableBy'
12
- attribute :snapshot_id
10
+ attribute :filters
13
11
  attribute :volume
14
12
 
15
13
  model Fog::AWS::Compute::Snapshot
16
14
 
17
15
  def initialize(attributes)
18
- @snapshot_id ||= []
16
+ @filters ||= { 'RestorableBy' => 'self' }
19
17
  super
20
18
  end
21
19
 
22
- def all(snapshot_id = @snapshot_id, options = {})
23
- options = {
24
- 'Owner' => @owner || 'self',
25
- 'RestorableBy' => @restorable_by
26
- }
27
- options = options.reject {|key,value| value.nil? || value.to_s.empty?}
28
- merge_attributes(options)
29
- data = connection.describe_snapshots(snapshot_id).body
20
+ def all(filters = @filters, options = {})
21
+ unless filters.is_a?(Hash)
22
+ Formatador.display_line("[yellow][WARN] all with #{filters.class} param is deprecated, use all('snapshot-id' => []) instead[/] [light_black](#{caller.first})[/]")
23
+ filters = {'snapshot-id' => [*filters]}
24
+ end
25
+ @filters = filters
26
+ data = connection.describe_snapshots(filters.merge!(options)).body
30
27
  load(data['snapshotSet'])
31
28
  if volume
32
29
  self.replace(self.select {|snapshot| snapshot.volume_id == volume.id})
@@ -36,10 +33,8 @@ module Fog
36
33
 
37
34
  def get(snapshot_id)
38
35
  if snapshot_id
39
- all(snapshot_id).first
36
+ self.class.new(:connection => connection).all('snapshot-id' => snapshot_id).first
40
37
  end
41
- rescue Fog::Errors::NotFound
42
- nil
43
38
  end
44
39
 
45
40
  def new(attributes = {})