fog 0.8.1 → 0.8.2

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 (211) hide show
  1. data/Rakefile +106 -17
  2. data/bin/fog +1 -1
  3. data/changelog.txt +17 -0
  4. data/docs/_layouts/default.html +2 -1
  5. data/docs/about/contributing.markdown +1 -1
  6. data/docs/compute/index.markdown +104 -0
  7. data/docs/index.markdown +1 -0
  8. data/docs/storage/index.markdown +17 -0
  9. data/fog.gemspec +3 -2
  10. data/lib/fog.rb +1 -1
  11. data/lib/fog/aws/elb.rb +1 -0
  12. data/lib/fog/aws/iam.rb +1 -0
  13. data/lib/fog/aws/rds.rb +1 -0
  14. data/lib/fog/aws/requests/simpledb/batch_put_attributes.rb +5 -5
  15. data/lib/fog/aws/requests/simpledb/create_domain.rb +1 -1
  16. data/lib/fog/aws/requests/simpledb/delete_attributes.rb +3 -3
  17. data/lib/fog/aws/requests/simpledb/delete_domain.rb +1 -1
  18. data/lib/fog/aws/requests/simpledb/domain_metadata.rb +1 -1
  19. data/lib/fog/aws/requests/simpledb/get_attributes.rb +5 -5
  20. data/lib/fog/aws/requests/simpledb/list_domains.rb +2 -2
  21. data/lib/fog/aws/requests/simpledb/put_attributes.rb +6 -6
  22. data/lib/fog/aws/ses.rb +1 -0
  23. data/lib/fog/aws/simpledb.rb +8 -2
  24. data/lib/fog/bin.rb +2 -2
  25. data/lib/fog/cdn/aws.rb +8 -2
  26. data/lib/fog/cdn/rackspace.rb +8 -2
  27. data/lib/fog/compute/aws.rb +12 -3
  28. data/lib/fog/compute/bluebox.rb +8 -2
  29. data/lib/fog/compute/ecloud.rb +9 -4
  30. data/lib/fog/compute/go_grid.rb +8 -2
  31. data/lib/fog/compute/linode.rb +38 -6
  32. data/lib/fog/compute/models/aws/volumes.rb +4 -4
  33. data/lib/fog/compute/models/bluebox/server.rb +3 -3
  34. data/lib/fog/compute/models/brightbox/server.rb +9 -9
  35. data/lib/fog/compute/models/linode/data_center.rb +12 -0
  36. data/lib/fog/compute/models/linode/data_centers.rb +26 -0
  37. data/lib/fog/compute/models/linode/disk.rb +62 -0
  38. data/lib/fog/compute/models/linode/disks.rb +40 -0
  39. data/lib/fog/compute/models/linode/flavor.rb +23 -0
  40. data/lib/fog/compute/models/linode/flavors.rb +32 -0
  41. data/lib/fog/compute/models/linode/image.rb +14 -0
  42. data/lib/fog/compute/models/linode/images.rb +33 -0
  43. data/lib/fog/compute/models/linode/ip.rb +30 -0
  44. data/lib/fog/compute/models/linode/ips.rb +40 -0
  45. data/lib/fog/compute/models/linode/kernel.rb +12 -0
  46. data/lib/fog/compute/models/linode/kernels.rb +32 -0
  47. data/lib/fog/compute/models/linode/server.rb +88 -0
  48. data/lib/fog/compute/models/linode/servers.rb +32 -0
  49. data/lib/fog/compute/models/linode/stack_script.rb +13 -0
  50. data/lib/fog/compute/models/linode/stack_scripts.rb +32 -0
  51. data/lib/fog/compute/models/rackspace/server.rb +2 -2
  52. data/lib/fog/compute/models/slicehost/server.rb +2 -2
  53. data/lib/fog/compute/models/voxel/server.rb +3 -3
  54. data/lib/fog/compute/new_servers.rb +8 -2
  55. data/lib/fog/compute/rackspace.rb +8 -2
  56. data/lib/fog/compute/requests/aws/allocate_address.rb +4 -2
  57. data/lib/fog/compute/requests/aws/associate_address.rb +4 -2
  58. data/lib/fog/compute/requests/aws/attach_volume.rb +4 -2
  59. data/lib/fog/compute/requests/aws/authorize_security_group_ingress.rb +5 -3
  60. data/lib/fog/compute/requests/aws/create_image.rb +2 -1
  61. data/lib/fog/compute/requests/aws/create_key_pair.rb +4 -2
  62. data/lib/fog/compute/requests/aws/create_security_group.rb +5 -3
  63. data/lib/fog/compute/requests/aws/create_snapshot.rb +6 -4
  64. data/lib/fog/compute/requests/aws/create_tags.rb +7 -5
  65. data/lib/fog/compute/requests/aws/create_volume.rb +4 -2
  66. data/lib/fog/compute/requests/aws/delete_key_pair.rb +3 -1
  67. data/lib/fog/compute/requests/aws/delete_security_group.rb +4 -2
  68. data/lib/fog/compute/requests/aws/delete_snapshot.rb +3 -1
  69. data/lib/fog/compute/requests/aws/delete_tags.rb +5 -3
  70. data/lib/fog/compute/requests/aws/delete_volume.rb +4 -2
  71. data/lib/fog/compute/requests/aws/deregister_image.rb +2 -0
  72. data/lib/fog/compute/requests/aws/describe_addresses.rb +3 -1
  73. data/lib/fog/compute/requests/aws/describe_availability_zones.rb +2 -0
  74. data/lib/fog/compute/requests/aws/describe_images.rb +3 -1
  75. data/lib/fog/compute/requests/aws/describe_instances.rb +12 -10
  76. data/lib/fog/compute/requests/aws/describe_key_pairs.rb +3 -1
  77. data/lib/fog/compute/requests/aws/describe_regions.rb +2 -0
  78. data/lib/fog/compute/requests/aws/describe_reserved_instances.rb +2 -0
  79. data/lib/fog/compute/requests/aws/describe_reserved_instances_offerings.rb +2 -0
  80. data/lib/fog/compute/requests/aws/describe_security_groups.rb +3 -1
  81. data/lib/fog/compute/requests/aws/describe_snapshots.rb +5 -3
  82. data/lib/fog/compute/requests/aws/describe_tags.rb +2 -0
  83. data/lib/fog/compute/requests/aws/describe_volumes.rb +9 -7
  84. data/lib/fog/compute/requests/aws/detach_volume.rb +3 -1
  85. data/lib/fog/compute/requests/aws/disassociate_address.rb +4 -2
  86. data/lib/fog/compute/requests/aws/get_console_output.rb +3 -1
  87. data/lib/fog/compute/requests/aws/get_password_data.rb +15 -1
  88. data/lib/fog/compute/requests/aws/import_key_pair.rb +4 -2
  89. data/lib/fog/compute/requests/aws/modify_image_attributes.rb +4 -0
  90. data/lib/fog/compute/requests/aws/modify_snapshot_attribute.rb +4 -0
  91. data/lib/fog/compute/requests/aws/monitor_instances.rb +3 -1
  92. data/lib/fog/compute/requests/aws/reboot_instances.rb +4 -2
  93. data/lib/fog/compute/requests/aws/register_image.rb +4 -0
  94. data/lib/fog/compute/requests/aws/release_address.rb +3 -1
  95. data/lib/fog/compute/requests/aws/revoke_security_group_ingress.rb +3 -1
  96. data/lib/fog/compute/requests/aws/run_instances.rb +12 -6
  97. data/lib/fog/compute/requests/aws/start_instances.rb +2 -0
  98. data/lib/fog/compute/requests/aws/stop_instances.rb +2 -0
  99. data/lib/fog/compute/requests/aws/terminate_instances.rb +5 -3
  100. data/lib/fog/compute/requests/aws/unmonitor_instances.rb +3 -1
  101. data/lib/fog/compute/requests/go_grid/grid_image_get.rb +1 -1
  102. data/lib/fog/compute/requests/go_grid/grid_image_list.rb +1 -1
  103. data/lib/fog/compute/requests/linode/avail_datacenters.rb +1 -2
  104. data/lib/fog/compute/requests/linode/avail_distributions.rb +1 -2
  105. data/lib/fog/compute/requests/linode/avail_kernels.rb +6 -5
  106. data/lib/fog/compute/requests/linode/avail_linodeplans.rb +9 -3
  107. data/lib/fog/compute/requests/linode/avail_stackscripts.rb +3 -15
  108. data/lib/fog/compute/requests/linode/linode_boot.rb +15 -0
  109. data/lib/fog/compute/requests/linode/linode_config_create.rb +21 -0
  110. data/lib/fog/compute/requests/linode/linode_config_list.rb +18 -0
  111. data/lib/fog/compute/requests/linode/linode_create.rb +3 -4
  112. data/lib/fog/compute/requests/linode/linode_delete.rb +0 -1
  113. data/lib/fog/compute/requests/linode/linode_disk_create.rb +21 -0
  114. data/lib/fog/compute/requests/linode/linode_disk_createfromdistribution.rb +22 -0
  115. data/lib/fog/compute/requests/linode/linode_disk_createfromstackscript.rb +24 -0
  116. data/lib/fog/compute/requests/linode/linode_disk_delete.rb +19 -0
  117. data/lib/fog/compute/requests/linode/linode_disk_list.rb +19 -0
  118. data/lib/fog/compute/requests/linode/linode_ip_addprivate.rb +15 -0
  119. data/lib/fog/compute/requests/linode/linode_ip_list.rb +19 -0
  120. data/lib/fog/compute/requests/linode/linode_list.rb +0 -1
  121. data/lib/fog/compute/requests/linode/linode_reboot.rb +1 -2
  122. data/lib/fog/compute/requests/linode/linode_shutdown.rb +15 -0
  123. data/lib/fog/compute/requests/linode/linode_update.rb +15 -0
  124. data/lib/fog/compute/requests/linode/stackscript_list.rb +31 -0
  125. data/lib/fog/compute/requests/rackspace/confirm_resized_server.rb +3 -3
  126. data/lib/fog/compute/requests/rackspace/create_image.rb +2 -2
  127. data/lib/fog/compute/requests/rackspace/create_server.rb +2 -2
  128. data/lib/fog/compute/requests/rackspace/delete_image.rb +2 -2
  129. data/lib/fog/compute/requests/rackspace/delete_server.rb +2 -2
  130. data/lib/fog/compute/requests/rackspace/list_images_detail.rb +2 -2
  131. data/lib/fog/compute/requests/rackspace/list_servers_detail.rb +2 -2
  132. data/lib/fog/compute/requests/rackspace/resize_server.rb +4 -4
  133. data/lib/fog/compute/requests/rackspace/revert_resized_server.rb +4 -4
  134. data/lib/fog/compute/slicehost.rb +8 -2
  135. data/lib/fog/compute/storm_on_demand.rb +12 -1
  136. data/lib/fog/compute/voxel.rb +8 -2
  137. data/lib/fog/core/mock.rb +14 -1
  138. data/lib/fog/dns/aws.rb +8 -2
  139. data/lib/fog/dns/bluebox.rb +8 -2
  140. data/lib/fog/dns/dnsimple.rb +15 -3
  141. data/lib/fog/dns/linode.rb +8 -2
  142. data/lib/fog/dns/slicehost.rb +8 -2
  143. data/lib/fog/dns/zerigo.rb +8 -2
  144. data/lib/fog/providers/aws.rb +5 -10
  145. data/lib/fog/providers/linode.rb +0 -3
  146. data/lib/fog/storage.rb +6 -4
  147. data/lib/fog/storage/aws.rb +8 -2
  148. data/lib/fog/storage/google.rb +8 -2
  149. data/lib/fog/storage/local.rb +8 -2
  150. data/lib/fog/storage/models/aws/file.rb +0 -1
  151. data/lib/fog/storage/models/google/file.rb +1 -5
  152. data/lib/fog/storage/models/local/file.rb +1 -1
  153. data/lib/fog/storage/models/rackspace/file.rb +1 -5
  154. data/lib/fog/storage/rackspace.rb +8 -2
  155. data/lib/fog/storage/requests/aws/copy_object.rb +2 -2
  156. data/lib/fog/storage/requests/aws/delete_bucket.rb +3 -3
  157. data/lib/fog/storage/requests/aws/delete_object.rb +1 -1
  158. data/lib/fog/storage/requests/aws/get_bucket.rb +1 -1
  159. data/lib/fog/storage/requests/aws/get_bucket_acl.rb +1 -1
  160. data/lib/fog/storage/requests/aws/get_bucket_location.rb +1 -1
  161. data/lib/fog/storage/requests/aws/get_object.rb +1 -1
  162. data/lib/fog/storage/requests/aws/get_object_acl.rb +1 -1
  163. data/lib/fog/storage/requests/aws/get_request_payment.rb +1 -1
  164. data/lib/fog/storage/requests/aws/get_service.rb +1 -1
  165. data/lib/fog/storage/requests/aws/put_bucket.rb +3 -3
  166. data/lib/fog/storage/requests/aws/put_object.rb +3 -3
  167. data/lib/fog/storage/requests/aws/put_request_payment.rb +1 -1
  168. data/lib/fog/storage/requests/google/copy_object.rb +2 -2
  169. data/lib/fog/storage/requests/google/delete_bucket.rb +3 -3
  170. data/lib/fog/storage/requests/google/delete_object.rb +1 -1
  171. data/lib/fog/storage/requests/google/get_bucket.rb +1 -1
  172. data/lib/fog/storage/requests/google/get_bucket_acl.rb +1 -1
  173. data/lib/fog/storage/requests/google/get_object.rb +1 -1
  174. data/lib/fog/storage/requests/google/get_object_acl.rb +1 -1
  175. data/lib/fog/storage/requests/google/get_service.rb +2 -2
  176. data/lib/fog/storage/requests/google/put_bucket.rb +3 -3
  177. data/lib/fog/storage/requests/google/put_object.rb +3 -3
  178. data/lib/fog/terremark/requests/shared/get_network.rb +1 -1
  179. data/lib/fog/terremark/requests/shared/get_organization.rb +1 -1
  180. data/lib/fog/terremark/requests/shared/get_organizations.rb +1 -1
  181. data/lib/fog/terremark/requests/shared/get_public_ips.rb +1 -1
  182. data/lib/fog/terremark/requests/shared/get_vdc.rb +1 -1
  183. data/lib/fog/terremark/shared.rb +4 -0
  184. data/lib/fog/terremark/vcloud.rb +11 -1
  185. data/spec/ecloud/bin_spec.rb +8 -2
  186. data/spec/ecloud/spec_helper.rb +3 -3
  187. data/tests/compute/helper.rb +1 -3
  188. data/tests/compute/models/aws/server_tests.rb +3 -2
  189. data/tests/compute/requests/aws/instance_tests.rb +12 -9
  190. data/tests/compute/requests/aws/key_pair_tests.rb +1 -1
  191. data/tests/compute/requests/aws/volume_tests.rb +2 -2
  192. data/tests/compute/requests/brightbox/helper.rb +3 -0
  193. data/tests/compute/requests/linode/kernel_tests.rb +27 -0
  194. data/tests/compute/requests/linode/linode_tests.rb +62 -4
  195. data/tests/compute/requests/linode/stackscripts_tests.rb +35 -0
  196. data/tests/compute/requests/rackspace/resize_tests.rb +2 -2
  197. data/tests/compute/requests/voxel/server_tests.rb +1 -0
  198. data/tests/core/credential_tests.rb +7 -2
  199. data/tests/core/parser_tests.rb +1 -1
  200. data/tests/helper.rb +1 -1
  201. data/tests/helpers/compute/server_helper.rb +6 -0
  202. data/tests/helpers/formats_helper.rb +2 -0
  203. data/tests/helpers/mock_helper.rb +8 -1
  204. data/tests/helpers/model_helper.rb +1 -3
  205. data/tests/helpers/responds_to_helper.rb +2 -2
  206. data/tests/storage/helper.rb +1 -1
  207. data/tests/storage/models/directories_tests.rb +8 -4
  208. data/tests/storage/models/directory_test.rb +15 -11
  209. data/tests/storage/models/file_tests.rb +6 -6
  210. data/tests/storage/models/files_tests.rb +5 -5
  211. metadata +105 -55
