fog 0.10.0 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (228) hide show
  1. data/.gitignore +2 -1
  2. data/Rakefile +90 -1
  3. data/bin/fog +5 -1
  4. data/changelog.txt +156 -0
  5. data/docs/_layouts/default.html +1 -0
  6. data/docs/about/press.markdown +4 -0
  7. data/docs/compute/index.markdown +4 -0
  8. data/docs/storage/index.markdown +4 -0
  9. data/fog.gemspec +3 -3
  10. data/lib/fog.rb +1 -1
  11. data/lib/fog/aws/iam.rb +7 -6
  12. data/lib/fog/aws/models/rds/server.rb +27 -23
  13. data/lib/fog/aws/parsers/iam/get_group.rb +2 -2
  14. data/lib/fog/aws/requests/iam/update_server_certificate.rb +37 -0
  15. data/lib/fog/bin.rb +2 -1
  16. data/lib/fog/bin/dynect.rb +30 -0
  17. data/lib/fog/bin/rackspace.rb +4 -0
  18. data/lib/fog/cdn.rb +4 -0
  19. data/lib/fog/cdn/aws.rb +6 -0
  20. data/lib/fog/cdn/parsers/aws/get_invalidation_list.rb +43 -0
  21. data/lib/fog/cdn/parsers/aws/get_streaming_distribution_list.rb +59 -0
  22. data/lib/fog/cdn/parsers/aws/streaming_distribution.rb +59 -0
  23. data/lib/fog/cdn/requests/aws/delete_streaming_distribution.rb +28 -0
  24. data/lib/fog/cdn/requests/aws/get_invalidation_list.rb +42 -0
  25. data/lib/fog/cdn/requests/aws/get_streaming_distribution.rb +50 -0
  26. data/lib/fog/cdn/requests/aws/get_streaming_distribution_list.rb +59 -0
  27. data/lib/fog/cdn/requests/aws/post_streaming_distribution.rb +78 -0
  28. data/lib/fog/cdn/requests/aws/put_streaming_distribution_config.rb +83 -0
  29. data/lib/fog/compute.rb +6 -2
  30. data/lib/fog/compute/aws.rb +12 -1
  31. data/lib/fog/compute/brightbox.rb +22 -12
  32. data/lib/fog/compute/models/aws/image.rb +5 -0
  33. data/lib/fog/compute/models/aws/server.rb +19 -22
  34. data/lib/fog/compute/models/aws/tag.rb +1 -1
  35. data/lib/fog/compute/models/bluebox/server.rb +2 -18
  36. data/lib/fog/compute/models/brightbox/account.rb +1 -1
  37. data/lib/fog/compute/models/brightbox/server.rb +2 -2
  38. data/lib/fog/compute/models/go_grid/server.rb +2 -18
  39. data/lib/fog/compute/models/linode/server.rb +5 -5
  40. data/lib/fog/compute/models/ninefold/server.rb +2 -2
  41. data/lib/fog/compute/models/rackspace/server.rb +2 -18
  42. data/lib/fog/compute/models/server.rb +27 -0
  43. data/lib/fog/compute/models/slicehost/server.rb +2 -18
  44. data/lib/fog/compute/models/storm_on_demand/server.rb +3 -3
  45. data/lib/fog/compute/models/voxel/server.rb +2 -2
  46. data/lib/fog/compute/parsers/aws/describe_images.rb +15 -3
  47. data/lib/fog/compute/parsers/aws/describe_instances.rb +1 -1
  48. data/lib/fog/compute/parsers/aws/describe_security_groups.rb +31 -7
  49. data/lib/fog/compute/requests/aws/describe_images.rb +33 -14
  50. data/lib/fog/compute/requests/aws/describe_volumes.rb +1 -0
  51. data/lib/fog/compute/requests/aws/modify_image_attribute.rb +39 -0
  52. data/lib/fog/compute/requests/aws/modify_instance_attribute.rb +37 -0
  53. data/lib/fog/compute/requests/aws/modify_snapshot_attribute.rb +10 -10
  54. data/lib/fog/compute/requests/aws/register_image.rb +54 -13
  55. data/lib/fog/compute/requests/aws/run_instances.rb +5 -0
  56. data/lib/fog/compute/requests/aws/stop_instances.rb +2 -1
  57. data/lib/fog/compute/requests/brightbox/activate_console_server.rb +2 -8
  58. data/lib/fog/compute/requests/brightbox/add_listeners_load_balancer.rb +2 -8
  59. data/lib/fog/compute/requests/brightbox/add_nodes_load_balancer.rb +2 -8
  60. data/lib/fog/compute/requests/brightbox/create_api_client.rb +2 -8
  61. data/lib/fog/compute/requests/brightbox/create_cloud_ip.rb +2 -8
  62. data/lib/fog/compute/requests/brightbox/create_image.rb +2 -8
  63. data/lib/fog/compute/requests/brightbox/create_load_balancer.rb +2 -8
  64. data/lib/fog/compute/requests/brightbox/create_server.rb +2 -8
  65. data/lib/fog/compute/requests/brightbox/destroy_api_client.rb +2 -8
  66. data/lib/fog/compute/requests/brightbox/destroy_cloud_ip.rb +2 -8
  67. data/lib/fog/compute/requests/brightbox/destroy_image.rb +2 -8
  68. data/lib/fog/compute/requests/brightbox/destroy_load_balancer.rb +2 -8
  69. data/lib/fog/compute/requests/brightbox/destroy_server.rb +2 -8
  70. data/lib/fog/compute/requests/brightbox/get_account.rb +2 -8
  71. data/lib/fog/compute/requests/brightbox/get_api_client.rb +2 -8
  72. data/lib/fog/compute/requests/brightbox/get_cloud_ip.rb +2 -8
  73. data/lib/fog/compute/requests/brightbox/get_image.rb +2 -8
  74. data/lib/fog/compute/requests/brightbox/get_interface.rb +2 -8
  75. data/lib/fog/compute/requests/brightbox/get_load_balancer.rb +2 -8
  76. data/lib/fog/compute/requests/brightbox/get_server.rb +2 -8
  77. data/lib/fog/compute/requests/brightbox/get_server_type.rb +2 -8
  78. data/lib/fog/compute/requests/brightbox/get_user.rb +2 -8
  79. data/lib/fog/compute/requests/brightbox/get_zone.rb +2 -8
  80. data/lib/fog/compute/requests/brightbox/list_api_clients.rb +2 -8
  81. data/lib/fog/compute/requests/brightbox/list_cloud_ips.rb +2 -8
  82. data/lib/fog/compute/requests/brightbox/list_images.rb +2 -8
  83. data/lib/fog/compute/requests/brightbox/list_load_balancers.rb +2 -8
  84. data/lib/fog/compute/requests/brightbox/list_server_types.rb +2 -8
  85. data/lib/fog/compute/requests/brightbox/list_servers.rb +2 -8
  86. data/lib/fog/compute/requests/brightbox/list_users.rb +2 -8
  87. data/lib/fog/compute/requests/brightbox/list_zones.rb +2 -8
  88. data/lib/fog/compute/requests/brightbox/map_cloud_ip.rb +2 -8
  89. data/lib/fog/compute/requests/brightbox/remove_listeners_load_balancer.rb +2 -8
  90. data/lib/fog/compute/requests/brightbox/remove_nodes_load_balancer.rb +2 -8
  91. data/lib/fog/compute/requests/brightbox/reset_ftp_password_account.rb +2 -8
  92. data/lib/fog/compute/requests/brightbox/shutdown_server.rb +2 -8
  93. data/lib/fog/compute/requests/brightbox/snapshot_server.rb +2 -8
  94. data/lib/fog/compute/requests/brightbox/start_server.rb +2 -8
  95. data/lib/fog/compute/requests/brightbox/stop_server.rb +2 -8
  96. data/lib/fog/compute/requests/brightbox/unmap_cloud_ip.rb +2 -8
  97. data/lib/fog/compute/requests/brightbox/update_account.rb +2 -8
  98. data/lib/fog/compute/requests/brightbox/update_api_client.rb +2 -8
  99. data/lib/fog/compute/requests/brightbox/update_image.rb +2 -8
  100. data/lib/fog/compute/requests/brightbox/update_load_balancer.rb +2 -8
  101. data/lib/fog/compute/requests/brightbox/update_server.rb +2 -8
  102. data/lib/fog/compute/requests/brightbox/update_user.rb +2 -8
  103. data/lib/fog/core.rb +1 -0
  104. data/lib/fog/core/credentials.rb +1 -1
  105. data/lib/fog/core/errors.rb +3 -1
  106. data/lib/fog/core/json.rb +20 -0
  107. data/lib/fog/core/provider.rb +3 -1
  108. data/lib/fog/core/service.rb +5 -0
  109. data/lib/fog/dns.rb +8 -1
  110. data/lib/fog/dns/dynect.rb +80 -0
  111. data/lib/fog/dns/models/dynect/record.rb +67 -0
  112. data/lib/fog/dns/models/dynect/records.rb +53 -0
  113. data/lib/fog/dns/models/dynect/zone.rb +60 -0
  114. data/lib/fog/dns/models/dynect/zones.rb +29 -0
  115. data/lib/fog/dns/requests/dynect/delete_record.rb +24 -0
  116. data/lib/fog/dns/requests/dynect/delete_zone.rb +21 -0
  117. data/lib/fog/dns/requests/dynect/get_node_list.rb +23 -0
  118. data/lib/fog/dns/requests/dynect/get_record.rb +25 -0
  119. data/lib/fog/dns/requests/dynect/get_zone.rb +22 -0
  120. data/lib/fog/dns/requests/dynect/post_record.rb +27 -0
  121. data/lib/fog/dns/requests/dynect/post_session.rb +36 -0
  122. data/lib/fog/dns/requests/dynect/post_zone.rb +32 -0
  123. data/lib/fog/dns/requests/dynect/put_zone.rb +26 -0
  124. data/lib/fog/dns/zerigo.rb +1 -1
  125. data/lib/fog/providers.rb +1 -0
  126. data/lib/fog/providers/dynect.rb +14 -0
  127. data/lib/fog/providers/rackspace.rb +1 -0
  128. data/lib/fog/rackspace/load_balancers.rb +179 -0
  129. data/lib/fog/rackspace/models/load_balancers/access_rule.rb +39 -0
  130. data/lib/fog/rackspace/models/load_balancers/access_rules.rb +29 -0
  131. data/lib/fog/rackspace/models/load_balancers/load_balancer.rb +216 -0
  132. data/lib/fog/rackspace/models/load_balancers/load_balancers.rb +27 -0
  133. data/lib/fog/rackspace/models/load_balancers/node.rb +58 -0
  134. data/lib/fog/rackspace/models/load_balancers/nodes.rb +29 -0
  135. data/lib/fog/rackspace/models/load_balancers/virtual_ip.rb +35 -0
  136. data/lib/fog/rackspace/models/load_balancers/virtual_ips.rb +32 -0
  137. data/lib/fog/rackspace/requests/load_balancers/create_access_rule.rb +24 -0
  138. data/lib/fog/rackspace/requests/load_balancers/create_load_balancer.rb +26 -0
  139. data/lib/fog/rackspace/requests/load_balancers/create_node.rb +27 -0
  140. data/lib/fog/rackspace/requests/load_balancers/create_virtual_ip.rb +20 -0
  141. data/lib/fog/rackspace/requests/load_balancers/delete_access_rule.rb +15 -0
  142. data/lib/fog/rackspace/requests/load_balancers/delete_all_access_rules.rb +15 -0
  143. data/lib/fog/rackspace/requests/load_balancers/delete_load_balancer.rb +15 -0
  144. data/lib/fog/rackspace/requests/load_balancers/delete_node.rb +15 -0
  145. data/lib/fog/rackspace/requests/load_balancers/delete_nodes.rb +17 -0
  146. data/lib/fog/rackspace/requests/load_balancers/delete_virtual_ip.rb +15 -0
  147. data/lib/fog/rackspace/requests/load_balancers/get_connection_logging.rb +15 -0
  148. data/lib/fog/rackspace/requests/load_balancers/get_connection_throttling.rb +15 -0
  149. data/lib/fog/rackspace/requests/load_balancers/get_load_balancer.rb +15 -0
  150. data/lib/fog/rackspace/requests/load_balancers/get_load_balancer_usage.rb +21 -0
  151. data/lib/fog/rackspace/requests/load_balancers/get_monitor.rb +15 -0
  152. data/lib/fog/rackspace/requests/load_balancers/get_node.rb +15 -0
  153. data/lib/fog/rackspace/requests/load_balancers/get_session_persistence.rb +15 -0
  154. data/lib/fog/rackspace/requests/load_balancers/get_usage.rb +20 -0
  155. data/lib/fog/rackspace/requests/load_balancers/list_access_rules.rb +15 -0
  156. data/lib/fog/rackspace/requests/load_balancers/list_algorithms.rb +15 -0
  157. data/lib/fog/rackspace/requests/load_balancers/list_load_balancers.rb +15 -0
  158. data/lib/fog/rackspace/requests/load_balancers/list_nodes.rb +15 -0
  159. data/lib/fog/rackspace/requests/load_balancers/list_protocols.rb +15 -0
  160. data/lib/fog/rackspace/requests/load_balancers/list_virtual_ips.rb +15 -0
  161. data/lib/fog/rackspace/requests/load_balancers/remove_connection_throttling.rb +15 -0
  162. data/lib/fog/rackspace/requests/load_balancers/remove_monitor.rb +15 -0
  163. data/lib/fog/rackspace/requests/load_balancers/remove_session_persistence.rb +15 -0
  164. data/lib/fog/rackspace/requests/load_balancers/set_connection_logging.rb +21 -0
  165. data/lib/fog/rackspace/requests/load_balancers/set_connection_throttling.rb +22 -0
  166. data/lib/fog/rackspace/requests/load_balancers/set_monitor.rb +31 -0
  167. data/lib/fog/rackspace/requests/load_balancers/set_session_persistence.rb +21 -0
  168. data/lib/fog/rackspace/requests/load_balancers/update_load_balancer.rb +24 -0
  169. data/lib/fog/rackspace/requests/load_balancers/update_node.rb +26 -0
  170. data/lib/fog/storage.rb +5 -1
  171. data/lib/fog/storage/aws.rb +3 -0
  172. data/lib/fog/storage/models/aws/directory.rb +1 -3
  173. data/lib/fog/storage/models/aws/file.rb +1 -1
  174. data/lib/fog/storage/models/google/file.rb +1 -1
  175. data/lib/fog/storage/models/local/file.rb +8 -6
  176. data/lib/fog/storage/models/ninefold/file.rb +0 -1
  177. data/lib/fog/storage/requests/aws/copy_object.rb +1 -1
  178. data/lib/fog/storage/requests/aws/get_bucket.rb +14 -11
  179. data/lib/fog/storage/requests/aws/post_object_hidden_fields.rb +2 -4
  180. data/tests/aws/models/rds/server_tests.rb +4 -4
  181. data/tests/compute/models/aws/server_tests.rb +15 -1
  182. data/tests/compute/requests/aws/helper.rb +0 -4
  183. data/tests/compute/requests/aws/image_tests.rb +40 -9
  184. data/tests/compute/requests/brightbox/account_tests.rb +1 -1
  185. data/tests/compute/requests/brightbox/helper.rb +3 -0
  186. data/tests/compute/requests/brightbox/load_balancer_tests.rb +1 -1
  187. data/tests/compute/requests/voxel/server_tests.rb +2 -2
  188. data/tests/dns/helper.rb +18 -0
  189. data/tests/dns/models/record_tests.rb +3 -2
  190. data/tests/dns/models/records_tests.rb +2 -2
  191. data/tests/dns/models/zone_tests.rb +2 -2
  192. data/tests/dns/models/zones_tests.rb +1 -1
  193. data/tests/dns/requests/bluebox/dns_tests.rb +0 -12
  194. data/tests/dns/requests/dnsimple/dns_tests.rb +0 -12
  195. data/tests/dns/requests/dnsmadeeasy/dns_tests.rb +0 -12
  196. data/tests/dns/requests/dynect/dns_tests.rb +132 -0
  197. data/tests/dns/requests/linode/dns_tests.rb +1 -13
  198. data/tests/dns/requests/slicehost/dns_tests.rb +1 -13
  199. data/tests/helper.rb +1 -1
  200. data/tests/helpers/collection_helper.rb +2 -2
  201. data/tests/helpers/formats_helper.rb +2 -0
  202. data/tests/helpers/mock_helper.rb +4 -1
  203. data/tests/rackspace/helper.rb +24 -0
  204. data/tests/rackspace/load_balancer_tests.rb +21 -0
  205. data/tests/rackspace/models/access_list_tests.rb +12 -0
  206. data/tests/rackspace/models/access_lists_tests.rb +12 -0
  207. data/tests/rackspace/models/load_balancer_tests.rb +116 -0
  208. data/tests/rackspace/models/load_balancers_tests.rb +19 -0
  209. data/tests/rackspace/models/node_tests.rb +19 -0
  210. data/tests/rackspace/models/nodes_tests.rb +12 -0
  211. data/tests/rackspace/models/virtual_ip_tests.rb +16 -0
  212. data/tests/rackspace/models/virtual_ips_tests.rb +12 -0
  213. data/tests/rackspace/requests/access_list_tests.rb +56 -0
  214. data/tests/rackspace/requests/algorithm_tests.rb +19 -0
  215. data/tests/rackspace/requests/connection_logging_tests.rb +25 -0
  216. data/tests/rackspace/requests/connection_throttling_tests.rb +37 -0
  217. data/tests/rackspace/requests/helper.rb +112 -0
  218. data/tests/rackspace/requests/load_balancer_tests.rb +63 -0
  219. data/tests/rackspace/requests/load_balancer_usage_tests.rb +19 -0
  220. data/tests/rackspace/requests/monitor_tests.rb +46 -0
  221. data/tests/rackspace/requests/node_tests.rb +87 -0
  222. data/tests/rackspace/requests/protocol_tests.rb +21 -0
  223. data/tests/rackspace/requests/session_persistence_tests.rb +33 -0
  224. data/tests/rackspace/requests/usage_tests.rb +17 -0
  225. data/tests/rackspace/requests/virtual_ip_tests.rb +40 -0
  226. data/tests/storage/requests/aws/bucket_tests.rb +53 -0
  227. metadata +127 -8
  228. data/lib/fog/compute/requests/aws/modify_image_attributes.rb +0 -37
