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
@@ -17,6 +17,8 @@ module Fog
17
17
  # * 'keyFingerprint'<~String> - SHA-1 digest of DER encoded private key
18
18
  # * 'keyName'<~String> - Name of key
19
19
  # * 'requestId'<~String> - Id of request
20
+ #
21
+ # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-ImportKeyPair.html]
20
22
  def import_key_pair(key_name, public_key_material)
21
23
  request(
22
24
  'Action' => 'ImportKeyPair',
@@ -32,13 +34,13 @@ module Fog
32
34
 
33
35
  def import_key_pair(key_name, public_key_material)
34
36
  response = Excon::Response.new
35
- unless @data[:key_pairs][key_name]
37
+ unless self.data[:key_pairs][key_name]
36
38
  response.status = 200
37
39
  data = {
38
40
  'keyFingerprint' => Fog::AWS::Mock.key_fingerprint,
39
41
  'keyName' => key_name
40
42
  }
41
- @data[:key_pairs][key_name] = data
43
+ self.data[:key_pairs][key_name] = data
42
44
  response.body = {
43
45
  'requestId' => Fog::AWS::Mock.request_id
44
46
  }.merge!(data)
@@ -12,6 +12,10 @@ module Fog
12
12
  # * attribute<~String> - Attribute to modify, in ['launchPermission', 'productCodes']
13
13
  # * operation_type<~String> - Operation to perform on attribute, in ['add', 'remove']
14
14
  #
15
+ #
16
+ #
17
+ # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-ModifyImageAttribute.html]
18
+ #
15
19
  def modify_image_attributes(image_id, attribute, operation_type, options = {})
16
20
  params = {}
17
21
  params.merge!(AWS.indexed_param('UserId', options['UserId']))
@@ -12,6 +12,10 @@ module Fog
12
12
  # * attribute<~String> - Attribute to modify, in ['createVolumePermission']
13
13
  # * operation_type<~String> - Operation to perform on attribute, in ['add', 'remove']
14
14
  #
15
+ #
16
+ #
17
+ # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-ModifySnapshotAttribute.html]
18
+ #
15
19
  def modify_snapshot_attribute(snapshot_id, attribute, operation_type, options = {})
16
20
  params = {}
17
21
  params.merge!(AWS.indexed_param('UserId', options['UserId']))
@@ -17,6 +17,8 @@ module Fog
17
17
  # * body<~Hash>:
18
18
  # * 'requestId'<~String> - Id of request
19
19
  # * 'instancesSet': http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-ItemType-MonitorInstancesResponseSetItemType.html
20
+ #
21
+ # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-MonitorInstances.html]
20
22
  def monitor_instances(instance_ids)
21
23
  params = AWS.indexed_param('InstanceId', instance_ids)
22
24
  request({
@@ -34,7 +36,7 @@ module Fog
34
36
  response = Excon::Response.new
35
37
  response.status = 200
36
38
  [*instance_ids].each do |instance_id|
37
- if instance = @data[:instances][instance_id]
39
+ if instance = self.data[:instances][instance_id]
38
40
  instance['monitoring']['state'] = 'enabled'
39
41
  else
40
42
  raise Fog::AWS::Compute::NotFound.new("The instance ID '#{instance_ids}' does not exist")
@@ -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-RebootInstances.html]
18
20
  def reboot_instances(instance_id = [])
19
21
  params = AWS.indexed_param('InstanceId', instance_id)
20
22
  request({
@@ -31,9 +33,9 @@ module Fog
31
33
  def reboot_instances(instance_id = [])
32
34
  response = Excon::Response.new
33
35
  instance_id = [*instance_id]
34
- if (@data[:instances].keys & instance_id).length == instance_id.length
36
+ if (self.data[:instances].keys & instance_id).length == instance_id.length
35
37
  for instance_id in instance_id
36
- @data[:instances][instance_id]['status'] = 'rebooting'
38
+ self.data[:instances][instance_id]['status'] = 'rebooting'
37
39
  end
38
40
  response.status = 200
39
41
  response.body = {
@@ -31,6 +31,10 @@ module Fog
31
31
  # * body<~Hash>:
32
32
  # * 'imageId'<~String> - Id of newly created AMI
33
33
 
34
+ #
35
+
36
+ # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-RegisterImage.html]
37
+
34
38
  def register_image(name, description, location, block_devices=[], options={})
35
39
  common_options = {
36
40
  'Action' => 'RegisterImage',
@@ -12,6 +12,8 @@ module Fog
12
12
  # * body<~Hash>:
13
13
  # * 'requestId'<~String> - Id of request
14
14
  # * 'return'<~Boolean> - success?
15
+ #
16
+ # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-ReleaseAddress.html]
15
17
  def release_address(public_ip)
16
18
  request(
17
19
  'Action' => 'ReleaseAddress',
@@ -27,7 +29,7 @@ module Fog
27
29
 
28
30
  def release_address(public_ip)
29
31
  response = Excon::Response.new
30
- if (address = @data[:addresses].delete(public_ip))
32
+ if (address = self.data[:addresses].delete(public_ip))
31
33
  response.status = 200
32
34
  response.body = {
33
35
  'requestId' => Fog::AWS::Mock.request_id,
@@ -23,6 +23,8 @@ module Fog
23
23
  # * body<~Hash>:
24
24
  # * 'requestId'<~String> - Id of request
25
25
  # * 'return'<~Boolean> - success?
26
+ #
27
+ # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-RevokeSecurityGroupIngress.html]
26
28
  def revoke_security_group_ingress(group_name, options = {})
27
29
  if group_name.is_a?(Hash)
28
30
  location = caller.first
@@ -54,7 +56,7 @@ module Fog
54
56
  group_name = options['GroupName']
55
57
  end
56
58
  response = Excon::Response.new
57
- group = @data[:security_groups][group_name]
59
+ group = self.data[:security_groups][group_name]
58
60
  if group
59
61
  if options['SourceSecurityGroupName'] && options['SourceSecurityGroupOwnerId']
60
62
  group['ipPermissions'].delete_if {|permission|
@@ -79,6 +79,8 @@ module Fog
79
79
  # * 'ownerId'<~String> - Id of owner
80
80
  # * 'requestId'<~String> - Id of request
81
81
  # * 'reservationId'<~String> - Id of reservation
82
+ #
83
+ # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-RunInstances.html]
82
84
  def run_instances(image_id, min_count, max_count, options = {})
83
85
  if block_device_mapping = options.delete('BlockDeviceMapping')
84
86
  block_device_mapping.each_with_index do |mapping, index|
@@ -114,10 +116,14 @@ module Fog
114
116
  response = Excon::Response.new
115
117
  response.status = 200
116
118
 
117
- group_set = [ (options['GroupId'] || 'default') ]
119
+ group_set = [ (options['SecurityGroup'] || 'default') ].flatten
118
120
  instances_set = []
119
121
  reservation_id = Fog::AWS::Mock.reservation_id
120
122
 
123
+ if options['KeyName'] && describe_key_pairs('key-name' => options['KeyName']).body['keySet'].empty?
124
+ raise Fog::AWS::Compute::NotFound.new("The key pair '#{options['KeyName']}' does not exist")
125
+ end
126
+
121
127
  min_count.times do |i|
122
128
  instance_id = Fog::AWS::Mock.instance_id
123
129
  instance = {
@@ -130,10 +136,10 @@ module Fog
130
136
  'instanceState' => { 'code' => 0, 'name' => 'pending' },
131
137
  'instanceType' => options['InstanceType'] || 'm1.small',
132
138
  'kernelId' => options['KernelId'] || Fog::AWS::Mock.kernel_id,
133
- # 'keyName' => options['KeyName'],
139
+ 'keyName' => options['KeyName'],
134
140
  'launchTime' => Time.now,
135
141
  'monitoring' => { 'state' => options['Monitoring.Enabled'] || false },
136
- 'placement' => { 'availabilityZone' => options['Placement.AvailabilityZone'] || Fog::AWS::Mock.availability_zone },
142
+ 'placement' => { 'availabilityZone' => options['Placement.AvailabilityZone'] || Fog::AWS::Mock.availability_zone(@region) },
137
143
  'privateDnsName' => nil,
138
144
  'productCodes' => [],
139
145
  'ramdiskId' => options['RamdiskId'] || Fog::AWS::Mock.ramdisk_id,
@@ -141,10 +147,10 @@ module Fog
141
147
  'rootDeviceType' => 'instance-store'
142
148
  }
143
149
  instances_set << instance
144
- @data[:instances][instance_id] = instance.merge({
150
+ self.data[:instances][instance_id] = instance.merge({
145
151
  'architecture' => 'i386',
146
152
  'groupSet' => group_set,
147
- 'ownerId' => @owner_id,
153
+ 'ownerId' => self.data[:owner_id],
148
154
  'privateIpAddress' => nil,
149
155
  'reservationId' => reservation_id,
150
156
  'stateReason' => {},
@@ -154,7 +160,7 @@ module Fog
154
160
  response.body = {
155
161
  'groupSet' => group_set,
156
162
  'instancesSet' => instances_set,
157
- 'ownerId' => @owner_id,
163
+ 'ownerId' => self.data[:owner_id],
158
164
  'requestId' => Fog::AWS::Mock.request_id,
159
165
  'reservationId' => reservation_id
160
166
  }
@@ -15,6 +15,8 @@ module Fog
15
15
  # * body<~Hash>:
16
16
  # * 'requestId'<~String> - Id of request
17
17
  # * TODO: fill in the blanks
18
+ #
19
+ # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-StartInstances.html]
18
20
  def start_instances(instance_id)
19
21
  params = AWS.indexed_param('InstanceId', instance_id)
20
22
  request({
@@ -15,6 +15,8 @@ module Fog
15
15
  # * body<~Hash>:
16
16
  # * 'requestId'<~String> - Id of request
17
17
  # * TODO: fill in the blanks
18
+ #
19
+ # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-StopInstances.html]
18
20
  def stop_instances(instance_id)
19
21
  params = AWS.indexed_param('InstanceId', instance_id)
20
22
  request({
@@ -22,6 +22,8 @@ module Fog
22
22
  # * 'shutdownState'<~Hash>: shutdown state of instance
23
23
  # * 'code'<~Integer> - current status code
24
24
  # * 'name'<~String> - name of current state
25
+ #
26
+ # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-TerminateInstances.html]
25
27
  def terminate_instances(instance_id)
26
28
  params = AWS.indexed_param('InstanceId', instance_id)
27
29
  request({
@@ -38,15 +40,15 @@ module Fog
38
40
  def terminate_instances(instance_id)
39
41
  response = Excon::Response.new
40
42
  instance_id = [*instance_id]
41
- if (@data[:instances].keys & instance_id).length == instance_id.length
43
+ if (self.data[:instances].keys & instance_id).length == instance_id.length
42
44
  response.body = {
43
45
  'requestId' => Fog::AWS::Mock.request_id,
44
46
  'instancesSet' => []
45
47
  }
46
48
  response.status = 200
47
49
  for id in instance_id
48
- instance = @data[:instances][id]
49
- @data[:deleted_at][id] = Time.now
50
+ instance = self.data[:instances][id]
51
+ self.data[:deleted_at][id] = Time.now
50
52
  code = case instance['instanceState']['name']
51
53
  when 'pending'
52
54
  0
@@ -17,6 +17,8 @@ module Fog
17
17
  # * body<~Hash>:
18
18
  # * 'requestId'<~String> - Id of request
19
19
  # * 'instancesSet': http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-ItemType-MonitorInstancesResponseSetItemType.html
20
+ #
21
+ # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-UnmonitorInstances.html]
20
22
  def unmonitor_instances(instance_ids)
21
23
  params = AWS.indexed_param('InstanceId', instance_ids)
22
24
  request({
@@ -34,7 +36,7 @@ module Fog
34
36
  response = Excon::Response.new
35
37
  response.status = 200
36
38
  [*instance_ids].each do |instance_id|
37
- if instance = @data[:instances][instance_id]
39
+ if instance = self.data[:instances][instance_id]
38
40
  instance['monitoring']['state'] = 'enabled'
39
41
  else
40
42
  raise Fog::AWS::Compute::NotFound.new("The instance ID '#{instance_ids}' does not exist")
@@ -29,7 +29,7 @@ module Fog
29
29
  def grid_image_get(options={})
30
30
  #response = Excon::Response.new
31
31
 
32
- #images = @data[:list].values
32
+ #images = self.data[:list].values
33
33
  #for image in images
34
34
  # case image['state']
35
35
  # when 'Available'
@@ -32,7 +32,7 @@ module Fog
32
32
  def grid_image_list(options={})
33
33
  #response = Excon::Response.new
34
34
 
35
- #images = @data[:list].values
35
+ #images = self.data[:list].values
36
36
  #for image in images
37
37
  # case image['state']
38
38
  # when 'Available'
@@ -2,7 +2,7 @@ module Fog
2
2
  module Linode
3
3
  class Compute
4
4
  class Real
5
-
5
+
6
6
  # Get available data centers
7
7
  #
8
8
  # ==== Returns
@@ -16,7 +16,6 @@ module Fog
16
16
  :query => { :api_action => 'avail.datacenters' }
17
17
  )
18
18
  end
19
-
20
19
  end
21
20
  end
22
21
  end
@@ -11,7 +11,7 @@ module Fog
11
11
  # ==== Returns
12
12
  # * response<~Excon::Response>:
13
13
  # * body<~Array>:
14
- # TODO: docs
14
+ # TODO: docs
15
15
  def avail_distributions(distribution_id=nil)
16
16
  options = {}
17
17
  if distribution_id
@@ -23,7 +23,6 @@ module Fog
23
23
  :query => { :api_action => 'avail.distributions' }.merge!(options)
24
24
  )
25
25
  end
26
-
27
26
  end
28
27
  end
29
28
  end
@@ -6,22 +6,23 @@ module Fog
6
6
  # Get available kernels
7
7
  #
8
8
  # ==== Parameters
9
- # * options<~Hash>:
10
- # * kernelId<~Integer>: id to limit results to
11
- # * isXen<~Integer>: if 1 limits results to only zen
9
+ # * kernelId<~Integer>: id to limit results to
12
10
  #
13
11
  # ==== Returns
14
12
  # * response<~Excon::Response>:
15
13
  # * body<~Array>:
16
14
  # TODO: docs
17
- def avail_kernels(options={})
15
+ def avail_kernels(kernel_id=nil)
16
+ options = {}
17
+ if kernel_id
18
+ options.merge!(:kernelId => kernel_id)
19
+ end
18
20
  request(
19
21
  :expects => 200,
20
22
  :method => 'GET',
21
23
  :query => { :api_action => 'avail.kernels' }.merge!(options)
22
24
  )
23
25
  end
24
-
25
26
  end
26
27
  end
27
28
  end
@@ -5,22 +5,28 @@ module Fog
5
5
 
6
6
  # Get available plans
7
7
  #
8
+ # ==== Parameters
9
+ # * linodeplanId<~Integer>: id to limit results to
10
+ #
8
11
  # ==== Returns
9
12
  # * response<~Excon::Response>:
10
13
  # * body<~Array>:
11
- # TODO: docs
14
+ # TODO: docs
12
15
  def avail_linodeplans(linodeplan_id = nil)
13
16
  options = {}
14
17
  if linodeplan_id
15
18
  options.merge!(:planId => linodeplan_id)
16
19
  end
17
- request(
20
+ result = request(
18
21
  :expects => 200,
19
22
  :method => 'GET',
20
23
  :query => { :api_action => 'avail.linodeplans' }.merge!(options)
21
24
  )
25
+
26
+ #hack for plans not filtering by id like they should above, remove when they fix it.
27
+ result.body["DATA"] = result.body["DATA"].select { |item| item['PLANID'] == linodeplan_id } if linodeplan_id
28
+ result
22
29
  end
23
-
24
30
  end
25
31
  end
26
32
  end
@@ -2,27 +2,15 @@ module Fog
2
2
  module Linode
3
3
  class Compute
4
4
  class Real
5
-
6
- # Get available stack scripts
7
- #
8
- # ==== Parameters
9
- # * options<~Hash>:
10
- # * distributionId<~Integer>: Limit the results to Stackscripts that can be applied to this distribution id
11
- # * distributionVendor<~String>: Debian, Ubuntu, Fedora, etc.
12
- # * keywords<~String>: Search terms
13
- #
14
- # ==== Returns
15
- # * response<~Excon::Response>:
16
- # * body<~Array>:
17
- # TODO: docs
18
5
  def avail_stackscripts(options={})
19
- request(
6
+ result = request(
20
7
  :expects => 200,
21
8
  :method => 'GET',
22
9
  :query => { :api_action => 'avail.stackscripts' }.merge!(options)
23
10
  )
11
+ result.body['DATA'].each { |r| r['DISTRIBUTIONIDLIST'] = r['DISTRIBUTIONIDLIST'].to_s }
12
+ result
24
13
  end
25
-
26
14
  end
27
15
  end
28
16
  end
@@ -0,0 +1,15 @@
1
+ module Fog
2
+ module Linode
3
+ class Compute
4
+ class Real
5
+ def linode_boot(linode_id, config_id)
6
+ request(
7
+ :expects => 200,
8
+ :method => 'GET',
9
+ :query => { :api_action => 'linode.boot', :linodeId => linode_id, :configId => config_id }
10
+ )
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,21 @@
1
+ module Fog
2
+ module Linode
3
+ class Compute
4
+ class Real
5
+ def linode_config_create(linode_id, kernel_id, name, disk_list)
6
+ request(
7
+ :expects => 200,
8
+ :method => 'GET',
9
+ :query => {
10
+ :api_action => 'linode.config.create',
11
+ :linodeId => linode_id,
12
+ :kernelId => kernel_id,
13
+ :label => name,
14
+ :diskList => disk_list
15
+ }
16
+ )
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end