@@ -15,6 +15,8 @@ module Fog
15
15
  # * body<~Hash>:
16
16
  # * 'requestId'<~String> id of request
17
17
  # * 'return'<~Boolean> - success?
18
+ #
19
+ # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DeleteKeyPair.html]
18
20
  def delete_key_pair(key_name)
19
21
  request(
20
22
  'Action' => 'DeleteKeyPair',
@@ -30,7 +32,7 @@ module Fog
30
32
 
31
33
  def delete_key_pair(key_name)
32
34
  response = Excon::Response.new
33
- @data[:key_pairs].delete(key_name)
35
+ self.data[:key_pairs].delete(key_name)
34
36
  response.status = 200
35
37
  response.body = {
36
38
  'requestId' => Fog::AWS::Mock.request_id,
@@ -15,6 +15,8 @@ module Fog
15
15
  # * body<~Hash>:
16
16
  # * 'requestId'<~String> - Id of request
17
17
  # * 'return'<~Boolean> - success?
18
+ #
19
+ # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DeleteSecurityGroup.html]
18
20
  def delete_security_group(name)
19
21
  request(
20
22
  'Action' => 'DeleteSecurityGroup',
@@ -29,8 +31,8 @@ module Fog
29
31
  class Mock
30
32
  def delete_security_group(name)
31
33
  response = Excon::Response.new
32
- if @data[:security_groups][name]
33
- @data[:security_groups].delete(name)
34
+ if self.data[:security_groups][name]
35
+ self.data[:security_groups].delete(name)
34
36
  response.status = 200
35
37
  response.body = {
36
38
  'requestId' => Fog::AWS::Mock.request_id,
@@ -15,6 +15,8 @@ module Fog
15
15
  # * body<~Hash>:
16
16
  # * 'requestId'<~String> - Id of request
17
17
  # * 'return'<~Boolean> - success?
18
+ #
19
+ # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DeleteSnapshot.html]
18
20
  def delete_snapshot(snapshot_id)
19
21
  request(
20
22
  'Action' => 'DeleteSnapshot',
@@ -30,7 +32,7 @@ module Fog
30
32
 
31
33
  def delete_snapshot(snapshot_id)
32
34
  response = Excon::Response.new
33
- if snapshot = @data[:snapshots].delete(snapshot_id)
35
+ if snapshot = self.data[:snapshots].delete(snapshot_id)
34
36
  response.status = true
35
37
  response.body = {
36
38
  'requestId' => Fog::AWS::Mock.request_id,
@@ -16,6 +16,8 @@ module Fog
16
16
  # * body<~Hash>:
17
17
  # * 'requestId'<~String> - Id of request
18
18
  # * 'return'<~Boolean> - success?
19
+ #
20
+ # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DeleteTags.html]
19
21
  def delete_tags(resources, tags)
20
22
  resources = [*resources]
21
23
  params = {}
@@ -51,7 +53,7 @@ module Fog
51
53
  when /^vol\-[a-z0-9]{8}$/i
52
54
  'volume'
53
55
  end
54
- if type && @data[:"#{type}s"][resource_id]
56
+ if type && self.data[:"#{type}s"][resource_id]
55
57
  { 'resourceId' => resource_id, 'resourceType' => type }
56
58
  else
57
59
  raise(Fog::Service::NotFound.new("The #{type} ID '#{resource_id}' does not exist"))
@@ -59,11 +61,11 @@ module Fog
59
61
  end
60
62
 
61
63
  tags.each do |key, value|
62
- @data[:tags][key][value] = @data[:tags][key][value] - tagged
64
+ self.data[:tags][key][value] = self.data[:tags][key][value] - tagged
63
65
  end
64
66
 
65
67
  tagged.each do |resource|
66
- object = @data[:"#{resource['resourceType']}s"][resource['resourceId']]
68
+ object = self.data[:"#{resource['resourceType']}s"][resource['resourceId']]
67
69
  tags.each do |key, value|
68
70
  tagset = object['tagSet']
69
71
  tagset.delete(key) if tagset.has_key?(key) && (value.nil? || tagset[key] == value)
@@ -15,6 +15,8 @@ module Fog
15
15
  # * body<~Hash>:
16
16
  # * 'requestId'<~String> - Id of request
17
17
  # * 'return'<~Boolean> - success?
18
+ #
19
+ # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DeleteVolume.html]
18
20
  def delete_volume(volume_id)
19
21
  request(
20
22
  'Action' => 'DeleteVolume',
@@ -30,12 +32,12 @@ module Fog
30
32
 
31
33
  def delete_volume(volume_id)
32
34
  response = Excon::Response.new
33
- if volume = @data[:volumes][volume_id]
35
+ if volume = self.data[:volumes][volume_id]
34
36
  if volume["attachmentSet"].any?
35
37
  attach = volume["attachmentSet"].first
36
38
  raise Fog::AWS::Compute::Error.new("Client.VolumeInUse => Volume #{volume_id} is currently attached to #{attach["instanceId"]}")
37
39
  end
38
- @data[:deleted_at][volume_id] = Time.now
40
+ self.data[:deleted_at][volume_id] = Time.now
39
41
  volume['status'] = 'deleting'
40
42
  response.status = 200
41
43
  response.body = {
@@ -15,6 +15,8 @@ module Fog
15
15
  # * body<~Hash>:
16
16
  # * 'return'<~Boolean> - Returns true if deregistration succeeded
17
17
  # * 'requestId'<~String> - Id of request
18
+ #
19
+ # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DeregisterImage.html]
18
20
  def deregister_image(image_id)
19
21
  request(
20
22
  'Action' => 'DeregisterImage',
@@ -17,6 +17,8 @@ module Fog
17
17
  # * 'addressesSet'<~Array>:
18
18
  # * 'instanceId'<~String> - instance for ip address
19
19
  # * 'publicIp'<~String> - ip address for instance
20
+ #
21
+ # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeAddresses.html]
20
22
  def describe_addresses(filters = {})
21
23
  unless filters.is_a?(Hash)
22
24
  Formatador.display_line("[yellow][WARN] describe_addresses with #{filters.class} param is deprecated, use describe_addresses('public-ip' => []) instead[/] [light_black](#{caller.first})[/]")
@@ -42,7 +44,7 @@ module Fog
42
44
 
43
45
  response = Excon::Response.new
44
46
 
45
- addresses_set = @data[:addresses].values
47
+ addresses_set = self.data[:addresses].values
46
48
 
47
49
  aliases = {'public-ip' => 'publicIp', 'instance-id' => 'instanceId'}
48
50
  for filter_key, filter_value in filters
@@ -18,6 +18,8 @@ module Fog
18
18
  # * 'regionName'<~String> - Name of region
19
19
  # * 'zoneName'<~String> - Name of zone
20
20
  # * 'zoneState'<~String> - State of zone
21
+ #
22
+ # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeAvailabilityZones.html]
21
23
  def describe_availability_zones(filters = {})
22
24
  unless filters.is_a?(Hash)
23
25
  Formatador.display_line("[yellow][WARN] describe_availability_zones with #{filters.class} param is deprecated, use describe_availability_zones('zone-name' => []) instead[/] [light_black](#{caller.first})[/]")
@@ -36,6 +36,8 @@ module Fog
36
36
  # * 'rootDeviceName'<~String> - Root device name, e.g. /dev/sda1
37
37
  # * 'rootDeviceType'<~String> - Root device type, ebs or instance-store
38
38
  # * 'virtualizationType'<~String> - Type of virtualization
39
+ #
40
+ # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeImages.html]
39
41
  def describe_images(filters = {})
40
42
  options = {}
41
43
  for key in ['ExecutableBy', 'ImageId', 'Owner']
@@ -91,7 +93,7 @@ module Fog
91
93
  'virtualization-type' => 'virtualizationType'
92
94
  }
93
95
 
94
- image_set = @data[:images].values
96
+ image_set = self.data[:images].values
95
97
 
96
98
  for filter_key, filter_value in filters
97
99
  aliased_key = aliases[filter_key]
@@ -50,6 +50,8 @@ module Fog
50
50
  # * 'rootDeviceType'<~String> - root device type used by AMI in [ebs, instance-store]
51
51
  # * 'ramdiskId'<~String> - Id of ramdisk used to launch instance
52
52
  # * 'reason'<~String> - reason for most recent state transition, or blank
53
+ #
54
+ # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeInstances.html]
53
55
  def describe_instances(filters = {})
54
56
  unless filters.is_a?(Hash)
55
57
  Formatador.display_line("[yellow][WARN] describe_instances with #{filters.class} param is deprecated, use describe_instances('instance-id' => []) instead[/] [light_black](#{caller.first})[/]")
@@ -81,7 +83,7 @@ module Fog
81
83
 
82
84
  response = Excon::Response.new
83
85
 
84
- instance_set = @data[:instances].values
86
+ instance_set = self.data[:instances].values
85
87
  instance_set = apply_tag_filters(instance_set, filters)
86
88
 
87
89
  aliases = {
@@ -154,7 +156,7 @@ module Fog
154
156
  instance_set.each do |instance|
155
157
  case instance['instanceState']['name']
156
158
  when 'pending'
157
- if Time.now - instance['launchTime'] > Fog::Mock.delay
159
+ if Time.now - instance['launchTime'] >= Fog::Mock.delay
158
160
  instance['ipAddress'] = Fog::AWS::Mock.ip_address
159
161
  instance['dnsName'] = Fog::AWS::Mock.dns_name_for(instance['ipAddress'])
160
162
  instance['privateIpAddress'] = Fog::AWS::Mock.ip_address
@@ -164,20 +166,20 @@ module Fog
164
166
  when 'rebooting'
165
167
  instance['instanceState'] = { 'code' => 16, 'name' => 'running' }
166
168
  when 'shutting-down'
167
- if Time.now - @data[:deleted_at][instance['instanceId']] > Fog::Mock.delay * 2
168
- @data[:deleted_at].delete(instance['instanceId'])
169
- @data[:instances].delete(instance['instanceId'])
170
- elsif Time.now - @data[:deleted_at][instance['instanceId']] > Fog::Mock.delay
169
+ if Time.now - self.data[:deleted_at][instance['instanceId']] >= Fog::Mock.delay * 2
170
+ self.data[:deleted_at].delete(instance['instanceId'])
171
+ self.data[:instances].delete(instance['instanceId'])
172
+ elsif Time.now - self.data[:deleted_at][instance['instanceId']] >= Fog::Mock.delay
171
173
  instance['instanceState'] = { 'code' => 48, 'name' => 'terminating' }
172
174
  end
173
175
  when 'terminating'
174
- if Time.now - @data[:deleted_at][instance['instanceId']] > Fog::Mock.delay
175
- @data[:deleted_at].delete(instance['instanceId'])
176
- @data[:instances].delete(instance['instanceId'])
176
+ if Time.now - self.data[:deleted_at][instance['instanceId']] >= Fog::Mock.delay
177
+ self.data[:deleted_at].delete(instance['instanceId'])
178
+ self.data[:instances].delete(instance['instanceId'])
177
179
  end
178
180
  end
179
181
 
180
- if @data[:instances][instance['instanceId']]
182
+ if self.data[:instances][instance['instanceId']]
181
183
 
182
184
  reservation_set[instance['reservationId']] ||= {
183
185
  'groupSet' => instance['groupSet'],
@@ -17,6 +17,8 @@ module Fog
17
17
  # * 'keySet'<~Array>:
18
18
  # * 'keyName'<~String> - Name of key
19
19
  # * 'keyFingerprint'<~String> - Fingerprint of key
20
+ #
21
+ # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeKeyPairs.html]
20
22
  def describe_key_pairs(filters = {})
21
23
  unless filters.is_a?(Hash)
22
24
  Formatador.display_line("[yellow][WARN] describe_key_pairs with #{filters.class} param is deprecated, use describe_key_pairs('key-name' => []) instead[/] [light_black](#{caller.first})[/]")
@@ -42,7 +44,7 @@ module Fog
42
44
 
43
45
  response = Excon::Response.new
44
46
 
45
- key_set = @data[:key_pairs].values
47
+ key_set = self.data[:key_pairs].values
46
48
 
47
49
  aliases = {'fingerprint' => 'keyFingerprint', 'key-name' => 'keyName'}
48
50
  for filter_key, filter_value in filters
@@ -17,6 +17,8 @@ module Fog
17
17
  # * 'regionInfo'<~Array>:
18
18
  # * 'regionName'<~String> - Name of region
19
19
  # * 'regionEndpoint'<~String> - Service endpoint for region
20
+ #
21
+ # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeRegions.html]
20
22
  def describe_regions(filters = {})
21
23
  unless filters.is_a?(Hash)
22
24
  Formatador.display_line("[yellow][WARN] describe_regions with #{filters.class} param is deprecated, use describe_regions('region-name' => []) instead[/] [light_black](#{caller.first})[/]")
@@ -25,6 +25,8 @@ module Fog
25
25
  # * 'start'<~Time> - start time for reservation
26
26
  # * 'state'<~String> - state of reserved instance purchase, in .[pending-payment, active, payment-failed, retired]
27
27
  # * 'usagePrice"<~Float> - usage price of reserved instances, per hour
28
+ #
29
+ # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeReservedInstances.html]
28
30
  def describe_reserved_instances(filters = {})
29
31
  unless filters.is_a?(Hash)
30
32
  Formatador.display_line("[yellow][WARN] describe_reserved_instances with #{filters.class} param is deprecated, use describe_reserved_instances('reserved-instances-id' => []) instead[/] [light_black](#{caller.first})[/]")
@@ -22,6 +22,8 @@ module Fog
22
22
  # * 'productDescription'<~String> - description of offering
23
23
  # * 'reservedInstancesOfferingId'<~String> - id of offering
24
24
  # * 'usagePrice'<~Float> - usage price of offering, per hour
25
+ #
26
+ # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeReservedInstancesOfferings.html]
25
27
  def describe_reserved_instances_offerings(filters = {})
26
28
  params = AWS.indexed_filters(filters)
27
29
  request({
@@ -27,6 +27,8 @@ module Fog
27
27
  # * 'cidrIp'<~String> - CIDR range
28
28
  # * 'toPort'<~Integer> - End of port range (or -1 for ICMP wildcard)
29
29
  # * 'ownerId'<~String> - AWS Access Key Id of the owner of the security group
30
+ #
31
+ # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeSecurityGroups.html]
30
32
  def describe_security_groups(filters = {})
31
33
  unless filters.is_a?(Hash)
32
34
  Formatador.display_line("[yellow][WARN] describe_security_groups with #{filters.class} param is deprecated, use describe_security_groups('group-name' => []) instead[/] [light_black](#{caller.first})[/]")
@@ -52,7 +54,7 @@ module Fog
52
54
 
53
55
  response = Excon::Response.new
54
56
 
55
- security_group_info = @data[:security_groups].values
57
+ security_group_info = self.data[:security_groups].values
56
58
 
57
59
  aliases = {
58
60
  'description' => 'groupDescription',
@@ -23,6 +23,8 @@ module Fog
23
23
  # * 'startTime'<~Time>: Timestamp of when snapshot was initiated
24
24
  # * 'status'<~String>: Snapshot state, in ['pending', 'completed']
25
25
  # * 'volumeId'<~String>: Id of volume that snapshot contains
26
+ #
27
+ # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeSnapshots.html]
26
28
  def describe_snapshots(filters = {}, options = {})
27
29
  unless filters.is_a?(Hash)
28
30
  Formatador.display_line("[yellow][WARN] describe_snapshots with #{filters.class} param is deprecated, use describe_snapshots('snapshot-id' => []) instead[/] [light_black](#{caller.first})[/]")
@@ -61,7 +63,7 @@ module Fog
61
63
 
62
64
  response = Excon::Response.new
63
65
 
64
- snapshot_set = @data[:snapshots].values
66
+ snapshot_set = self.data[:snapshots].values
65
67
 
66
68
  if filters.delete('owner-alias')
67
69
  Formatador.display_line("[yellow][WARN] describe_snapshots with owner-alias is not mocked[/] [light_black](#{caller.first})[/]")
@@ -91,10 +93,10 @@ module Fog
91
93
  snapshot_set.each do |snapshot|
92
94
  case snapshot['status']
93
95
  when 'in progress', 'pending'
94
- if Time.now - snapshot['startTime'] > Fog::Mock.delay * 2
96
+ if Time.now - snapshot['startTime'] >= Fog::Mock.delay * 2
95
97
  snapshot['progress'] = '100%'
96
98
  snapshot['status'] = 'completed'
97
- elsif Time.now - snapshot['startTime'] > Fog::Mock.delay
99
+ elsif Time.now - snapshot['startTime'] >= Fog::Mock.delay
98
100
  snapshot['progress'] = '50%'
99
101
  snapshot['status'] = 'in progress'
100
102
  else
@@ -19,6 +19,8 @@ module Fog
19
19
  # * 'resourceType'<~String> - type of resource tag belongs to
20
20
  # * 'key'<~String> - Tag's key
21
21
  # * 'value'<~String> - Tag's value
22
+ #
23
+ # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeTags.html]
22
24
  def describe_tags(filters = {})
23
25
  params = AWS.indexed_filters(filters)
24
26
  request({
@@ -27,6 +27,8 @@ module Fog
27
27
  # * 'instanceId'<~String> - Reference to attached instance
28
28
  # * 'status'<~String> - Attachment state
29
29
  # * 'volumeId'<~String> - Reference to volume
30
+ #
31
+ # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeVolumes.html]
30
32
  def describe_volumes(filters = {})
31
33
  unless filters.is_a?(Hash)
32
34
  Formatador.display_line("[yellow][WARN] describe_volumes with #{filters.class} param is deprecated, use describe_volumes('volume-id' => []) instead[/] [light_black](#{caller.first})[/]")
@@ -52,7 +54,7 @@ module Fog
52
54
 
53
55
  response = Excon::Response.new
54
56
 
55
- volume_set = @data[:volumes].values
57
+ volume_set = self.data[:volumes].values
56
58
  volume_set = apply_tag_filters(volume_set, filters)
57
59
 
58
60
  aliases = {
@@ -83,22 +85,22 @@ module Fog
83
85
  volume_set.each do |volume|
84
86
  case volume['status']
85
87
  when 'attaching'
86
- if Time.now - volume['attachmentSet'].first['attachTime'] > Fog::Mock.delay
88
+ if Time.now - volume['attachmentSet'].first['attachTime'] >= Fog::Mock.delay
87
89
  volume['attachmentSet'].first['status'] = 'in-use'
88
90
  volume['status'] = 'in-use'
89
91
  end
90
92
  when 'creating'
91
- if Time.now - volume['createTime'] > Fog::Mock.delay
93
+ if Time.now - volume['createTime'] >= Fog::Mock.delay
92
94
  volume['status'] = 'available'
93
95
  end
94
96
  when 'deleting'
95
- if Time.now - @data[:deleted_at][volume['volumeId']] > Fog::Mock.delay
96
- @data[:deleted_at].delete(volume['volumeId'])
97
- @data[:volumes].delete(volume['volumeId'])
97
+ if Time.now - self.data[:deleted_at][volume['volumeId']] >= Fog::Mock.delay
98
+ self.data[:deleted_at].delete(volume['volumeId'])
99
+ self.data[:volumes].delete(volume['volumeId'])
98
100
  end
99
101
  end
100
102
  end
101
- volume_set = volume_set.reject {|volume| !@data[:volumes][volume['volumeId']]}
103
+ volume_set = volume_set.reject {|volume| !self.data[:volumes][volume['volumeId']]}
102
104
 
103
105
  response.status = 200
104
106
  response.body = {
@@ -23,6 +23,8 @@ module Fog
23
23
  # * 'requestId'<~String> - Id of request
24
24
  # * 'status'<~String> - Status of volume
25
25
  # * 'volumeId'<~String> - Reference to volume
26
+ #
27
+ # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DetachVolume.html]
26
28
  def detach_volume(volume_id, options = {})
27
29
  request({
28
30
  'Action' => 'DetachVolume',
@@ -39,7 +41,7 @@ module Fog
39
41
  def detach_volume(volume_id, options = {})
40
42
  response = Excon::Response.new
41
43
  response.status = 200
42
- if (volume = @data[:volumes][volume_id]) && !volume['attachmentSet'].empty?
44
+ if (volume = self.data[:volumes][volume_id]) && !volume['attachmentSet'].empty?
43
45
  data = volume['attachmentSet'].pop
44
46
  volume['status'] = 'available'
45
47
  response.status = 200
@@ -15,6 +15,8 @@ module Fog
15
15
  # * body<~Hash>:
16
16
  # * 'requestId'<~String> - Id of request
17
17
  # * 'return'<~Boolean> - success?
18
+ #
19
+ # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DisassociateAddress.html]
18
20
  def disassociate_address(public_ip)
19
21
  request(
20
22
  'Action' => 'DisassociateAddress',
@@ -31,9 +33,9 @@ module Fog
31
33
  def disassociate_address(public_ip)
32
34
  response = Excon::Response.new
33
35
  response.status = 200
34
- if address = @data[:addresses][public_ip]
36
+ if address = self.data[:addresses][public_ip]
35
37
  instance_id = address['instanceId']
36
- instance = @data[:instances][instance_id]
38
+ instance = self.data[:instances][instance_id]
37
39
  instance['ipAddress'] = instance['originalIpAddress']
38
40
  instance['dnsName'] = Fog::AWS::Mock.dns_name_for(instance['ipAddress'])
39
41
  address['instanceId'] = nil
@@ -17,6 +17,8 @@ module Fog
17
17
  # * 'output'<~String> - Console output
18
18
  # * 'requestId'<~String> - Id of request
19
19
  # * 'timestamp'<~Time> - Timestamp of last update to output
20
+ #
21
+ # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-GetConsoleOutput.html]
20
22
  def get_console_output(instance_id)
21
23
  request(
22
24
  'Action' => 'GetConsoleOutput',
@@ -32,7 +34,7 @@ module Fog
32
34
 
33
35
  def get_console_output(instance_id)
34
36
  response = Excon::Response.new
35
- if instance = @data[:instances][instance_id]
37
+ if instance = self.data[:instances][instance_id]
36
38
  response.status = 200
37
39
  response.body = {
38
40
  'instanceId' => instance_id,
@@ -19,6 +19,8 @@ module Fog
19
19
  # * 'timestamp'<~Time> - Timestamp of last update to output
20
20
  #
21
21
  # See http://docs.amazonwebservices.com/AWSEC2/2010-08-31/APIReference/index.html?ApiReference-query-GetPasswordData.html
22
+ #
23
+ # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-GetPasswordData.html]
22
24
  def get_password_data(instance_id)
23
25
  request(
24
26
  'Action' => 'GetPasswordData',
@@ -33,7 +35,19 @@ module Fog
33
35
  class Mock
34
36
 
35
37
  def get_password_data(instance_id)
36
- Fog::Mock.not_implemented
38
+ response = Excon::Response.new
39
+ if instance = self.data[:instances][instance_id]
40
+ response.status = 200
41
+ response.body = {
42
+ 'instanceId' => instance_id,
43
+ 'passwordData' => nil,
44
+ 'requestId' => Fog::AWS::Mock.request_id,
45
+ 'timestamp' => Time.now
46
+ }
47
+ response
48
+ else;
49
+ raise Fog::AWS::Compute::NotFound.new("The instance ID '#{instance_id}' does not exist")
50
+ end
37
51
  end
38
52
 
39
53
  end