fog 0.8.1 → 0.8.2

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