@@ -23,7 +23,7 @@ module Fog
23
23
  attribute :telephone_verified
24
24
  attribute :ram_limit
25
25
  attribute :ram_used
26
- attribute :limits_cloudips
26
+ attribute :cloud_ips_limit
27
27
  attribute :library_ftp_host
28
28
  attribute :library_ftp_user
29
29
  # This is always returned as null/nil unless performing a reset_ftp_password request
@@ -1,10 +1,10 @@
1
- require 'fog/core/model'
1
+ require 'fog/compute/models/server'
2
2
 
3
3
  module Fog
4
4
  module Compute
5
5
  class Brightbox
6
6
 
7
- class Server < Fog::Model
7
+ class Server < Fog::Compute::Server
8
8
 
9
9
  identity :id
10
10
 
@@ -1,4 +1,4 @@
1
- require 'fog/core/model'
1
+ require 'fog/compute/models/server'
2
2
 
3
3
  module Fog
4
4
  module Compute
@@ -6,7 +6,7 @@ module Fog
6
6
 
7
7
  class BlockInstantiationError < StandardError; end
8
8
 
9
- class Server < Fog::Model
9
+ class Server < Fog::Compute::Server
10
10
  extend Fog::Deprecation
11
11
  deprecate(:ip, :public_ip_address)
12
12
 
@@ -70,22 +70,6 @@ module Fog
70
70
  true
71
71
  end
72
72
 
73
- def ssh(commands)
74
- requires :identity, :public_ip_address, :username
75
-
76
- options = {}
77
- options[:key_data] = [private_key] if private_key
78
- Fog::SSH.new(public_ip_address, username, options).run(commands)
79
- end
80
-
81
- def scp(local_path, remote_path, upload_options = {})
82
- requires :public_ip_address, :username
83
-
84
- scp_options = {}
85
- scp_options[:key_data] = [private_key] if private_key
86
- Fog::SCP.new(public_ip_address, username, scp_options).upload(local_path, remote_path, upload_options)
87
- end
88
-
89
73
  def setup(credentials = {})
90
74
  requires :identity, :public_ip_address, :public_key, :username
91
75
  Fog::SSH.new(public_ip_address, username, credentials).run([
@@ -1,9 +1,9 @@
1
- require 'fog/core/model'
1
+ require 'fog/compute/models/server'
2
2
 
3
3
  module Fog
4
4
  module Compute
5
5
  class Linode
6
- class Server < Fog::Model
6
+ class Server < Fog::Compute::Server
7
7
  attr_reader :stack_script
8
8
  identity :id
9
9
  attribute :name
@@ -31,7 +31,7 @@ module Fog
31
31
 
32
32
  def boot
33
33
  connection.linode_boot id, config
34
- end
34
+ end
35
35
 
36
36
  def save
37
37
  raise Fog::Errors::Error.new('Resaving an existing object may create a duplicate') if identity
@@ -61,14 +61,14 @@ module Fog
61
61
  def config
62
62
  connection.linode_config_list(id).body['DATA'].first['ConfigID']
63
63
  end
64
-
64
+
65
65
  def create_linode
66
66
  self.id = connection.linode_create(@data_center.id, @flavor.id, @payment_terms).body['DATA']['LinodeID']
67
67
  connection.linode_update id, :label => @name
68
68
  ips.create
69
69
  reload
70
70
  end
71
-
71
+
72
72
  def create_disks
73
73
  @swap = disks.create :type => :swap, :name => @name, :size => @flavor.ram
74
74
  @disk = disks.create(:type => @type, :image => @image, :stack_script => @stack_script,
@@ -1,10 +1,10 @@
1
- require 'fog/core/model'
1
+ require 'fog/compute/models/server'
2
2
 
3
3
  module Fog
4
4
  module Compute
5
5
  class Ninefold
6
6
 
7
- class Server < Fog::Model
7
+ class Server < Fog::Compute::Server
8
8
  extend Fog::Deprecation
9
9
  deprecate :serviceofferingid, :flavor_id
10
10
  deprecate :templateid, :image_id
@@ -1,10 +1,10 @@
1
- require 'fog/core/model'
1
+ require 'fog/compute/models/server'
2
2
 
3
3
  module Fog
4
4
  module Compute
5
5
  class Rackspace
6
6
 
7
- class Server < Fog::Model
7
+ class Server < Fog::Compute::Server
8
8
 
9
9
  identity :id
10
10
 
@@ -112,22 +112,6 @@ module Fog
112
112
  retry
113
113
  end
114
114
 
115
- def ssh(commands)
116
- requires :public_ip_address, :identity, :username
117
-
118
- options = {}
119
- options[:key_data] = [private_key] if private_key
120
- Fog::SSH.new(public_ip_address, username, options).run(commands)
121
- end
122
-
123
- def scp(local_path, remote_path, upload_options = {})
124
- requires :public_ip_address, :username
125
-
126
- scp_options = {}
127
- scp_options[:key_data] = [private_key] if private_key
128
- Fog::SCP.new(public_ip_address, username, scp_options).upload(local_path, remote_path, upload_options)
129
- end
130
-
131
115
  def username
132
116
  @username ||= 'root'
133
117
  end
@@ -0,0 +1,27 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Compute
5
+ class Server < Fog::Model
6
+
7
+ def scp(local_path, remote_path, upload_options = {})
8
+ require 'net/scp'
9
+ requires :public_ip_address, :username
10
+
11
+ scp_options = {}
12
+ scp_options[:key_data] = [private_key] if private_key
13
+ Fog::SCP.new(public_ip_address, username, scp_options).upload(local_path, remote_path, upload_options)
14
+ end
15
+
16
+ def ssh(commands)
17
+ require 'net/ssh'
18
+ requires :public_ip_address, :username
19
+
20
+ options = {}
21
+ options[:key_data] = [private_key] if private_key
22
+ Fog::SSH.new(public_ip_address, username, options).run(commands)
23
+ end
24
+
25
+ end
26
+ end
27
+ end
@@ -1,10 +1,10 @@
1
- require 'fog/core/model'
1
+ require 'fog/compute/models/server'
2
2
 
3
3
  module Fog
4
4
  module Compute
5
5
  class Slicehost
6
6
 
7
- class Server < Fog::Model
7
+ class Server < Fog::Compute::Server
8
8
 
9
9
  identity :id
10
10
 
@@ -102,22 +102,6 @@ module Fog
102
102
  retry
103
103
  end
104
104
 
105
- def ssh(commands)
106
- requires :addresses, :identity, :username
107
-
108
- options = {}
109
- options[:key_data] = [private_key] if private_key
110
- Fog::SSH.new(addresses.first, username, options).run(commands)
111
- end
112
-
113
- def scp(local_path, remote_path, upload_options = {})
114
- requires :addresses, :username
115
-
116
- scp_options = {}
117
- scp_options[:key_data] = [private_key] if private_key
118
- Fog::SCP.new(addresses.first, username, scp_options).upload(local_path, remote_path, upload_options)
119
- end
120
-
121
105
  def username
122
106
  @username ||= 'root'
123
107
  end
@@ -1,10 +1,10 @@
1
- require 'fog/core/model'
1
+ require 'fog/compute/models/server'
2
2
 
3
3
  module Fog
4
4
  module Compute
5
5
  class StormOnDemand
6
6
 
7
- class Server < Fog::Model
7
+ class Server < Fog::Compute::Server
8
8
  identity :uniq_id
9
9
 
10
10
  attribute :accnt
@@ -25,7 +25,7 @@ module Fog
25
25
  attribute :template_description
26
26
  attribute :zone
27
27
  attribute :active
28
-
28
+
29
29
  attr_writer :password, :username
30
30
 
31
31
  def initialize(attributes={})
@@ -1,10 +1,10 @@
1
- require 'fog/core/model'
1
+ require 'fog/compute/models/server'
2
2
 
3
3
  module Fog
4
4
  module Compute
5
5
  class Voxel
6
6
 
7
- class Server < Fog::Model
7
+ class Server < Fog::Compute::Server
8
8
 
9
9
  identity :id
10
10
 
@@ -7,8 +7,9 @@ module Fog
7
7
 
8
8
  def reset
9
9
  @block_device_mapping = {}
10
- @image = { 'blockDeviceMapping' => [], 'productCodes' => [], 'tagSet' => {} }
10
+ @image = { 'blockDeviceMapping' => [], 'productCodes' => [], 'stateReason' => {}, 'tagSet' => {} }
11
11
  @response = { 'imagesSet' => [] }
12
+ @state_reason = {}
12
13
  @tag = {}
13
14
  end
14
15
 
@@ -17,6 +18,8 @@ module Fog
17
18
  case name
18
19
  when 'blockDeviceMapping'
19
20
  @in_block_device_mapping = true
21
+ when 'stateReason'
22
+ @in_state_reason = true
20
23
  when 'tagSet'
21
24
  @in_tag_set = true
22
25
  end
@@ -45,9 +48,18 @@ module Fog
45
48
  @image['blockDeviceMapping'] << @block_device_mapping
46
49
  @block_device_mapping = {}
47
50
  end
51
+ elsif @in_state_reason
52
+ case name
53
+ when 'code', 'message'
54
+ @state_reason[name] = value
55
+ when 'stateReason'
56
+ @image['stateReason'] = @state_reason
57
+ @state_reason = {}
58
+ @in_state_reason = false
59
+ end
48
60
  else
49
61
  case name
50
- when 'architecture', 'description', 'imageId', 'imageLocation', 'imageOwnerId', 'imageState', 'imageType', 'kernelId', 'name', 'platform', 'ramdiskId', 'rootDeviceType','rootDeviceName','virtualizationType'
62
+ when 'architecture', 'description', 'hypervisor', 'imageId', 'imageLocation', 'imageOwnerAlias', 'imageOwnerId', 'imageState', 'imageType', 'kernelId', 'name', 'platform', 'ramdiskId', 'rootDeviceType','rootDeviceName','virtualizationType'
51
63
  @image[name] = value
52
64
  when 'isPublic'
53
65
  if value == 'true'
@@ -57,7 +69,7 @@ module Fog
57
69
  end
58
70
  when 'item'
59
71
  @response['imagesSet'] << @image
60
- @image = { 'blockDeviceMapping' => [], 'productCodes' => [], 'tagSet' => {} }
72
+ @image = { 'blockDeviceMapping' => [], 'productCodes' => [], 'stateReason' => {}, 'tagSet' => {} }
61
73
  when 'productCode'
62
74
  @image['productCodes'] << value
63
75
  when 'requestId'
@@ -30,7 +30,7 @@ module Fog
30
30
  @instance['placement'][name] = value
31
31
  when 'architecture', 'clientToken', 'dnsName', 'imageId',
32
32
  'instanceId', 'instanceType', 'ipAddress', 'kernelId',
33
- 'keyName', 'privateDnsName', 'privateIpAddress', 'ramdiskId',
33
+ 'keyName', 'platform', 'privateDnsName', 'privateIpAddress', 'ramdiskId',
34
34
  'reason', 'rootDeviceType'
35
35
  @instance[name] = value
36
36
  when 'attachTime'
@@ -8,8 +8,9 @@ module Fog
8
8
  def reset
9
9
  @group = {}
10
10
  @ip_permission = { 'groups' => [], 'ipRanges' => []}
11
+ @ip_permission_egress = { 'groups' => [], 'ipRanges' => []}
11
12
  @ip_range = {}
12
- @security_group = { 'ipPermissions' => [] }
13
+ @security_group = { 'ipPermissions' => [], 'ipPermissionsEgress' => [] }
13
14
  @response = { 'securityGroupInfo' => [] }
14
15
  end
15
16
 
@@ -20,6 +21,8 @@ module Fog
20
21
  @in_groups = true
21
22
  when 'ipPermissions'
22
23
  @in_ip_permissions = true
24
+ when 'ipPermissionsEgress'
25
+ @in_ip_permissions_egress = true
23
26
  when 'ipRanges'
24
27
  @in_ip_ranges = true
25
28
  end
@@ -30,7 +33,11 @@ module Fog
30
33
  when 'cidrIp'
31
34
  @ip_range[name] = value
32
35
  when 'fromPort', 'toPort'
33
- @ip_permission[name] = value.to_i
36
+ if @in_ip_permissions_egress
37
+ @ip_permission_egress[name] = value.to_i
38
+ else
39
+ @ip_permission[name] = value.to_i
40
+ end
34
41
  when 'groups'
35
42
  @in_groups = false
36
43
  when 'groupDescription', 'ownerId'
@@ -43,23 +50,40 @@ module Fog
43
50
  end
44
51
  when 'ipPermissions'
45
52
  @in_ip_permissions = false
53
+ when 'ipPermissionsEgress'
54
+ @in_ip_permissions_egress = false
46
55
  when 'ipProtocol'
47
- @ip_permission[name] = value
56
+ if @in_ip_permissions_egress
57
+ @ip_permission_egress[name] = value
58
+ else
59
+ @ip_permission[name] = value
60
+ end
48
61
  when 'ipRanges'
49
62
  @in_ip_ranges = false
50
63
  when 'item'
51
64
  if @in_groups
52
- @ip_permission['groups'] << @group
65
+ if @in_ip_permissions_egress
66
+ @ip_permission_egress['group'] << @group
67
+ else
68
+ @ip_permission['groups'] << @group
69
+ end
53
70
  @group = {}
54
71
  elsif @in_ip_ranges
55
- @ip_permission['ipRanges'] << @ip_range
72
+ if @in_ip_permissions_egress
73
+ @ip_permission_egress['ipRanges'] << @ip_range
74
+ else
75
+ @ip_permission['ipRanges'] << @ip_range
76
+ end
56
77
  @ip_range = {}
57
78
  elsif @in_ip_permissions
58
79
  @security_group['ipPermissions'] << @ip_permission
59
80
  @ip_permission = { 'groups' => [], 'ipRanges' => []}
60
- else
81
+ elsif @in_ip_permissions_egress
82
+ @security_group['ipPermissionsEgress'] << @ip_permission_egress
83
+ @ip_permission_egress = { 'groups' => [], 'ipRanges' => []}
84
+ else
61
85
  @response['securityGroupInfo'] << @security_group
62
- @security_group = { 'ipPermissions' => [] }
86
+ @security_group = { 'ipPermissions' => [], 'ipPermissionsEgress' => [] }
63
87
  end
64
88
  when 'requestId'
65
89
  @response[name] = value
@@ -25,6 +25,7 @@ module Fog
25
25
  # * 'description'<~String> - Description of image
26
26
  # * 'imageId'<~String> - Id of the image
27
27
  # * 'imageLocation'<~String> - Location of the image
28
+ # * 'imageOwnerAlias'<~String> - Alias of the owner of the image
28
29
  # * 'imageOwnerId'<~String> - Id of the owner of the image
29
30
  # * 'imageState'<~String> - State of the image
30
31
  # * 'imageType'<~String> - Type of the image
@@ -59,22 +60,25 @@ module Fog
59
60
 
60
61
  def describe_images(filters = {})
61
62
  unless filters.is_a?(Hash)
62
- Formatador.display_line("[yellow][WARN] describe_images with #{filters.class} param is deprecated, use describe_snapshots('snapshot-id' => []) instead[/] [light_black](#{caller.first})[/]")
63
- filters = {'snapshot-id' => [*filters]}
63
+ Formatador.display_line("[yellow][WARN] describe_images with #{filters.class} param is deprecated, use describe_images('image-id' => []) instead[/] [light_black](#{caller.first})[/]")
64
+ filters = {'image-id' => [*filters]}
64
65
  end
65
-
66
+
66
67
  if filters.keys.any? {|key| key =~ /^block-device/}
67
68
  Formatador.display_line("[yellow][WARN] describe_images block-device-mapping filters are not yet mocked[/] [light_black](#{caller.first})[/]")
68
69
  Fog::Mock.not_implemented
69
70
  end
70
-
71
- if filters.keys.any? {|key| key =~ /^tag/}
72
- Formatador.display_line("[yellow][WARN] describe_images tag filters are not yet mocked[/] [light_black](#{caller.first})[/]")
73
- Fog::Mock.not_implemented
71
+
72
+ if owner = filters.delete('Owner')
73
+ if owner == 'self'
74
+ filters['owner-id'] = self.data[:owner_id]
75
+ else
76
+ filters['owner-alias'] = owner
77
+ end
74
78
  end
75
-
79
+
76
80
  response = Excon::Response.new
77
-
81
+
78
82
  aliases = {
79
83
  'architecture' => 'architecture',
80
84
  'description' => 'description',
@@ -84,7 +88,8 @@ module Fog
84
88
  'is-public' => 'isPublic',
85
89
  'kernel-id' => 'kernelId',
86
90
  'manifest-location' => 'manifestLocation',
87
- 'name' => 'name',
91
+ 'name' => 'name',
92
+ 'owner-alias' => 'imageOwnerAlias',
88
93
  'owner-id' => 'imageOwnerId',
89
94
  'ramdisk-id' => 'ramdiskId',
90
95
  'root-device-name' => 'rootDeviceName',
@@ -92,12 +97,26 @@ module Fog
92
97
  'state' => 'imageState',
93
98
  'virtualization-type' => 'virtualizationType'
94
99
  }
95
-
100
+
96
101
  image_set = self.data[:images].values
97
-
102
+
98
103
  for filter_key, filter_value in filters
99
- aliased_key = aliases[filter_key]
100
- image_set = image_set.reject{|image| ![*filter_value].include?(image[aliased_key])}
104
+ if tag_key = filter_key.split('tag:')[1]
105
+ image_set = image_set.reject{|image| ![*filter_value].include?(image['tagSet'][tag_key])}
106
+ else
107
+ aliased_key = aliases[filter_key]
108
+ image_set = image_set.reject{|image| ![*filter_value].include?(image[aliased_key])}
109
+ end
110
+ end
111
+
112
+ image_set = image_set.map do |image|
113
+ case image['imageState']
114
+ when 'pending'
115
+ if Time.now - image['registered'] >= Fog::Mock.delay
116
+ image['imageState'] = 'available'
117
+ end
118
+ end
119
+ image.reject { |key, value| ['registered'].include?(key) }
101
120
  end
102
121
 
103
122
  response.status = 200