fog-maestrodev 1.7.0.20121114190951 → 1.8.0.20130109172219

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 (964) hide show
  1. data/.gitignore +2 -2
  2. data/README.md +48 -37
  3. data/RELEASE.md +39 -0
  4. data/Rakefile +48 -312
  5. data/bin/fog +4 -0
  6. data/changelog.txt +153 -0
  7. data/docs/storage/aws.markdown +21 -0
  8. data/fog.gemspec +3 -3
  9. data/lib/fog.rb +0 -5
  10. data/lib/fog/atmos/models/storage/directories.rb +2 -2
  11. data/lib/fog/atmos/models/storage/directory.rb +11 -11
  12. data/lib/fog/atmos/models/storage/file.rb +8 -8
  13. data/lib/fog/atmos/models/storage/files.rb +3 -3
  14. data/lib/fog/aws.rb +1 -0
  15. data/lib/fog/aws/auto_scaling.rb +1 -1
  16. data/lib/fog/aws/cloud_watch.rb +1 -1
  17. data/lib/fog/aws/compute.rb +4 -2
  18. data/lib/fog/aws/dynamodb.rb +30 -64
  19. data/lib/fog/aws/elb.rb +1 -1
  20. data/lib/fog/aws/glacier.rb +1 -1
  21. data/lib/fog/aws/iam.rb +1 -0
  22. data/lib/fog/aws/models/auto_scaling/activities.rb +2 -2
  23. data/lib/fog/aws/models/auto_scaling/activity.rb +1 -1
  24. data/lib/fog/aws/models/auto_scaling/configuration.rb +2 -2
  25. data/lib/fog/aws/models/auto_scaling/configurations.rb +2 -2
  26. data/lib/fog/aws/models/auto_scaling/group.rb +13 -13
  27. data/lib/fog/aws/models/auto_scaling/groups.rb +2 -2
  28. data/lib/fog/aws/models/auto_scaling/instance.rb +5 -5
  29. data/lib/fog/aws/models/auto_scaling/instances.rb +2 -2
  30. data/lib/fog/aws/models/auto_scaling/policies.rb +2 -2
  31. data/lib/fog/aws/models/auto_scaling/policy.rb +2 -2
  32. data/lib/fog/aws/models/beanstalk/application.rb +7 -7
  33. data/lib/fog/aws/models/beanstalk/applications.rb +2 -2
  34. data/lib/fog/aws/models/beanstalk/environment.rb +10 -10
  35. data/lib/fog/aws/models/beanstalk/environments.rb +2 -2
  36. data/lib/fog/aws/models/beanstalk/events.rb +1 -1
  37. data/lib/fog/aws/models/beanstalk/template.rb +5 -5
  38. data/lib/fog/aws/models/beanstalk/templates.rb +3 -3
  39. data/lib/fog/aws/models/beanstalk/version.rb +6 -6
  40. data/lib/fog/aws/models/beanstalk/versions.rb +2 -2
  41. data/lib/fog/aws/models/cdn/distribution.rb +4 -4
  42. data/lib/fog/aws/models/cdn/distributions.rb +2 -2
  43. data/lib/fog/aws/models/cdn/invalidation.rb +2 -2
  44. data/lib/fog/aws/models/cdn/invalidations.rb +2 -2
  45. data/lib/fog/aws/models/cdn/streaming_distribution.rb +3 -3
  46. data/lib/fog/aws/models/cdn/streaming_distributions.rb +2 -2
  47. data/lib/fog/aws/models/cloud_watch/alarm.rb +2 -2
  48. data/lib/fog/aws/models/cloud_watch/alarm_data.rb +9 -9
  49. data/lib/fog/aws/models/cloud_watch/alarm_datum.rb +3 -3
  50. data/lib/fog/aws/models/cloud_watch/alarm_histories.rb +1 -1
  51. data/lib/fog/aws/models/cloud_watch/alarms.rb +7 -7
  52. data/lib/fog/aws/models/cloud_watch/metric_statistic.rb +2 -2
  53. data/lib/fog/aws/models/cloud_watch/metric_statistics.rb +3 -3
  54. data/lib/fog/aws/models/cloud_watch/metrics.rb +27 -7
  55. data/lib/fog/aws/models/compute/address.rb +9 -9
  56. data/lib/fog/aws/models/compute/addresses.rb +2 -2
  57. data/lib/fog/aws/models/compute/dhcp_option.rb +3 -3
  58. data/lib/fog/aws/models/compute/dhcp_options.rb +2 -2
  59. data/lib/fog/aws/models/compute/flavors.rb +1 -1
  60. data/lib/fog/aws/models/compute/image.rb +2 -2
  61. data/lib/fog/aws/models/compute/images.rb +5 -5
  62. data/lib/fog/aws/models/compute/internet_gateway.rb +4 -4
  63. data/lib/fog/aws/models/compute/internet_gateways.rb +2 -2
  64. data/lib/fog/aws/models/compute/key_pair.rb +4 -4
  65. data/lib/fog/aws/models/compute/key_pairs.rb +2 -2
  66. data/lib/fog/aws/models/compute/network_interface.rb +3 -3
  67. data/lib/fog/aws/models/compute/network_interfaces.rb +2 -2
  68. data/lib/fog/aws/models/compute/security_group.rb +7 -7
  69. data/lib/fog/aws/models/compute/security_groups.rb +3 -3
  70. data/lib/fog/aws/models/compute/server.rb +22 -16
  71. data/lib/fog/aws/models/compute/servers.rb +6 -6
  72. data/lib/fog/aws/models/compute/snapshot.rb +4 -4
  73. data/lib/fog/aws/models/compute/snapshots.rb +3 -3
  74. data/lib/fog/aws/models/compute/spot_request.rb +18 -8
  75. data/lib/fog/aws/models/compute/spot_requests.rb +11 -11
  76. data/lib/fog/aws/models/compute/subnet.rb +3 -3
  77. data/lib/fog/aws/models/compute/subnets.rb +2 -2
  78. data/lib/fog/aws/models/compute/tag.rb +2 -2
  79. data/lib/fog/aws/models/compute/tags.rb +3 -3
  80. data/lib/fog/aws/models/compute/volume.rb +12 -13
  81. data/lib/fog/aws/models/compute/volumes.rb +2 -2
  82. data/lib/fog/aws/models/compute/vpc.rb +2 -2
  83. data/lib/fog/aws/models/compute/vpcs.rb +2 -2
  84. data/lib/fog/aws/models/dns/record.rb +4 -4
  85. data/lib/fog/aws/models/dns/records.rb +3 -3
  86. data/lib/fog/aws/models/dns/zone.rb +3 -3
  87. data/lib/fog/aws/models/dns/zones.rb +2 -2
  88. data/lib/fog/aws/models/elasticache/cluster.rb +2 -2
  89. data/lib/fog/aws/models/elasticache/clusters.rb +2 -2
  90. data/lib/fog/aws/models/elasticache/parameter_group.rb +2 -2
  91. data/lib/fog/aws/models/elasticache/parameter_groups.rb +2 -2
  92. data/lib/fog/aws/models/elasticache/security_group.rb +4 -4
  93. data/lib/fog/aws/models/elasticache/security_groups.rb +2 -2
  94. data/lib/fog/aws/models/elb/listener.rb +2 -2
  95. data/lib/fog/aws/models/elb/load_balancer.rb +19 -19
  96. data/lib/fog/aws/models/elb/load_balancers.rb +2 -2
  97. data/lib/fog/aws/models/elb/policy.rb +3 -3
  98. data/lib/fog/aws/models/glacier/archive.rb +7 -7
  99. data/lib/fog/aws/models/glacier/job.rb +2 -2
  100. data/lib/fog/aws/models/glacier/jobs.rb +3 -3
  101. data/lib/fog/aws/models/glacier/vault.rb +7 -7
  102. data/lib/fog/aws/models/glacier/vaults.rb +2 -2
  103. data/lib/fog/aws/models/iam/access_key.rb +8 -8
  104. data/lib/fog/aws/models/iam/access_keys.rb +7 -7
  105. data/lib/fog/aws/models/iam/policies.rb +10 -10
  106. data/lib/fog/aws/models/iam/policy.rb +8 -8
  107. data/lib/fog/aws/models/iam/user.rb +10 -10
  108. data/lib/fog/aws/models/iam/users.rb +2 -2
  109. data/lib/fog/aws/models/rds/parameter.rb +2 -2
  110. data/lib/fog/aws/models/rds/parameter_group.rb +10 -10
  111. data/lib/fog/aws/models/rds/parameter_groups.rb +3 -3
  112. data/lib/fog/aws/models/rds/parameters.rb +2 -2
  113. data/lib/fog/aws/models/rds/security_group.rb +4 -4
  114. data/lib/fog/aws/models/rds/security_groups.rb +2 -2
  115. data/lib/fog/aws/models/rds/server.rb +10 -10
  116. data/lib/fog/aws/models/rds/servers.rb +3 -3
  117. data/lib/fog/aws/models/rds/snapshot.rb +3 -3
  118. data/lib/fog/aws/models/rds/snapshots.rb +3 -3
  119. data/lib/fog/aws/models/rds/subnet_groups.rb +2 -2
  120. data/lib/fog/aws/models/storage/directories.rb +2 -2
  121. data/lib/fog/aws/models/storage/directory.rb +13 -13
  122. data/lib/fog/aws/models/storage/file.rb +106 -14
  123. data/lib/fog/aws/models/storage/files.rb +5 -5
  124. data/lib/fog/aws/models/storage/version.rb +2 -2
  125. data/lib/fog/aws/models/storage/versions.rb +3 -3
  126. data/lib/fog/aws/parsers/compute/copy_snapshot.rb +22 -0
  127. data/lib/fog/aws/parsers/compute/describe_instances.rb +3 -1
  128. data/lib/fog/aws/parsers/compute/describe_reserved_instances_offerings.rb +1 -1
  129. data/lib/fog/aws/parsers/compute/spot_instance_requests.rb +5 -3
  130. data/lib/fog/aws/parsers/storage/cors_configuration.rb +41 -0
  131. data/lib/fog/aws/parsers/storage/delete_multiple_objects.rb +50 -0
  132. data/lib/fog/aws/rds.rb +2 -2
  133. data/lib/fog/aws/requests/auto_scaling/resume_processes.rb +10 -1
  134. data/lib/fog/aws/requests/auto_scaling/suspend_processes.rb +7 -2
  135. data/lib/fog/aws/requests/cloud_watch/list_metrics.rb +27 -0
  136. data/lib/fog/aws/requests/compute/copy_snapshot.rb +58 -0
  137. data/lib/fog/aws/requests/compute/describe_availability_zones.rb +3 -0
  138. data/lib/fog/aws/requests/compute/describe_reserved_instances_offerings.rb +11 -8
  139. data/lib/fog/aws/requests/compute/modify_volume_attribute.rb +51 -0
  140. data/lib/fog/aws/requests/dns/change_resource_record_sets.rb +1 -0
  141. data/lib/fog/aws/requests/storage/abort_multipart_upload.rb +5 -7
  142. data/lib/fog/aws/requests/storage/complete_multipart_upload.rb +12 -16
  143. data/lib/fog/aws/requests/storage/copy_object.rb +19 -20
  144. data/lib/fog/aws/requests/storage/cors_utils.rb +41 -0
  145. data/lib/fog/aws/requests/storage/delete_bucket.rb +4 -7
  146. data/lib/fog/aws/requests/storage/delete_bucket_cors.rb +29 -0
  147. data/lib/fog/aws/requests/storage/delete_bucket_lifecycle.rb +4 -7
  148. data/lib/fog/aws/requests/storage/delete_bucket_policy.rb +5 -8
  149. data/lib/fog/aws/requests/storage/delete_bucket_website.rb +4 -7
  150. data/lib/fog/aws/requests/storage/delete_multiple_objects.rb +167 -0
  151. data/lib/fog/aws/requests/storage/delete_object.rb +5 -8
  152. data/lib/fog/aws/requests/storage/get_bucket.rb +25 -28
  153. data/lib/fog/aws/requests/storage/get_bucket_acl.rb +15 -18
  154. data/lib/fog/aws/requests/storage/get_bucket_cors.rb +65 -0
  155. data/lib/fog/aws/requests/storage/get_bucket_lifecycle.rb +9 -12
  156. data/lib/fog/aws/requests/storage/get_bucket_location.rb +5 -8
  157. data/lib/fog/aws/requests/storage/get_bucket_logging.rb +15 -18
  158. data/lib/fog/aws/requests/storage/get_bucket_object_versions.rb +37 -43
  159. data/lib/fog/aws/requests/storage/get_bucket_policy.rb +4 -7
  160. data/lib/fog/aws/requests/storage/get_bucket_versioning.rb +6 -9
  161. data/lib/fog/aws/requests/storage/get_bucket_website.rb +9 -11
  162. data/lib/fog/aws/requests/storage/get_object.rb +17 -20
  163. data/lib/fog/aws/requests/storage/get_object_acl.rb +18 -21
  164. data/lib/fog/aws/requests/storage/get_object_http_url.rb +6 -9
  165. data/lib/fog/aws/requests/storage/get_object_https_url.rb +6 -9
  166. data/lib/fog/aws/requests/storage/get_object_torrent.rb +15 -18
  167. data/lib/fog/aws/requests/storage/get_object_url.rb +7 -10
  168. data/lib/fog/aws/requests/storage/get_request_payment.rb +5 -8
  169. data/lib/fog/aws/requests/storage/get_service.rb +9 -11
  170. data/lib/fog/aws/requests/storage/head_object.rb +21 -21
  171. data/lib/fog/aws/requests/storage/initiate_multipart_upload.rb +18 -19
  172. data/lib/fog/aws/requests/storage/put_bucket_cors.rb +51 -0
  173. data/lib/fog/aws/signaturev4.rb +1 -1
  174. data/lib/fog/aws/sqs.rb +1 -1
  175. data/lib/fog/aws/storage.rb +10 -1
  176. data/lib/fog/bluebox/models/compute/flavors.rb +2 -2
  177. data/lib/fog/bluebox/models/compute/image.rb +8 -8
  178. data/lib/fog/bluebox/models/compute/images.rb +2 -2
  179. data/lib/fog/bluebox/models/compute/locations.rb +2 -2
  180. data/lib/fog/bluebox/models/compute/server.rb +10 -10
  181. data/lib/fog/bluebox/models/compute/servers.rb +2 -2
  182. data/lib/fog/bluebox/models/dns/record.rb +3 -3
  183. data/lib/fog/bluebox/models/dns/records.rb +2 -2
  184. data/lib/fog/bluebox/models/dns/zone.rb +3 -3
  185. data/lib/fog/bluebox/models/dns/zones.rb +2 -2
  186. data/lib/fog/bluebox/requests/compute/create_block.rb +3 -5
  187. data/lib/fog/brightbox/compute.rb +284 -82
  188. data/lib/fog/brightbox/models/compute/account.rb +9 -3
  189. data/lib/fog/brightbox/models/compute/accounts.rb +3 -3
  190. data/lib/fog/brightbox/models/compute/api_client.rb +4 -4
  191. data/lib/fog/brightbox/models/compute/api_clients.rb +2 -2
  192. data/lib/fog/brightbox/models/compute/application.rb +2 -2
  193. data/lib/fog/brightbox/models/compute/applications.rb +3 -3
  194. data/lib/fog/brightbox/models/compute/cloud_ip.rb +4 -3
  195. data/lib/fog/brightbox/models/compute/cloud_ips.rb +4 -4
  196. data/lib/fog/brightbox/models/compute/firewall_policies.rb +3 -3
  197. data/lib/fog/brightbox/models/compute/firewall_policy.rb +5 -5
  198. data/lib/fog/brightbox/models/compute/firewall_rule.rb +3 -3
  199. data/lib/fog/brightbox/models/compute/firewall_rules.rb +2 -2
  200. data/lib/fog/brightbox/models/compute/flavors.rb +3 -3
  201. data/lib/fog/brightbox/models/compute/image.rb +3 -3
  202. data/lib/fog/brightbox/models/compute/images.rb +2 -2
  203. data/lib/fog/brightbox/models/compute/load_balancer.rb +3 -3
  204. data/lib/fog/brightbox/models/compute/load_balancers.rb +2 -2
  205. data/lib/fog/brightbox/models/compute/server.rb +25 -18
  206. data/lib/fog/brightbox/models/compute/server_group.rb +6 -6
  207. data/lib/fog/brightbox/models/compute/server_groups.rb +3 -3
  208. data/lib/fog/brightbox/models/compute/servers.rb +35 -3
  209. data/lib/fog/brightbox/models/compute/user.rb +1 -1
  210. data/lib/fog/brightbox/models/compute/users.rb +3 -3
  211. data/lib/fog/brightbox/models/compute/zones.rb +3 -3
  212. data/lib/fog/brightbox/oauth2.rb +164 -0
  213. data/lib/fog/brightbox/requests/compute/activate_console_server.rb +10 -3
  214. data/lib/fog/brightbox/requests/compute/add_listeners_load_balancer.rb +12 -3
  215. data/lib/fog/brightbox/requests/compute/add_nodes_load_balancer.rb +12 -3
  216. data/lib/fog/brightbox/requests/compute/add_servers_server_group.rb +10 -12
  217. data/lib/fog/brightbox/requests/compute/apply_to_firewall_policy.rb +12 -3
  218. data/lib/fog/brightbox/requests/compute/create_api_client.rb +12 -3
  219. data/lib/fog/brightbox/requests/compute/create_application.rb +12 -3
  220. data/lib/fog/brightbox/requests/compute/create_cloud_ip.rb +12 -2
  221. data/lib/fog/brightbox/requests/compute/create_firewall_policy.rb +14 -3
  222. data/lib/fog/brightbox/requests/compute/create_firewall_rule.rb +18 -3
  223. data/lib/fog/brightbox/requests/compute/create_image.rb +19 -3
  224. data/lib/fog/brightbox/requests/compute/create_load_balancer.rb +15 -3
  225. data/lib/fog/brightbox/requests/compute/create_server.rb +18 -3
  226. data/lib/fog/brightbox/requests/compute/create_server_group.rb +12 -3
  227. data/lib/fog/brightbox/requests/compute/destroy_api_client.rb +10 -3
  228. data/lib/fog/brightbox/requests/compute/destroy_application.rb +10 -3
  229. data/lib/fog/brightbox/requests/compute/destroy_cloud_ip.rb +10 -3
  230. data/lib/fog/brightbox/requests/compute/destroy_firewall_policy.rb +10 -3
  231. data/lib/fog/brightbox/requests/compute/destroy_firewall_rule.rb +10 -3
  232. data/lib/fog/brightbox/requests/compute/destroy_image.rb +10 -3
  233. data/lib/fog/brightbox/requests/compute/destroy_load_balancer.rb +10 -3
  234. data/lib/fog/brightbox/requests/compute/destroy_server.rb +10 -3
  235. data/lib/fog/brightbox/requests/compute/destroy_server_group.rb +10 -3
  236. data/lib/fog/brightbox/requests/compute/get_account.rb +8 -16
  237. data/lib/fog/brightbox/requests/compute/get_api_client.rb +10 -3
  238. data/lib/fog/brightbox/requests/compute/get_application.rb +10 -3
  239. data/lib/fog/brightbox/requests/compute/get_authenticated_user.rb +2 -4
  240. data/lib/fog/brightbox/requests/compute/get_cloud_ip.rb +10 -3
  241. data/lib/fog/brightbox/requests/compute/get_firewall_policy.rb +10 -3
  242. data/lib/fog/brightbox/requests/compute/get_firewall_rule.rb +10 -3
  243. data/lib/fog/brightbox/requests/compute/get_image.rb +10 -3
  244. data/lib/fog/brightbox/requests/compute/get_interface.rb +10 -3
  245. data/lib/fog/brightbox/requests/compute/get_load_balancer.rb +10 -3
  246. data/lib/fog/brightbox/requests/compute/get_scoped_account.rb +2 -6
  247. data/lib/fog/brightbox/requests/compute/get_server.rb +10 -3
  248. data/lib/fog/brightbox/requests/compute/get_server_group.rb +10 -3
  249. data/lib/fog/brightbox/requests/compute/get_server_type.rb +10 -3
  250. data/lib/fog/brightbox/requests/compute/get_user.rb +8 -16
  251. data/lib/fog/brightbox/requests/compute/get_zone.rb +10 -3
  252. data/lib/fog/brightbox/requests/compute/list_accounts.rb +7 -3
  253. data/lib/fog/brightbox/requests/compute/list_api_clients.rb +9 -3
  254. data/lib/fog/brightbox/requests/compute/list_applications.rb +9 -3
  255. data/lib/fog/brightbox/requests/compute/list_cloud_ips.rb +9 -3
  256. data/lib/fog/brightbox/requests/compute/list_firewall_policies.rb +9 -3
  257. data/lib/fog/brightbox/requests/compute/list_images.rb +9 -3
  258. data/lib/fog/brightbox/requests/compute/list_load_balancers.rb +9 -3
  259. data/lib/fog/brightbox/requests/compute/list_server_groups.rb +9 -3
  260. data/lib/fog/brightbox/requests/compute/list_server_types.rb +9 -3
  261. data/lib/fog/brightbox/requests/compute/list_servers.rb +9 -3
  262. data/lib/fog/brightbox/requests/compute/list_users.rb +9 -3
  263. data/lib/fog/brightbox/requests/compute/list_zones.rb +9 -3
  264. data/lib/fog/brightbox/requests/compute/map_cloud_ip.rb +12 -3
  265. data/lib/fog/brightbox/requests/compute/move_servers_server_group.rb +11 -13
  266. data/lib/fog/brightbox/requests/compute/remove_firewall_policy.rb +12 -3
  267. data/lib/fog/brightbox/requests/compute/remove_listeners_load_balancer.rb +12 -3
  268. data/lib/fog/brightbox/requests/compute/remove_nodes_load_balancer.rb +12 -3
  269. data/lib/fog/brightbox/requests/compute/remove_servers_server_group.rb +10 -11
  270. data/lib/fog/brightbox/requests/compute/reset_ftp_password_account.rb +22 -3
  271. data/lib/fog/brightbox/requests/compute/reset_ftp_password_scoped_account.rb +18 -0
  272. data/lib/fog/brightbox/requests/compute/reset_secret_api_client.rb +14 -2
  273. data/lib/fog/brightbox/requests/compute/reset_secret_application.rb +10 -3
  274. data/lib/fog/brightbox/requests/compute/shutdown_server.rb +10 -3
  275. data/lib/fog/brightbox/requests/compute/snapshot_server.rb +10 -3
  276. data/lib/fog/brightbox/requests/compute/start_server.rb +10 -3
  277. data/lib/fog/brightbox/requests/compute/stop_server.rb +10 -3
  278. data/lib/fog/brightbox/requests/compute/unmap_cloud_ip.rb +10 -3
  279. data/lib/fog/brightbox/requests/compute/update_account.rb +33 -35
  280. data/lib/fog/brightbox/requests/compute/update_api_client.rb +13 -3
  281. data/lib/fog/brightbox/requests/compute/update_application.rb +13 -3
  282. data/lib/fog/brightbox/requests/compute/update_cloud_ip.rb +14 -3
  283. data/lib/fog/brightbox/requests/compute/update_firewall_rule.rb +17 -2
  284. data/lib/fog/brightbox/requests/compute/update_image.rb +18 -3
  285. data/lib/fog/brightbox/requests/compute/update_load_balancer.rb +16 -3
  286. data/lib/fog/brightbox/requests/compute/update_scoped_account.rb +13 -20
  287. data/lib/fog/brightbox/requests/compute/update_server.rb +13 -3
  288. data/lib/fog/brightbox/requests/compute/update_server_group.rb +13 -3
  289. data/lib/fog/brightbox/requests/compute/update_user.rb +16 -3
  290. data/lib/fog/clodo/models/compute/images.rb +2 -2
  291. data/lib/fog/clodo/models/compute/server.rb +7 -7
  292. data/lib/fog/clodo/models/compute/servers.rb +2 -2
  293. data/lib/fog/cloudstack/models/compute/flavors.rb +2 -2
  294. data/lib/fog/cloudstack/models/compute/image.rb +2 -2
  295. data/lib/fog/cloudstack/models/compute/images.rb +2 -2
  296. data/lib/fog/cloudstack/models/compute/job.rb +2 -2
  297. data/lib/fog/cloudstack/models/compute/jobs.rb +2 -2
  298. data/lib/fog/cloudstack/models/compute/security_group.rb +3 -3
  299. data/lib/fog/cloudstack/models/compute/security_group_rule.rb +5 -5
  300. data/lib/fog/cloudstack/models/compute/security_group_rules.rb +1 -1
  301. data/lib/fog/cloudstack/models/compute/security_groups.rb +2 -2
  302. data/lib/fog/cloudstack/models/compute/server.rb +14 -12
  303. data/lib/fog/cloudstack/models/compute/servers.rb +2 -2
  304. data/lib/fog/cloudstack/models/compute/volume.rb +8 -8
  305. data/lib/fog/cloudstack/models/compute/volumes.rb +2 -2
  306. data/lib/fog/cloudstack/models/compute/zone.rb +1 -1
  307. data/lib/fog/cloudstack/models/compute/zones.rb +2 -2
  308. data/lib/fog/compute.rb +2 -1
  309. data/lib/fog/core.rb +1 -0
  310. data/lib/fog/core/attributes.rb +19 -2
  311. data/lib/fog/core/collection.rb +17 -6
  312. data/lib/fog/core/connection.rb +1 -0
  313. data/lib/fog/core/deprecated_connection_accessors.rb +41 -0
  314. data/lib/fog/core/errors.rb +2 -0
  315. data/lib/fog/core/json.rb +4 -16
  316. data/lib/fog/core/model.rb +11 -1
  317. data/lib/fog/core/service.rb +1 -1
  318. data/lib/fog/core/wait_for.rb +1 -1
  319. data/lib/fog/dnsimple/models/dns/record.rb +4 -4
  320. data/lib/fog/dnsimple/models/dns/records.rb +2 -2
  321. data/lib/fog/dnsimple/models/dns/zone.rb +3 -3
  322. data/lib/fog/dnsimple/models/dns/zones.rb +2 -2
  323. data/lib/fog/dnsmadeeasy/models/dns/record.rb +5 -5
  324. data/lib/fog/dnsmadeeasy/models/dns/records.rb +2 -2
  325. data/lib/fog/dnsmadeeasy/models/dns/zone.rb +3 -3
  326. data/lib/fog/dnsmadeeasy/models/dns/zones.rb +2 -2
  327. data/lib/fog/dynect/models/dns/record.rb +3 -3
  328. data/lib/fog/dynect/models/dns/records.rb +2 -2
  329. data/lib/fog/dynect/models/dns/zone.rb +4 -4
  330. data/lib/fog/dynect/models/dns/zones.rb +2 -2
  331. data/lib/fog/ecloud.rb +19 -5
  332. data/lib/fog/ecloud/compute.rb +663 -351
  333. data/lib/fog/ecloud/generate_collection.rb +3 -3
  334. data/lib/fog/ecloud/models/compute/admin_organization.rb +14 -10
  335. data/lib/fog/ecloud/models/compute/admin_organizations.rb +1 -6
  336. data/lib/fog/ecloud/models/compute/api_keys.rb +2 -2
  337. data/lib/fog/ecloud/models/compute/association.rb +3 -3
  338. data/lib/fog/ecloud/models/compute/associations.rb +2 -2
  339. data/lib/fog/ecloud/models/compute/authentication_levels.rb +2 -2
  340. data/lib/fog/ecloud/models/compute/backup_internet_service.rb +7 -7
  341. data/lib/fog/ecloud/models/compute/backup_internet_services.rb +3 -3
  342. data/lib/fog/ecloud/models/compute/catalog.rb +2 -2
  343. data/lib/fog/ecloud/models/compute/catalog_configurations.rb +2 -2
  344. data/lib/fog/ecloud/models/compute/catalog_item.rb +1 -1
  345. data/lib/fog/ecloud/models/compute/compute_pool.rb +27 -15
  346. data/lib/fog/ecloud/models/compute/compute_pools.rb +2 -2
  347. data/lib/fog/ecloud/models/compute/cpu_usage_detail_summary.rb +2 -2
  348. data/lib/fog/ecloud/models/compute/detached_disk.rb +27 -0
  349. data/lib/fog/ecloud/models/compute/detached_disks.rb +31 -0
  350. data/lib/fog/ecloud/models/compute/environment.rb +27 -20
  351. data/lib/fog/ecloud/models/compute/environments.rb +2 -2
  352. data/lib/fog/ecloud/models/compute/firewall_acl.rb +1 -1
  353. data/lib/fog/ecloud/models/compute/firewall_acls.rb +2 -2
  354. data/lib/fog/ecloud/models/compute/group.rb +8 -6
  355. data/lib/fog/ecloud/models/compute/groups.rb +17 -6
  356. data/lib/fog/ecloud/models/compute/guest_processes.rb +2 -2
  357. data/lib/fog/ecloud/models/compute/hardware_configuration.rb +4 -4
  358. data/lib/fog/ecloud/models/compute/hardware_configurations.rb +2 -2
  359. data/lib/fog/ecloud/models/compute/internet_service.rb +35 -29
  360. data/lib/fog/ecloud/models/compute/internet_services.rb +11 -8
  361. data/lib/fog/ecloud/models/compute/ip_address.rb +17 -3
  362. data/lib/fog/ecloud/models/compute/ip_addresses.rb +7 -2
  363. data/lib/fog/ecloud/models/compute/layout.rb +1 -1
  364. data/lib/fog/ecloud/models/compute/layouts.rb +2 -2
  365. data/lib/fog/ecloud/models/compute/location.rb +1 -1
  366. data/lib/fog/ecloud/models/compute/locations.rb +2 -2
  367. data/lib/fog/ecloud/models/compute/login_banners.rb +2 -2
  368. data/lib/fog/ecloud/models/compute/memory_usage_detail_summary.rb +2 -2
  369. data/lib/fog/ecloud/models/compute/monitor.rb +4 -4
  370. data/lib/fog/ecloud/models/compute/monitors.rb +2 -2
  371. data/lib/fog/ecloud/models/compute/network.rb +22 -12
  372. data/lib/fog/ecloud/models/compute/networks.rb +9 -5
  373. data/lib/fog/ecloud/models/compute/node.rb +12 -6
  374. data/lib/fog/ecloud/models/compute/nodes.rb +7 -4
  375. data/lib/fog/ecloud/models/compute/operating_system_families.rb +2 -2
  376. data/lib/fog/ecloud/models/compute/operating_system_family.rb +1 -1
  377. data/lib/fog/ecloud/models/compute/operating_systems.rb +1 -1
  378. data/lib/fog/ecloud/models/compute/organization.rb +17 -17
  379. data/lib/fog/ecloud/models/compute/organizations.rb +3 -3
  380. data/lib/fog/ecloud/models/compute/password_complexity_rules.rb +2 -2
  381. data/lib/fog/ecloud/models/compute/physical_devices.rb +2 -2
  382. data/lib/fog/ecloud/models/compute/public_ip.rb +2 -2
  383. data/lib/fog/ecloud/models/compute/public_ips.rb +8 -5
  384. data/lib/fog/ecloud/models/compute/rnat.rb +2 -2
  385. data/lib/fog/ecloud/models/compute/rnats.rb +2 -2
  386. data/lib/fog/ecloud/models/compute/roles.rb +2 -2
  387. data/lib/fog/ecloud/models/compute/row.rb +10 -7
  388. data/lib/fog/ecloud/models/compute/rows.rb +9 -6
  389. data/lib/fog/ecloud/models/compute/server.rb +139 -93
  390. data/lib/fog/ecloud/models/compute/server_configuration_options.rb +2 -2
  391. data/lib/fog/ecloud/models/compute/servers.rb +18 -15
  392. data/lib/fog/ecloud/models/compute/ssh_key.rb +1 -1
  393. data/lib/fog/ecloud/models/compute/ssh_keys.rb +2 -2
  394. data/lib/fog/ecloud/models/compute/storage_usage_detail_summary.rb +2 -2
  395. data/lib/fog/ecloud/models/compute/support_tickets.rb +2 -2
  396. data/lib/fog/ecloud/models/compute/tags.rb +2 -2
  397. data/lib/fog/ecloud/models/compute/task.rb +3 -0
  398. data/lib/fog/ecloud/models/compute/tasks.rb +3 -3
  399. data/lib/fog/ecloud/models/compute/template.rb +8 -9
  400. data/lib/fog/ecloud/models/compute/templates.rb +2 -2
  401. data/lib/fog/ecloud/models/compute/trusted_network_group.rb +5 -5
  402. data/lib/fog/ecloud/models/compute/trusted_network_groups.rb +2 -2
  403. data/lib/fog/ecloud/models/compute/user.rb +2 -2
  404. data/lib/fog/ecloud/models/compute/users.rb +2 -2
  405. data/lib/fog/ecloud/models/compute/virtual_machine_assigned_ip.rb +32 -0
  406. data/lib/fog/ecloud/models/compute/virtual_machine_assigned_ips.rb +27 -0
  407. data/lib/fog/ecloud/requests/compute/admin_edit_authentication_levels.rb +1 -2
  408. data/lib/fog/ecloud/requests/compute/get_admin_organization.rb +14 -0
  409. data/lib/fog/ecloud/requests/compute/get_compute_pool.rb +11 -0
  410. data/lib/fog/ecloud/requests/compute/get_compute_pools.rb +21 -0
  411. data/lib/fog/ecloud/requests/compute/get_detached_disk.rb +21 -0
  412. data/lib/fog/ecloud/requests/compute/get_detached_disks.rb +33 -0
  413. data/lib/fog/ecloud/requests/compute/get_environment.rb +21 -0
  414. data/lib/fog/ecloud/requests/compute/get_group.rb +8 -1
  415. data/lib/fog/ecloud/requests/compute/get_groups.rb +8 -1
  416. data/lib/fog/ecloud/requests/compute/get_hardware_configuration.rb +19 -0
  417. data/lib/fog/ecloud/requests/compute/get_hardware_configurations.rb +4 -0
  418. data/lib/fog/ecloud/requests/compute/get_internet_service.rb +12 -0
  419. data/lib/fog/ecloud/requests/compute/get_internet_services.rb +8 -0
  420. data/lib/fog/ecloud/requests/compute/get_ip_address.rb +11 -0
  421. data/lib/fog/ecloud/requests/compute/get_layout.rb +8 -1
  422. data/lib/fog/ecloud/requests/compute/get_layouts.rb +8 -1
  423. data/lib/fog/ecloud/requests/compute/get_network.rb +11 -0
  424. data/lib/fog/ecloud/requests/compute/get_networks.rb +20 -0
  425. data/lib/fog/ecloud/requests/compute/get_node.rb +11 -0
  426. data/lib/fog/ecloud/requests/compute/get_nodes.rb +9 -0
  427. data/lib/fog/ecloud/requests/compute/get_operating_system.rb +14 -0
  428. data/lib/fog/ecloud/requests/compute/get_operating_system_families.rb +20 -0
  429. data/lib/fog/ecloud/requests/compute/get_organization.rb +14 -0
  430. data/lib/fog/ecloud/requests/compute/get_organizations.rb +14 -2
  431. data/lib/fog/ecloud/requests/compute/get_public_ip.rb +11 -1
  432. data/lib/fog/ecloud/requests/compute/get_public_ips.rb +22 -0
  433. data/lib/fog/ecloud/requests/compute/get_row.rb +8 -1
  434. data/lib/fog/ecloud/requests/compute/get_rows.rb +2 -1
  435. data/lib/fog/ecloud/requests/compute/get_server.rb +11 -0
  436. data/lib/fog/ecloud/requests/compute/get_servers.rb +32 -1
  437. data/lib/fog/ecloud/requests/compute/get_ssh_key.rb +11 -0
  438. data/lib/fog/ecloud/requests/compute/get_ssh_keys.rb +20 -0
  439. data/lib/fog/ecloud/requests/compute/get_task.rb +4 -2
  440. data/lib/fog/ecloud/requests/compute/get_template.rb +11 -0
  441. data/lib/fog/ecloud/requests/compute/get_templates.rb +38 -0
  442. data/lib/fog/ecloud/requests/compute/get_virtual_machine_assigned_ips.rb +44 -0
  443. data/lib/fog/ecloud/requests/compute/groups_delete.rb +16 -1
  444. data/lib/fog/ecloud/requests/compute/internet_service_create.rb +36 -1
  445. data/lib/fog/ecloud/requests/compute/internet_service_delete.rb +23 -0
  446. data/lib/fog/ecloud/requests/compute/node_service_create.rb +49 -1
  447. data/lib/fog/ecloud/requests/compute/node_service_delete.rb +24 -0
  448. data/lib/fog/ecloud/requests/compute/rows_delete.rb +11 -1
  449. data/lib/fog/ecloud/requests/compute/virtual_machine_attach_disk.rb +62 -0
  450. data/lib/fog/ecloud/requests/compute/virtual_machine_create_from_template.rb +136 -16
  451. data/lib/fog/ecloud/requests/compute/virtual_machine_delete.rb +36 -1
  452. data/lib/fog/ecloud/requests/compute/virtual_machine_detach_disk.rb +71 -0
  453. data/lib/fog/ecloud/requests/compute/virtual_machine_edit_assigned_ips.rb +82 -0
  454. data/lib/fog/ecloud/requests/compute/virtual_machine_edit_hardware_configuration.rb +27 -3
  455. data/lib/fog/ecloud/requests/compute/virtual_machine_import.rb +120 -6
  456. data/lib/fog/glesys/models/compute/ip.rb +7 -7
  457. data/lib/fog/glesys/models/compute/ips.rb +7 -7
  458. data/lib/fog/glesys/models/compute/server.rb +6 -6
  459. data/lib/fog/glesys/models/compute/servers.rb +4 -4
  460. data/lib/fog/glesys/models/compute/template.rb +1 -1
  461. data/lib/fog/glesys/models/compute/templates.rb +2 -2
  462. data/lib/fog/go_grid/models/compute/image.rb +3 -3
  463. data/lib/fog/go_grid/models/compute/images.rb +2 -2
  464. data/lib/fog/go_grid/models/compute/password.rb +5 -5
  465. data/lib/fog/go_grid/models/compute/passwords.rb +3 -3
  466. data/lib/fog/go_grid/models/compute/server.rb +4 -4
  467. data/lib/fog/go_grid/models/compute/servers.rb +2 -2
  468. data/lib/fog/google/models/storage/directories.rb +2 -2
  469. data/lib/fog/google/models/storage/directory.rb +4 -4
  470. data/lib/fog/google/models/storage/file.rb +5 -5
  471. data/lib/fog/google/models/storage/files.rb +4 -4
  472. data/lib/fog/google/storage.rb +13 -2
  473. data/lib/fog/hp.rb +6 -3
  474. data/lib/fog/hp/models/compute/address.rb +8 -8
  475. data/lib/fog/hp/models/compute/addresses.rb +2 -2
  476. data/lib/fog/hp/models/compute/flavors.rb +2 -2
  477. data/lib/fog/hp/models/compute/image.rb +2 -2
  478. data/lib/fog/hp/models/compute/images.rb +2 -2
  479. data/lib/fog/hp/models/compute/key_pair.rb +3 -3
  480. data/lib/fog/hp/models/compute/key_pairs.rb +2 -2
  481. data/lib/fog/hp/models/compute/security_group.rb +4 -4
  482. data/lib/fog/hp/models/compute/security_groups.rb +3 -3
  483. data/lib/fog/hp/models/compute/server.rb +15 -15
  484. data/lib/fog/hp/models/compute/servers.rb +2 -2
  485. data/lib/fog/hp/models/storage/directories.rb +3 -3
  486. data/lib/fog/hp/models/storage/directory.rb +18 -18
  487. data/lib/fog/hp/models/storage/file.rb +4 -4
  488. data/lib/fog/hp/models/storage/files.rb +2 -2
  489. data/lib/fog/ibm/models/compute/address.rb +2 -2
  490. data/lib/fog/ibm/models/compute/addresses.rb +2 -2
  491. data/lib/fog/ibm/models/compute/image.rb +3 -3
  492. data/lib/fog/ibm/models/compute/images.rb +2 -2
  493. data/lib/fog/ibm/models/compute/key.rb +2 -2
  494. data/lib/fog/ibm/models/compute/keys.rb +3 -3
  495. data/lib/fog/ibm/models/compute/locations.rb +2 -2
  496. data/lib/fog/ibm/models/compute/server.rb +12 -12
  497. data/lib/fog/ibm/models/compute/servers.rb +2 -2
  498. data/lib/fog/ibm/models/compute/vlans.rb +2 -2
  499. data/lib/fog/ibm/models/storage/offerings.rb +1 -1
  500. data/lib/fog/ibm/models/storage/volume.rb +5 -5
  501. data/lib/fog/ibm/models/storage/volumes.rb +2 -2
  502. data/lib/fog/joyent/models/compute/flavors.rb +2 -2
  503. data/lib/fog/joyent/models/compute/images.rb +2 -2
  504. data/lib/fog/joyent/models/compute/key.rb +1 -1
  505. data/lib/fog/joyent/models/compute/keys.rb +3 -3
  506. data/lib/fog/joyent/models/compute/server.rb +13 -13
  507. data/lib/fog/joyent/models/compute/servers.rb +3 -3
  508. data/lib/fog/joyent/models/compute/snapshot.rb +4 -4
  509. data/lib/fog/joyent/models/compute/snapshots.rb +3 -3
  510. data/lib/fog/libvirt/compute.rb +6 -1
  511. data/lib/fog/libvirt/models/compute/interface.rb +1 -1
  512. data/lib/fog/libvirt/models/compute/interfaces.rb +1 -1
  513. data/lib/fog/libvirt/models/compute/network.rb +1 -1
  514. data/lib/fog/libvirt/models/compute/networks.rb +1 -1
  515. data/lib/fog/libvirt/models/compute/nic.rb +2 -2
  516. data/lib/fog/libvirt/models/compute/nodes.rb +1 -1
  517. data/lib/fog/libvirt/models/compute/pool.rb +7 -7
  518. data/lib/fog/libvirt/models/compute/pools.rb +1 -1
  519. data/lib/fog/libvirt/models/compute/server.rb +29 -28
  520. data/lib/fog/libvirt/models/compute/servers.rb +2 -2
  521. data/lib/fog/libvirt/models/compute/volume.rb +5 -5
  522. data/lib/fog/libvirt/models/compute/volumes.rb +1 -1
  523. data/lib/fog/libvirt/requests/compute/list_domains.rb +2 -2
  524. data/lib/fog/linode/models/compute/data_centers.rb +2 -2
  525. data/lib/fog/linode/models/compute/disk.rb +7 -7
  526. data/lib/fog/linode/models/compute/disks.rb +2 -2
  527. data/lib/fog/linode/models/compute/flavors.rb +2 -2
  528. data/lib/fog/linode/models/compute/images.rb +2 -2
  529. data/lib/fog/linode/models/compute/ip.rb +3 -3
  530. data/lib/fog/linode/models/compute/ips.rb +2 -2
  531. data/lib/fog/linode/models/compute/kernels.rb +2 -2
  532. data/lib/fog/linode/models/compute/server.rb +13 -13
  533. data/lib/fog/linode/models/compute/servers.rb +2 -2
  534. data/lib/fog/linode/models/compute/stack_scripts.rb +3 -3
  535. data/lib/fog/linode/models/dns/record.rb +6 -6
  536. data/lib/fog/linode/models/dns/records.rb +2 -2
  537. data/lib/fog/linode/models/dns/zone.rb +6 -6
  538. data/lib/fog/linode/models/dns/zones.rb +2 -2
  539. data/lib/fog/local/models/storage/directories.rb +3 -3
  540. data/lib/fog/local/models/storage/directory.rb +2 -2
  541. data/lib/fog/local/models/storage/file.rb +6 -6
  542. data/lib/fog/local/models/storage/files.rb +2 -2
  543. data/lib/fog/ninefold/models/compute/address.rb +5 -5
  544. data/lib/fog/ninefold/models/compute/addresses.rb +2 -2
  545. data/lib/fog/ninefold/models/compute/flavors.rb +2 -2
  546. data/lib/fog/ninefold/models/compute/images.rb +2 -2
  547. data/lib/fog/ninefold/models/compute/ip_forwarding_rule.rb +3 -3
  548. data/lib/fog/ninefold/models/compute/ip_forwarding_rules.rb +2 -2
  549. data/lib/fog/ninefold/models/compute/server.rb +9 -9
  550. data/lib/fog/ninefold/models/compute/servers.rb +2 -2
  551. data/lib/fog/openstack.rb +89 -65
  552. data/lib/fog/openstack/README.identity.md +69 -0
  553. data/lib/fog/openstack/compute.rb +71 -41
  554. data/lib/fog/openstack/identity.rb +43 -22
  555. data/lib/fog/openstack/image.rb +11 -5
  556. data/lib/fog/openstack/models/compute/address.rb +8 -8
  557. data/lib/fog/openstack/models/compute/addresses.rb +3 -3
  558. data/lib/fog/openstack/models/compute/flavor.rb +9 -4
  559. data/lib/fog/openstack/models/compute/flavors.rb +2 -2
  560. data/lib/fog/openstack/models/compute/host.rb +3 -2
  561. data/lib/fog/openstack/models/compute/hosts.rb +2 -2
  562. data/lib/fog/openstack/models/compute/image.rb +4 -3
  563. data/lib/fog/openstack/models/compute/images.rb +2 -2
  564. data/lib/fog/openstack/models/compute/key_pair.rb +3 -3
  565. data/lib/fog/openstack/models/compute/key_pairs.rb +1 -1
  566. data/lib/fog/openstack/models/compute/metadata.rb +4 -4
  567. data/lib/fog/openstack/models/compute/metadatum.rb +2 -2
  568. data/lib/fog/openstack/models/compute/security_group.rb +5 -5
  569. data/lib/fog/openstack/models/compute/security_groups.rb +2 -2
  570. data/lib/fog/openstack/models/compute/server.rb +41 -27
  571. data/lib/fog/openstack/models/compute/servers.rb +2 -2
  572. data/lib/fog/openstack/models/compute/snapshot.rb +4 -3
  573. data/lib/fog/openstack/models/compute/snapshots.rb +2 -2
  574. data/lib/fog/openstack/models/compute/tenant.rb +1 -1
  575. data/lib/fog/openstack/models/compute/tenants.rb +7 -3
  576. data/lib/fog/openstack/models/compute/volume.rb +6 -5
  577. data/lib/fog/openstack/models/compute/volumes.rb +2 -2
  578. data/lib/fog/openstack/models/identity/ec2_credential.rb +44 -0
  579. data/lib/fog/openstack/models/identity/ec2_credentials.rb +53 -0
  580. data/lib/fog/openstack/models/identity/role.rb +4 -4
  581. data/lib/fog/openstack/models/identity/roles.rb +2 -2
  582. data/lib/fog/openstack/models/identity/tenant.rb +7 -7
  583. data/lib/fog/openstack/models/identity/tenants.rb +3 -3
  584. data/lib/fog/openstack/models/identity/user.rb +12 -6
  585. data/lib/fog/openstack/models/identity/users.rb +4 -5
  586. data/lib/fog/openstack/models/image/image.rb +10 -9
  587. data/lib/fog/openstack/models/image/images.rb +6 -6
  588. data/lib/fog/openstack/models/network/network.rb +6 -5
  589. data/lib/fog/openstack/models/network/networks.rb +3 -3
  590. data/lib/fog/openstack/models/network/port.rb +6 -5
  591. data/lib/fog/openstack/models/network/ports.rb +3 -3
  592. data/lib/fog/openstack/models/network/subnet.rb +6 -5
  593. data/lib/fog/openstack/models/network/subnets.rb +3 -3
  594. data/lib/fog/openstack/models/volume/volume.rb +4 -3
  595. data/lib/fog/openstack/models/volume/volumes.rb +2 -2
  596. data/lib/fog/openstack/network.rb +5 -3
  597. data/lib/fog/openstack/requests/compute/create_flavor.rb +4 -1
  598. data/lib/fog/openstack/requests/compute/create_security_group.rb +3 -2
  599. data/lib/fog/openstack/requests/compute/create_security_group_rule.rb +1 -0
  600. data/lib/fog/openstack/requests/compute/create_server.rb +54 -7
  601. data/lib/fog/openstack/requests/compute/delete_security_group.rb +2 -0
  602. data/lib/fog/openstack/requests/compute/get_limits.rb +93 -0
  603. data/lib/fog/openstack/requests/compute/list_security_groups.rb +17 -41
  604. data/lib/fog/openstack/requests/compute/list_tenants.rb +1 -0
  605. data/lib/fog/openstack/requests/compute/release_address.rb +13 -1
  606. data/lib/fog/openstack/requests/compute/reset_server_state.rb +24 -0
  607. data/lib/fog/openstack/requests/identity/add_user_to_tenant.rb +7 -2
  608. data/lib/fog/openstack/requests/identity/create_ec2_credential.rb +58 -0
  609. data/lib/fog/openstack/requests/identity/create_role.rb +1 -1
  610. data/lib/fog/openstack/requests/identity/create_tenant.rb +1 -3
  611. data/lib/fog/openstack/requests/identity/delete_ec2_credential.rb +44 -0
  612. data/lib/fog/openstack/requests/identity/get_ec2_credential.rb +49 -0
  613. data/lib/fog/openstack/requests/identity/get_user_by_name.rb +8 -0
  614. data/lib/fog/openstack/requests/identity/list_ec2_credentials.rb +44 -0
  615. data/lib/fog/openstack/requests/identity/list_roles_for_user_on_tenant.rb +7 -1
  616. data/lib/fog/openstack/requests/identity/list_users.rb +10 -1
  617. data/lib/fog/openstack/requests/identity/set_tenant.rb +21 -0
  618. data/lib/fog/openstack/requests/identity/update_tenant.rb +1 -3
  619. data/lib/fog/openstack/requests/image/create_image.rb +3 -1
  620. data/lib/fog/openstack/volume.rb +6 -3
  621. data/lib/fog/ovirt/models/compute/cluster.rb +1 -1
  622. data/lib/fog/ovirt/models/compute/clusters.rb +2 -2
  623. data/lib/fog/ovirt/models/compute/interfaces.rb +3 -3
  624. data/lib/fog/ovirt/models/compute/server.rb +15 -15
  625. data/lib/fog/ovirt/models/compute/servers.rb +2 -2
  626. data/lib/fog/ovirt/models/compute/template.rb +5 -5
  627. data/lib/fog/ovirt/models/compute/templates.rb +2 -2
  628. data/lib/fog/ovirt/models/compute/volumes.rb +3 -3
  629. data/lib/fog/rackspace.rb +20 -11
  630. data/lib/fog/rackspace/block_storage.rb +1 -0
  631. data/lib/fog/rackspace/compute_v2.rb +10 -0
  632. data/lib/fog/rackspace/load_balancers.rb +2 -0
  633. data/lib/fog/rackspace/models/block_storage/snapshot.rb +3 -2
  634. data/lib/fog/rackspace/models/block_storage/snapshots.rb +2 -2
  635. data/lib/fog/rackspace/models/block_storage/volume.rb +9 -3
  636. data/lib/fog/rackspace/models/block_storage/volume_types.rb +3 -3
  637. data/lib/fog/rackspace/models/block_storage/volumes.rb +2 -2
  638. data/lib/fog/rackspace/models/compute/flavors.rb +2 -2
  639. data/lib/fog/rackspace/models/compute/image.rb +3 -3
  640. data/lib/fog/rackspace/models/compute/images.rb +2 -2
  641. data/lib/fog/rackspace/models/compute/server.rb +7 -7
  642. data/lib/fog/rackspace/models/compute/servers.rb +2 -2
  643. data/lib/fog/rackspace/models/compute_v2/attachment.rb +2 -2
  644. data/lib/fog/rackspace/models/compute_v2/attachments.rb +2 -2
  645. data/lib/fog/rackspace/models/compute_v2/flavors.rb +2 -2
  646. data/lib/fog/rackspace/models/compute_v2/image.rb +9 -0
  647. data/lib/fog/rackspace/models/compute_v2/images.rb +2 -2
  648. data/lib/fog/rackspace/models/compute_v2/server.rb +47 -14
  649. data/lib/fog/rackspace/models/compute_v2/servers.rb +10 -2
  650. data/lib/fog/rackspace/models/databases/database.rb +2 -2
  651. data/lib/fog/rackspace/models/databases/databases.rb +1 -1
  652. data/lib/fog/rackspace/models/databases/flavors.rb +2 -2
  653. data/lib/fog/rackspace/models/databases/instance.rb +10 -10
  654. data/lib/fog/rackspace/models/databases/instances.rb +2 -2
  655. data/lib/fog/rackspace/models/databases/user.rb +2 -2
  656. data/lib/fog/rackspace/models/databases/users.rb +1 -1
  657. data/lib/fog/rackspace/models/dns/callback.rb +1 -1
  658. data/lib/fog/rackspace/models/dns/record.rb +23 -5
  659. data/lib/fog/rackspace/models/dns/records.rb +2 -2
  660. data/lib/fog/rackspace/models/dns/zone.rb +5 -5
  661. data/lib/fog/rackspace/models/dns/zones.rb +2 -2
  662. data/lib/fog/rackspace/models/identity/credentials.rb +1 -1
  663. data/lib/fog/rackspace/models/identity/roles.rb +1 -1
  664. data/lib/fog/rackspace/models/identity/tenants.rb +1 -1
  665. data/lib/fog/rackspace/models/identity/user.rb +6 -6
  666. data/lib/fog/rackspace/models/identity/users.rb +3 -3
  667. data/lib/fog/rackspace/models/load_balancers/access_rule.rb +4 -4
  668. data/lib/fog/rackspace/models/load_balancers/access_rules.rb +1 -1
  669. data/lib/fog/rackspace/models/load_balancers/load_balancer.rb +45 -27
  670. data/lib/fog/rackspace/models/load_balancers/load_balancers.rb +2 -2
  671. data/lib/fog/rackspace/models/load_balancers/node.rb +4 -4
  672. data/lib/fog/rackspace/models/load_balancers/nodes.rb +2 -2
  673. data/lib/fog/rackspace/models/load_balancers/virtual_ip.rb +3 -3
  674. data/lib/fog/rackspace/models/load_balancers/virtual_ips.rb +1 -1
  675. data/lib/fog/rackspace/models/storage/directories.rb +2 -2
  676. data/lib/fog/rackspace/models/storage/directory.rb +12 -12
  677. data/lib/fog/rackspace/models/storage/file.rb +71 -5
  678. data/lib/fog/rackspace/models/storage/files.rb +2 -2
  679. data/lib/fog/rackspace/requests/compute_v2/create_image.rb +41 -0
  680. data/lib/fog/rackspace/requests/compute_v2/create_server.rb +3 -0
  681. data/lib/fog/rackspace/requests/compute_v2/delete_image.rb +31 -0
  682. data/lib/fog/rackspace/requests/compute_v2/list_addresses.rb +34 -0
  683. data/lib/fog/rackspace/requests/compute_v2/list_addresses_by_network.rb +36 -0
  684. data/lib/fog/rackspace/requests/dns/add_records.rb +5 -1
  685. data/lib/fog/rackspace/requests/load_balancers/get_content_caching.rb +15 -0
  686. data/lib/fog/rackspace/requests/load_balancers/set_content_caching.rb +21 -0
  687. data/lib/fog/rackspace/requests/storage/post_set_meta_temp_url_key.rb +1 -1
  688. data/lib/fog/serverlove/models/compute/image.rb +11 -11
  689. data/lib/fog/serverlove/models/compute/images.rb +2 -2
  690. data/lib/fog/serverlove/models/compute/server.rb +10 -10
  691. data/lib/fog/serverlove/models/compute/servers.rb +2 -2
  692. data/lib/fog/storm_on_demand/models/compute/balancer.rb +7 -7
  693. data/lib/fog/storm_on_demand/models/compute/balancers.rb +1 -1
  694. data/lib/fog/storm_on_demand/models/compute/configs.rb +1 -1
  695. data/lib/fog/storm_on_demand/models/compute/images.rb +1 -1
  696. data/lib/fog/storm_on_demand/models/compute/private_ips.rb +2 -2
  697. data/lib/fog/storm_on_demand/models/compute/server.rb +5 -5
  698. data/lib/fog/storm_on_demand/models/compute/servers.rb +2 -2
  699. data/lib/fog/storm_on_demand/models/compute/stats.rb +1 -1
  700. data/lib/fog/storm_on_demand/models/compute/templates.rb +1 -1
  701. data/lib/fog/terremark/models/shared/address.rb +1 -1
  702. data/lib/fog/terremark/models/shared/addresses.rb +5 -5
  703. data/lib/fog/terremark/models/shared/images.rb +5 -5
  704. data/lib/fog/terremark/models/shared/internetservice.rb +6 -6
  705. data/lib/fog/terremark/models/shared/internetservices.rb +5 -5
  706. data/lib/fog/terremark/models/shared/network.rb +1 -1
  707. data/lib/fog/terremark/models/shared/networks.rb +6 -6
  708. data/lib/fog/terremark/models/shared/nodeservice.rb +3 -3
  709. data/lib/fog/terremark/models/shared/nodeservices.rb +4 -4
  710. data/lib/fog/terremark/models/shared/server.rb +17 -17
  711. data/lib/fog/terremark/models/shared/servers.rb +6 -6
  712. data/lib/fog/terremark/models/shared/task.rb +4 -4
  713. data/lib/fog/terremark/models/shared/tasks.rb +5 -5
  714. data/lib/fog/terremark/models/shared/vdc.rb +4 -4
  715. data/lib/fog/terremark/models/shared/vdcs.rb +5 -5
  716. data/lib/fog/terremark/parser.rb +1 -1
  717. data/lib/fog/terremark/shared.rb +1 -1
  718. data/lib/fog/vcloud/compute.rb +4 -4
  719. data/lib/fog/vcloud/models/compute/catalog.rb +1 -1
  720. data/lib/fog/vcloud/models/compute/catalog_item.rb +1 -1
  721. data/lib/fog/vcloud/models/compute/catalog_items.rb +4 -4
  722. data/lib/fog/vcloud/models/compute/catalogs.rb +3 -3
  723. data/lib/fog/vcloud/models/compute/ip.rb +1 -1
  724. data/lib/fog/vcloud/models/compute/ips.rb +3 -3
  725. data/lib/fog/vcloud/models/compute/network.rb +1 -1
  726. data/lib/fog/vcloud/models/compute/networks.rb +6 -6
  727. data/lib/fog/vcloud/models/compute/organization.rb +4 -4
  728. data/lib/fog/vcloud/models/compute/organizations.rb +4 -4
  729. data/lib/fog/vcloud/models/compute/server.rb +13 -13
  730. data/lib/fog/vcloud/models/compute/servers.rb +4 -4
  731. data/lib/fog/vcloud/models/compute/tasks.rb +3 -3
  732. data/lib/fog/vcloud/models/compute/vapp.rb +2 -2
  733. data/lib/fog/vcloud/models/compute/vapps.rb +2 -2
  734. data/lib/fog/vcloud/models/compute/vdc.rb +2 -2
  735. data/lib/fog/vcloud/models/compute/vdcs.rb +3 -3
  736. data/lib/fog/version.rb +3 -0
  737. data/lib/fog/virtual_box/compute.rb +11 -5
  738. data/lib/fog/virtual_box/models/compute/medium.rb +2 -2
  739. data/lib/fog/virtual_box/models/compute/mediums.rb +4 -4
  740. data/lib/fog/virtual_box/models/compute/nat_engine.rb +2 -2
  741. data/lib/fog/virtual_box/models/compute/network_adapter.rb +1 -1
  742. data/lib/fog/virtual_box/models/compute/network_adapters.rb +1 -1
  743. data/lib/fog/virtual_box/models/compute/server.rb +5 -5
  744. data/lib/fog/virtual_box/models/compute/servers.rb +2 -2
  745. data/lib/fog/vmfusion/compute.rb +6 -1
  746. data/lib/fog/vmfusion/models/compute/server.rb +1 -1
  747. data/lib/fog/voxel/models/compute/images.rb +2 -2
  748. data/lib/fog/voxel/models/compute/server.rb +6 -6
  749. data/lib/fog/voxel/models/compute/servers.rb +2 -2
  750. data/lib/fog/vsphere/compute.rb +78 -9
  751. data/lib/fog/vsphere/models/compute/cluster.rb +31 -0
  752. data/lib/fog/vsphere/models/compute/clusters.rb +26 -0
  753. data/lib/fog/vsphere/models/compute/datacenter.rb +39 -0
  754. data/lib/fog/vsphere/models/compute/datacenters.rb +23 -0
  755. data/lib/fog/vsphere/models/compute/datastore.rb +24 -0
  756. data/lib/fog/vsphere/models/compute/datastores.rb +25 -0
  757. data/lib/fog/vsphere/models/compute/folder.rb +28 -0
  758. data/lib/fog/vsphere/models/compute/folders.rb +27 -0
  759. data/lib/fog/vsphere/models/compute/interface.rb +39 -0
  760. data/lib/fog/vsphere/models/compute/interfaces.rb +33 -0
  761. data/lib/fog/vsphere/models/compute/network.rb +21 -0
  762. data/lib/fog/vsphere/models/compute/networks.rb +25 -0
  763. data/lib/fog/vsphere/models/compute/resource_pool.rb +23 -0
  764. data/lib/fog/vsphere/models/compute/resource_pools.rb +26 -0
  765. data/lib/fog/vsphere/models/compute/server.rb +106 -29
  766. data/lib/fog/vsphere/models/compute/servers.rb +16 -20
  767. data/lib/fog/vsphere/models/compute/template.rb +13 -0
  768. data/lib/fog/vsphere/models/compute/templates.rb +23 -0
  769. data/lib/fog/vsphere/models/compute/volume.rb +45 -0
  770. data/lib/fog/vsphere/models/compute/volumes.rb +33 -0
  771. data/lib/fog/vsphere/requests/compute/create_folder.rb +22 -0
  772. data/lib/fog/vsphere/requests/compute/create_vm.rb +114 -0
  773. data/lib/fog/vsphere/requests/compute/get_cluster.rb +25 -0
  774. data/lib/fog/vsphere/requests/compute/get_datacenter.rb +29 -0
  775. data/lib/fog/vsphere/requests/compute/get_datastore.rb +25 -0
  776. data/lib/fog/vsphere/requests/compute/get_folder.rb +73 -0
  777. data/lib/fog/vsphere/requests/compute/get_network.rb +25 -0
  778. data/lib/fog/vsphere/requests/compute/get_resource_pool.rb +26 -0
  779. data/lib/fog/vsphere/requests/compute/get_virtual_machine.rb +62 -0
  780. data/lib/fog/vsphere/requests/compute/list_clusters.rb +37 -0
  781. data/lib/fog/vsphere/requests/compute/list_datacenters.rb +34 -0
  782. data/lib/fog/vsphere/requests/compute/list_datastores.rb +40 -0
  783. data/lib/fog/vsphere/requests/compute/list_folders.rb +45 -0
  784. data/lib/fog/vsphere/requests/compute/list_networks.rb +38 -0
  785. data/lib/fog/vsphere/requests/compute/list_resource_pools.rb +39 -0
  786. data/lib/fog/vsphere/requests/compute/list_virtual_machines.rb +132 -166
  787. data/lib/fog/vsphere/requests/compute/list_vm_interfaces.rb +52 -0
  788. data/lib/fog/vsphere/requests/compute/list_vm_volumes.rb +51 -0
  789. data/lib/fog/vsphere/requests/compute/vm_clone.rb +134 -67
  790. data/lib/fog/vsphere/requests/compute/vm_destroy.rb +1 -8
  791. data/lib/fog/vsphere/requests/compute/vm_reconfig_hardware.rb +1 -2
  792. data/lib/fog/xenserver.rb +26 -2
  793. data/lib/fog/xenserver/compute.rb +8 -0
  794. data/lib/fog/xenserver/examples/README.md +11 -0
  795. data/lib/fog/xenserver/examples/chage_default_storage_repository.md +99 -0
  796. data/lib/fog/xenserver/examples/creating_servers.md +168 -0
  797. data/lib/fog/xenserver/examples/getting_started.md +163 -0
  798. data/lib/fog/xenserver/examples/storage_repositories.md +94 -0
  799. data/lib/fog/xenserver/models/compute/host.rb +75 -8
  800. data/lib/fog/xenserver/models/compute/host_metrics.rb +29 -0
  801. data/lib/fog/xenserver/models/compute/hosts.rb +8 -8
  802. data/lib/fog/xenserver/models/compute/network.rb +11 -11
  803. data/lib/fog/xenserver/models/compute/networks.rb +3 -3
  804. data/lib/fog/xenserver/models/compute/pbd.rb +11 -6
  805. data/lib/fog/xenserver/models/compute/pbds.rb +3 -3
  806. data/lib/fog/xenserver/models/compute/pif.rb +9 -9
  807. data/lib/fog/xenserver/models/compute/pifs.rb +3 -3
  808. data/lib/fog/xenserver/models/compute/pool.rb +30 -8
  809. data/lib/fog/xenserver/models/compute/pools.rb +3 -3
  810. data/lib/fog/xenserver/models/compute/server.rb +29 -29
  811. data/lib/fog/xenserver/models/compute/servers.rb +8 -8
  812. data/lib/fog/xenserver/models/compute/storage_repositories.rb +2 -2
  813. data/lib/fog/xenserver/models/compute/storage_repository.rb +52 -9
  814. data/lib/fog/xenserver/models/compute/vbd.rb +16 -16
  815. data/lib/fog/xenserver/models/compute/vbds.rb +3 -3
  816. data/lib/fog/xenserver/models/compute/vdi.rb +17 -17
  817. data/lib/fog/xenserver/models/compute/vdis.rb +3 -3
  818. data/lib/fog/xenserver/models/compute/vif.rb +10 -10
  819. data/lib/fog/xenserver/models/compute/vifs.rb +3 -3
  820. data/lib/fog/xenserver/requests/compute/create_sr.rb +72 -0
  821. data/lib/fog/xenserver/requests/compute/destroy_sr.rb +30 -0
  822. data/lib/fog/xenserver/requests/compute/disable_host.rb +29 -0
  823. data/lib/fog/xenserver/requests/compute/enable_host.rb +28 -0
  824. data/lib/fog/xenserver/requests/compute/reboot_host.rb +23 -0
  825. data/lib/fog/xenserver/requests/compute/shutdown_host.rb +23 -0
  826. data/lib/fog/xenserver/requests/compute/unplug_pbd.rb +25 -0
  827. data/lib/fog/zerigo/models/dns/record.rb +4 -4
  828. data/lib/fog/zerigo/models/dns/records.rb +2 -2
  829. data/lib/fog/zerigo/models/dns/zone.rb +6 -6
  830. data/lib/fog/zerigo/models/dns/zones.rb +2 -2
  831. data/lib/tasks/changelog_task.rb +98 -0
  832. data/lib/tasks/test_task.rb +46 -0
  833. data/tests/aws/models/cloud_watch/metrics_tests.rb +16 -1
  834. data/tests/aws/models/iam/users_tests.rb +16 -2
  835. data/tests/aws/requests/auto_scaling/model_tests.rb +1 -3
  836. data/tests/aws/requests/auto_scaling/notification_configuration_tests.rb +1 -0
  837. data/tests/aws/requests/auto_scaling/tag_tests.rb +1 -0
  838. data/tests/aws/requests/compute/instance_tests.rb +2 -0
  839. data/tests/aws/requests/compute/snapshot_tests.rb +19 -0
  840. data/tests/aws/requests/compute/spot_instance_tests.rb +4 -2
  841. data/tests/aws/requests/compute/volume_tests.rb +8 -0
  842. data/tests/aws/requests/storage/bucket_tests.rb +14 -0
  843. data/tests/aws/requests/storage/cors_utils_tests.rb +108 -0
  844. data/tests/aws/requests/storage/object_tests.rb +18 -1
  845. data/tests/aws/requests/storage/versioning_tests.rb +70 -0
  846. data/tests/brightbox/compute_tests.rb +96 -4
  847. data/tests/brightbox/models/compute/account_tests.rb +17 -0
  848. data/tests/brightbox/models/compute/server_tests.rb +21 -0
  849. data/tests/brightbox/oauth2_tests.rb +103 -0
  850. data/tests/brightbox/requests/compute/account_tests.rb +9 -2
  851. data/tests/brightbox/requests/compute/firewall_policy_tests.rb +33 -0
  852. data/tests/brightbox/requests/compute/firewall_rule_tests.rb +43 -0
  853. data/tests/brightbox/requests/compute/helper.rb +33 -30
  854. data/tests/brightbox/requests/compute/interface_tests.rb +18 -4
  855. data/tests/compute/helper.rb +28 -6
  856. data/tests/compute/models/flavors_tests.rb +4 -2
  857. data/tests/compute/models/server_tests.rb +5 -1
  858. data/tests/compute/models/servers_tests.rb +5 -2
  859. data/tests/core/wait_for_tests.rb +13 -0
  860. data/tests/dns/models/record_tests.rb +17 -3
  861. data/tests/ecloud/compute/models/admin_organization_tests.rb +16 -0
  862. data/tests/ecloud/compute/models/compute_pool_tests.rb +17 -0
  863. data/tests/ecloud/compute/models/detached_disk_tests.rb +26 -0
  864. data/tests/ecloud/compute/models/environment_tests.rb +23 -0
  865. data/tests/ecloud/compute/models/internet_service_tests.rb +28 -0
  866. data/tests/ecloud/compute/models/ip_address_tests.rb +19 -0
  867. data/tests/ecloud/compute/models/network_tests.rb +17 -0
  868. data/tests/ecloud/compute/models/operating_system_families_tests.rb +13 -0
  869. data/tests/ecloud/compute/models/operating_system_tests.rb +22 -0
  870. data/tests/ecloud/compute/models/organization_tests.rb +21 -0
  871. data/tests/ecloud/compute/models/public_ip_tests.rb +19 -0
  872. data/tests/ecloud/compute/models/server_tests.rb +143 -0
  873. data/tests/ecloud/compute/models/ssh_key_tests.rb +19 -0
  874. data/tests/ecloud/compute/models/template_tests.rb +20 -0
  875. data/tests/openstack/authenticate_tests.rb +142 -0
  876. data/tests/openstack/models/compute/server_tests.rb +45 -0
  877. data/tests/openstack/models/identity/ec2_credential_tests.rb +41 -0
  878. data/tests/openstack/models/identity/ec2_credentials_tests.rb +58 -0
  879. data/tests/openstack/models/identity/tenant_tests.rb +6 -0
  880. data/tests/openstack/requests/compute/address_tests.rb +20 -19
  881. data/tests/openstack/requests/compute/flavor_tests.rb +4 -2
  882. data/tests/openstack/requests/compute/helper.rb +20 -0
  883. data/tests/openstack/requests/compute/limit_tests.rb +60 -0
  884. data/tests/openstack/requests/compute/quota_tests.rb +18 -3
  885. data/tests/openstack/requests/compute/security_group_tests.rb +11 -3
  886. data/tests/openstack/requests/compute/server_tests.rb +29 -14
  887. data/tests/openstack/requests/identity/ec2_credentials_tests.rb +41 -0
  888. data/tests/openstack/requests/identity/role_tests.rb +0 -1
  889. data/tests/openstack/requests/identity/user_tests.rb +8 -0
  890. data/tests/rackspace/models/block_storage/snapshot_tests.rb +18 -11
  891. data/tests/rackspace/models/block_storage/volume_tests.rb +13 -7
  892. data/tests/rackspace/models/compute_v2/image_tests.rb +28 -0
  893. data/tests/rackspace/models/compute_v2/server_tests.rb +15 -0
  894. data/tests/rackspace/models/compute_v2/servers_tests.rb +6 -0
  895. data/tests/rackspace/models/load_balancers/load_balancer_tests.rb +17 -0
  896. data/tests/rackspace/models/storage/file_tests.rb +178 -0
  897. data/tests/rackspace/requests/compute/address_tests.rb +11 -9
  898. data/tests/rackspace/requests/compute/flavor_tests.rb +6 -5
  899. data/tests/rackspace/requests/compute/image_tests.rb +12 -10
  900. data/tests/rackspace/requests/compute/resize_tests.rb +8 -6
  901. data/tests/rackspace/requests/compute/server_tests.rb +19 -17
  902. data/tests/rackspace/requests/compute_v2/address_tests.rb +43 -0
  903. data/tests/rackspace/requests/compute_v2/image_tests.rb +38 -10
  904. data/tests/rackspace/requests/dns/helper.rb +12 -26
  905. data/tests/rackspace/requests/dns/records_tests.rb +2 -2
  906. data/tests/rackspace/requests/load_balancers/content_caching_tests.rb +25 -0
  907. data/tests/rackspace/requests/load_balancers/helper.rb +5 -1
  908. data/tests/vsphere/compute_tests.rb +3 -3
  909. data/tests/vsphere/models/compute/server_tests.rb +1 -2
  910. data/tests/vsphere/requests/compute/list_virtual_machines_tests.rb +5 -13
  911. data/tests/vsphere/requests/compute/vm_clone_tests.rb +6 -4
  912. data/tests/xenserver/models/compute/host_metrics_tests.rb +48 -0
  913. data/tests/xenserver/models/compute/host_tests.rb +20 -1
  914. data/tests/xenserver/models/compute/pbd_tests.rb +33 -1
  915. data/tests/xenserver/models/compute/pool_tests.rb +7 -1
  916. data/tests/xenserver/models/compute/storage_repository_tests.rb +52 -1
  917. data/tests/xenserver/requests/compute/create_sr_tests.rb +54 -0
  918. data/tests/xenserver/requests/compute/destroy_sr_tests.rb +46 -0
  919. data/tests/xenserver/requests/compute/disable_host_tests.rb +16 -0
  920. data/tests/xenserver/requests/compute/enable_host_tests.rb +16 -0
  921. data/tests/xenserver/requests/compute/unplug_pbd_tests.rb +48 -0
  922. metadata +312 -89
  923. data/docs/_config.yml +0 -39
  924. data/docs/_layouts/default.html +0 -111
  925. data/docs/about/contributing.markdown +0 -228
  926. data/docs/about/getting_started.markdown +0 -108
  927. data/docs/about/press.markdown +0 -52
  928. data/docs/about/structure.markdown +0 -78
  929. data/docs/about/users.markdown +0 -34
  930. data/docs/cdn/index.markdown +0 -148
  931. data/docs/compute/index.markdown +0 -122
  932. data/docs/dns/index.markdown +0 -79
  933. data/docs/index.markdown +0 -88
  934. data/docs/public/crossdomain.xml +0 -25
  935. data/docs/public/css/fog.css +0 -142
  936. data/docs/public/css/handheld.css +0 -8
  937. data/docs/public/css/style.css +0 -129
  938. data/docs/public/images/.gitignore +0 -3
  939. data/docs/public/images/engineyard.png +0 -0
  940. data/docs/public/images/fog.png +0 -0
  941. data/docs/public/js/libs/dd_belatedpng.js +0 -289
  942. data/docs/public/js/libs/dd_belatedpng.min.js +0 -13
  943. data/docs/public/js/libs/jquery-1.4.2.js +0 -6240
  944. data/docs/public/js/libs/jquery-1.4.2.min.js +0 -154
  945. data/docs/public/js/libs/modernizr-1.6.js +0 -892
  946. data/docs/public/js/libs/modernizr-1.6.min.js +0 -30
  947. data/docs/public/js/mylibs/.gitignore +0 -3
  948. data/docs/public/js/plugins.js +0 -34
  949. data/docs/public/js/profiling/config.js +0 -59
  950. data/docs/public/js/profiling/yahoo-profiling.css +0 -7
  951. data/docs/public/js/profiling/yahoo-profiling.js +0 -1028
  952. data/docs/public/js/profiling/yahoo-profiling.min.js +0 -39
  953. data/docs/public/js/script.js +0 -26
  954. data/docs/public/robots.txt +0 -5
  955. data/docs/storage/index.markdown +0 -204
  956. data/lib/fog/ecloud/requests/compute/get_admin_organizations.rb +0 -11
  957. data/lib/fog/ecloud/requests/compute/get_ip_addresses.rb +0 -11
  958. data/lib/fog/ecloud/requests/compute/get_operating_system_family.rb +0 -11
  959. data/lib/fog/ecloud/requests/compute/virtual_machine_add_ip.rb +0 -40
  960. data/lib/fog/vsphere/requests/compute/datacenters.rb +0 -34
  961. data/lib/fog/vsphere/requests/compute/find_vm_by_ref.rb +0 -41
  962. data/lib/fog/vsphere/requests/compute/vm_create.rb +0 -97
  963. data/tests/vsphere/requests/compute/find_vm_by_ref_tests.rb +0 -26
  964. data/tests/vsphere/requests/compute/vm_create_tests.rb +0 -20
@@ -8,7 +8,7 @@ module Fog
8
8
  extend Fog::Deprecation
9
9
  deprecate :ip, :value
10
10
  deprecate :ip=, :value=
11
-
11
+
12
12
  identity :id
13
13
 
14
14
  attribute :name
@@ -23,14 +23,14 @@ module Fog
23
23
  attribute :hard_link, :aliases => "hardLink"
24
24
 
25
25
  attribute :value, :aliases => "data"
26
-
26
+
27
27
  def initialize(attributes={})
28
28
  self.ttl ||= 1800
29
29
  super
30
30
  end
31
31
 
32
32
  def destroy
33
- connection.delete_record(zone.domain, identity)
33
+ service.delete_record(zone.domain, identity)
34
34
  true
35
35
  end
36
36
 
@@ -57,11 +57,11 @@ module Fog
57
57
  end
58
58
 
59
59
  if id.nil?
60
- data = connection.create_record(zone.domain, name, type, value, options).body
60
+ data = service.create_record(zone.domain, name, type, value, options).body
61
61
  merge_attributes(data)
62
62
  else
63
63
  options.merge!(:name => name, :type => type, :data => value)
64
- connection.update_record(zone.domain, id, options).body
64
+ service.update_record(zone.domain, id, options).body
65
65
  end
66
66
 
67
67
  true
@@ -13,12 +13,12 @@ module Fog
13
13
 
14
14
  def all
15
15
  requires :zone
16
- data = connection.list_records(zone.identity).body
16
+ data = service.list_records(zone.identity).body
17
17
  load(data)
18
18
  end
19
19
 
20
20
  def get(record_id)
21
- data = connection.get_record(zone.identity, record_id).body
21
+ data = service.get_record(zone.identity, record_id).body
22
22
  new(data)
23
23
  rescue Fog::Service::NotFound
24
24
  nil
@@ -14,7 +14,7 @@ module Fog
14
14
 
15
15
  def destroy
16
16
  requires :identity
17
- connection.delete_domain(identity)
17
+ service.delete_domain(identity)
18
18
  true
19
19
  end
20
20
 
@@ -22,14 +22,14 @@ module Fog
22
22
  @records ||= begin
23
23
  Fog::DNS::DNSMadeEasy::Records.new(
24
24
  :zone => self,
25
- :connection => connection
25
+ :service => service
26
26
  )
27
27
  end
28
28
  end
29
29
 
30
30
  def save
31
31
  requires :domain
32
- data = connection.create_domain(domain).body
32
+ data = service.create_domain(domain).body
33
33
  self.identity = data['name']
34
34
  merge_attributes(data)
35
35
  true
@@ -11,12 +11,12 @@ module Fog
11
11
 
12
12
  def all
13
13
  clear
14
- data = connection.list_domains.body['list'].collect{|domain| {:id => domain}}
14
+ data = service.list_domains.body['list'].collect{|domain| {:id => domain}}
15
15
  load(data)
16
16
  end
17
17
 
18
18
  def get(zone_id)
19
- data = connection.get_domain(zone_id).body
19
+ data = service.get_domain(zone_id).body
20
20
  data.merge!(:id => data['name'])
21
21
  new(data)
22
22
  rescue Fog::Service::NotFound
@@ -16,7 +16,7 @@ module Fog
16
16
 
17
17
  def destroy
18
18
  requires :identity, :name, :type, :zone
19
- connection.delete_record(type, zone.identity, name, identity)
19
+ service.delete_record(type, zone.identity, name, identity)
20
20
  true
21
21
  end
22
22
 
@@ -28,13 +28,13 @@ module Fog
28
28
  }
29
29
  options.delete_if {|key, value| value.nil?}
30
30
 
31
- data = connection.post_record(type, zone.identity, name, rdata, options).body['data']
31
+ data = service.post_record(type, zone.identity, name, rdata, options).body['data']
32
32
  # avoid overwriting zone object with zone string
33
33
  data = data.reject {|key, value| key == 'zone'}
34
34
  merge_attributes(data)
35
35
 
36
36
  zone.publish
37
- records = connection.get_record(type, zone.identity, name).body['data']
37
+ records = service.get_record(type, zone.identity, name).body['data']
38
38
  # data in format ['/REST/xRecord/domain/fqdn/identity]
39
39
  records.map! do |record|
40
40
  tokens = record.split('/')
@@ -14,8 +14,8 @@ module Fog
14
14
  def all(options = {})
15
15
  requires :zone
16
16
  data = []
17
- connection.get_node_list(zone.domain, options).body['data'].each do |fqdn|
18
- records = connection.get_record('ANY', zone.domain, fqdn).body['data']
17
+ service.get_node_list(zone.domain, options).body['data'].each do |fqdn|
18
+ records = service.get_record('ANY', zone.domain, fqdn).body['data']
19
19
 
20
20
  # data in format ['/REST/xRecord/domain/fqdn/identity]
21
21
  records.map! do |record|
@@ -23,7 +23,7 @@ module Fog
23
23
 
24
24
  def destroy
25
25
  requires :domain
26
- connection.delete_zone(domain)
26
+ service.delete_zone(domain)
27
27
  true
28
28
  end
29
29
 
@@ -34,12 +34,12 @@ module Fog
34
34
 
35
35
  def publish
36
36
  requires :identity
37
- data = connection.put_zone(identity, 'publish' => true)
37
+ data = service.put_zone(identity, 'publish' => true)
38
38
  true
39
39
  end
40
40
 
41
41
  def records
42
- @records ||= Fog::DNS::Dynect::Records.new(:zone => self, :connection => connection)
42
+ @records ||= Fog::DNS::Dynect::Records.new(:zone => self, :service => service)
43
43
  end
44
44
 
45
45
  def nameservers
@@ -48,7 +48,7 @@ module Fog
48
48
 
49
49
  def save
50
50
  requires :domain, :email, :ttl
51
- data = connection.post_zone(email, ttl, domain).body['data']
51
+ data = service.post_zone(email, ttl, domain).body['data']
52
52
  merge_attributes(data)
53
53
  true
54
54
  end
@@ -10,14 +10,14 @@ module Fog
10
10
  model Fog::DNS::Dynect::Zone
11
11
 
12
12
  def all
13
- data = connection.get_zone.body['data'].map do |zone|
13
+ data = service.get_zone.body['data'].map do |zone|
14
14
  { :domain => zone }
15
15
  end
16
16
  load(data)
17
17
  end
18
18
 
19
19
  def get(zone_id)
20
- new(connection.get_zone('zone' => zone_id).body['data'])
20
+ new(service.get_zone('zone' => zone_id).body['data'])
21
21
  rescue Excon::Errors::NotFound
22
22
  nil
23
23
  end
data/lib/fog/ecloud.rb CHANGED
@@ -2,16 +2,30 @@ require(File.expand_path(File.join(File.dirname(__FILE__), 'core')))
2
2
 
3
3
  module Fog
4
4
  module Ecloud
5
+ ECLOUD_OPTIONS = [:ecloud_authentication_method]
5
6
 
6
7
  extend Fog::Provider
7
8
 
8
9
  service(:compute, 'ecloud/compute', 'Compute')
9
10
 
10
- end
11
- end
11
+ def self.keep(hash, *keys)
12
+ {}.tap do |kept|
13
+ keys.each{|k| kept[k]= hash[k] if hash.key?(k)}
14
+ end
15
+ end
12
16
 
13
- module Fog
14
- module Ecloud
15
- ECLOUD_OPTIONS = [:ecloud_authentication_method]
17
+ def self.slice(hash, *keys)
18
+ hash.dup.tap do |sliced|
19
+ keys.each{|k| sliced.delete(k)}
20
+ end
21
+ end
22
+
23
+ def self.ip_address
24
+ 4.times.map{ Fog::Mock.random_numbers(3) }.join(".")
25
+ end
26
+
27
+ def self.mac_address
28
+ 6.times.map{ Fog::Mock.random_numbers(2) }.join(":")
29
+ end
16
30
  end
17
31
  end
@@ -1,33 +1,12 @@
1
1
  require 'fog/ecloud/collection'
2
- module Fog
3
- module Ecloud
4
- class Model < Fog::Model
5
-
6
- attr_accessor :loaded
7
- alias_method :loaded?, :loaded
8
-
9
- def reload
10
- instance = super
11
- @loaded = true
12
- instance
13
- end
14
-
15
- def load_unless_loaded!
16
- unless @loaded
17
- reload
18
- end
19
- end
2
+ require 'fog/ecloud/model'
3
+ require 'builder'
20
4
 
21
- end
22
- end
23
- end
24
5
  module Fog
25
6
  module Compute
26
-
27
-
28
7
  class Ecloud < Fog::Service
29
-
30
8
  API_URL = "https://services.enterprisecloud.terremark.com"
9
+
31
10
  attr_reader :authentication_method, :version
32
11
 
33
12
  #### Credentials
@@ -38,346 +17,271 @@ module Fog
38
17
  model_path 'fog/ecloud/models/compute'
39
18
  model :organization
40
19
  collection :organizations
41
- model :location
42
- collection :locations
43
- model :catalog_item
44
- collection :catalog
45
- model :catalog_configuration
46
- collection :catalog_configurations
47
- model :environment
48
- collection :environments
49
- model :task
50
- collection :tasks
51
- model :compute_pool
52
- collection :compute_pools
53
- model :server
54
- collection :servers
55
- model :hardware_configuration
56
- collection :hardware_configurations
57
- model :server_configuration_option
58
- collection :server_configuration_options
59
- model :guest_process
60
- collection :guest_processes
61
- model :layout
62
- collection :layouts
63
- model :row
64
- collection :rows
65
- model :group
66
- collection :groups
67
- model :internet_service
68
- collection :internet_services
69
- model :node
70
- collection :nodes
71
- model :monitor
72
- collection :monitors
73
- model :cpu_usage_detail
74
- collection :cpu_usage_detail_summary
75
- model :memory_usage_detail
76
- collection :memory_usage_detail_summary
77
- model :storage_usage_detail
78
- collection :storage_usage_detail_summary
79
- model :operating_system_family
80
- collection :operating_system_families
81
- model :operating_system
82
- collection :operating_systems
83
- model :template
84
- collection :templates
85
- model :firewall_acl
86
- collection :firewall_acls
87
- model :network
88
- collection :networks
89
- model :ip_address
90
- collection :ip_addresses
91
- model :physical_device
92
- collection :physical_devices
93
- model :public_ip
94
- collection :public_ips
95
- model :trusted_network_group
96
- collection :trusted_network_groups
97
- model :backup_internet_service
98
- collection :backup_internet_services
99
- model :rnat
100
- collection :rnats
101
- model :association
102
- collection :associations
103
- model :tag
104
- collection :tags
105
- model :admin_organization
106
- collection :admin_organizations
107
- model :ssh_key
108
- collection :ssh_keys
109
- model :password_complexity_rule
110
- collection :password_complexity_rules
111
- model :authentication_level
112
- collection :authentication_levels
113
- model :login_banner
114
- collection :login_banners
115
- model :user
116
- collection :users
117
- model :role
118
- collection :roles
119
- model :ssh_key
120
- collection :ssh_keys
121
- model :support_ticket
122
- collection :support_tickets
20
+ model :location
21
+ collection :locations
22
+ model :catalog_item
23
+ collection :catalog
24
+ model :catalog_configuration
25
+ collection :catalog_configurations
26
+ model :environment
27
+ collection :environments
28
+ model :task
29
+ collection :tasks
30
+ model :compute_pool
31
+ collection :compute_pools
32
+ model :server
33
+ collection :servers
34
+ model :virtual_machine_assigned_ip
35
+ collection :virtual_machine_assigned_ips
36
+ model :hardware_configuration
37
+ collection :hardware_configurations
38
+ model :server_configuration_option
39
+ collection :server_configuration_options
40
+ model :guest_process
41
+ collection :guest_processes
42
+ model :layout
43
+ collection :layouts
44
+ model :row
45
+ collection :rows
46
+ model :group
47
+ collection :groups
48
+ model :internet_service
49
+ collection :internet_services
50
+ model :node
51
+ collection :nodes
52
+ model :monitor
53
+ collection :monitors
54
+ model :cpu_usage_detail
55
+ collection :cpu_usage_detail_summary
56
+ model :memory_usage_detail
57
+ collection :memory_usage_detail_summary
58
+ model :storage_usage_detail
59
+ collection :storage_usage_detail_summary
60
+ model :operating_system_family
61
+ collection :operating_system_families
62
+ model :operating_system
63
+ collection :operating_systems
64
+ model :template
65
+ collection :templates
66
+ model :firewall_acl
67
+ collection :firewall_acls
68
+ model :network
69
+ collection :networks
70
+ model :ip_address
71
+ collection :ip_addresses
72
+ model :physical_device
73
+ collection :physical_devices
74
+ model :public_ip
75
+ collection :public_ips
76
+ model :trusted_network_group
77
+ collection :trusted_network_groups
78
+ model :backup_internet_service
79
+ collection :backup_internet_services
80
+ model :rnat
81
+ collection :rnats
82
+ model :association
83
+ collection :associations
84
+ model :tag
85
+ collection :tags
86
+ model :admin_organization
87
+ collection :admin_organizations
88
+ model :ssh_key
89
+ collection :ssh_keys
90
+ model :password_complexity_rule
91
+ collection :password_complexity_rules
92
+ model :authentication_level
93
+ collection :authentication_levels
94
+ model :login_banner
95
+ collection :login_banners
96
+ model :user
97
+ collection :users
98
+ model :role
99
+ collection :roles
100
+ model :ssh_key
101
+ collection :ssh_keys
102
+ model :support_ticket
103
+ collection :support_tickets
104
+ model :detached_disk
105
+ collection :detached_disks
123
106
 
124
107
  #### Requests
125
108
  request_path 'fog/ecloud/requests/compute'
126
- request :get_organization
127
- request :get_organizations
128
- request :get_location
129
- request :get_locations
130
- request :get_environment
131
- request :get_task
132
- request :get_tasks
109
+ request :backup_internet_service_create
110
+ request :backup_internet_service_delete
111
+ request :backup_internet_service_edit
112
+ request :compute_pool_edit
113
+ request :firewall_acls_create
114
+ request :firewall_acls_delete
115
+ request :get_admin_organization
116
+ request :get_api_key
117
+ request :get_api_keys
118
+ request :get_association
119
+ request :get_associations
120
+ request :get_authentication_level
121
+ request :get_authentication_levels
122
+ request :get_backup_internet_service
123
+ request :get_backup_internet_services
124
+ request :get_catalog
125
+ request :get_catalog_configuration
126
+ request :get_catalog_configurations
127
+ request :get_catalog_item
133
128
  request :get_compute_pool
134
129
  request :get_compute_pools
135
- request :get_server
136
- request :get_servers
137
- request :get_network
138
- request :get_networks
139
- request :get_physical_device
140
- request :get_physical_devices
141
- request :get_layout
142
- request :get_layouts
143
- request :get_row
144
- request :get_rows
145
- request :get_group
146
- request :get_groups
147
- request :get_public_ip
148
- request :get_public_ips
149
- request :get_network_summary
150
- request :get_internet_service
151
- request :get_internet_services
152
- request :get_node
153
- request :get_nodes
130
+ request :get_cpu_usage_detail
131
+ request :get_cpu_usage_detail_summary
132
+ request :get_environment
154
133
  request :get_firewall_acl
155
134
  request :get_firewall_acls
156
- request :get_trusted_network_group
157
- request :get_trusted_network_groups
158
- request :get_catalog
159
- request :get_catalog_item
160
- request :get_tag
161
- request :get_tags
162
- request :get_hardware_configuration
163
- request :get_hardware_configurations
164
- request :get_server_configuration_option
165
- request :get_server_configuration_options
135
+ request :get_group
136
+ request :get_groups
166
137
  request :get_guest_process
167
138
  request :get_guest_processes
168
- request :get_cpu_usage_detail
169
- request :get_cpu_usage_detail_summary
139
+ request :get_hardware_configuration
140
+ request :get_internet_service
141
+ request :get_internet_services
142
+ request :get_ip_address
143
+ request :get_layout
144
+ request :get_layouts
145
+ request :get_location
146
+ request :get_locations
147
+ request :get_login_banner
148
+ request :get_login_banners
170
149
  request :get_memory_usage_detail
171
150
  request :get_memory_usage_detail_summary
172
- request :get_storage_usage_detail
173
- request :get_storage_usage_detail_summary
174
- request :get_operating_system_family
175
- request :get_operating_system_families
176
- request :get_operating_system
177
- request :get_template
178
- request :get_templates
179
151
  request :get_monitor
180
152
  request :get_monitors
181
- request :get_backup_internet_service
182
- request :get_backup_internet_services
183
- request :get_rnat
184
- request :get_rnats
185
- request :get_association
186
- request :get_associations
187
- request :get_admin_organization
188
- request :get_admin_organizations
189
- request :get_ssh_key
190
- request :get_ssh_keys
153
+ request :get_network
154
+ request :get_network_summary
155
+ request :get_networks
156
+ request :get_node
157
+ request :get_nodes
158
+ request :get_operating_system
159
+ request :get_operating_system_families
160
+ request :get_organization
161
+ request :get_organizations
191
162
  request :get_password_complexity_rule
192
163
  request :get_password_complexity_rules
193
- request :get_authentication_level
194
- request :get_authentication_levels
195
- request :get_login_banner
196
- request :get_login_banners
197
- request :get_user
198
- request :get_users
164
+ request :get_physical_device
165
+ request :get_physical_devices
166
+ request :get_public_ip
167
+ request :get_public_ips
168
+ request :get_rnat
169
+ request :get_rnats
199
170
  request :get_role
200
171
  request :get_roles
201
- request :get_api_key
202
- request :get_api_keys
172
+ request :get_row
173
+ request :get_rows
174
+ request :get_server
175
+ request :get_server_configuration_option
176
+ request :get_server_configuration_options
177
+ request :get_servers
178
+ request :get_ssh_key
179
+ request :get_ssh_keys
180
+ request :get_storage_usage_detail
181
+ request :get_storage_usage_detail_summary
203
182
  request :get_support_ticket
204
183
  request :get_support_tickets
205
- request :get_ip_address
206
- request :get_ip_addresses
207
- request :get_catalog_configuration
208
- request :get_catalog_configurations
209
- request :compute_pool_edit
210
- request :virtual_machine_create_from_template
211
- request :virtual_machine_import
212
- request :virtual_machine_copy
213
- request :virtual_machine_copy_identical
214
- request :virtual_machine_edit
215
- request :virtual_machine_add_ip
216
- request :virtual_machine_edit_hardware_configuration
217
- request :virtual_machine_delete
218
- request :virtual_machine_upload_file
184
+ request :get_tag
185
+ request :get_tags
186
+ request :get_task
187
+ request :get_tasks
188
+ request :get_template
189
+ request :get_templates
190
+ request :get_trusted_network_group
191
+ request :get_trusted_network_groups
192
+ request :get_user
193
+ request :get_users
194
+ request :get_virtual_machine_assigned_ips
195
+ request :get_detached_disks
196
+ request :get_detached_disk
197
+ request :groups_create
198
+ request :groups_delete
199
+ request :groups_edit
200
+ request :groups_movedown
201
+ request :groups_moveup
219
202
  request :internet_service_create
220
- request :internet_service_edit
221
203
  request :internet_service_delete
222
- request :backup_internet_service_create
223
- request :backup_internet_service_edit
224
- request :backup_internet_service_delete
225
- request :node_service_create
226
- request :node_service_delete
227
- request :node_service_edit
204
+ request :internet_service_edit
228
205
  request :monitors_create_default
229
- request :monitors_create_ping
230
- request :monitors_create_http
231
206
  request :monitors_create_ecv
207
+ request :monitors_create_http
232
208
  request :monitors_create_loopback
233
- request :monitors_edit_ping
234
- request :monitors_edit_http
209
+ request :monitors_create_ping
210
+ request :monitors_disable
235
211
  request :monitors_edit_ecv
212
+ request :monitors_edit_http
213
+ request :monitors_edit_ping
236
214
  request :monitors_enable
237
- request :monitors_disable
238
- request :rnat_associations_edit_network
215
+ request :node_service_create
216
+ request :node_service_delete
217
+ request :node_service_edit
218
+ request :power_off
219
+ request :power_on
220
+ request :power_reset
221
+ request :power_shutdown
222
+ request :public_ip_activate
239
223
  request :rnat_associations_create_device
240
224
  request :rnat_associations_delete
225
+ request :rnat_associations_edit_network
241
226
  request :rows_create
227
+ request :rows_delete
242
228
  request :rows_edit
243
- request :rows_moveup
244
229
  request :rows_movedown
245
- request :rows_delete
246
- request :groups_create
247
- request :groups_edit
248
- request :groups_moveup
249
- request :groups_movedown
250
- request :groups_delete
230
+ request :rows_moveup
251
231
  request :trusted_network_groups_create
252
- request :trusted_network_groups_edit
253
232
  request :trusted_network_groups_delete
254
- request :firewall_acls_create
255
- request :firewall_acls_delete
256
- request :public_ip_activate
257
- request :power_on
258
- request :power_off
259
- request :power_reset
260
- request :power_shutdown
233
+ request :trusted_network_groups_edit
234
+ request :virtual_machine_edit_assigned_ips
235
+ request :virtual_machine_copy
236
+ request :virtual_machine_copy_identical
237
+ request :virtual_machine_create_from_template
238
+ request :virtual_machine_delete
239
+ request :virtual_machine_edit
240
+ request :virtual_machine_edit_hardware_configuration
241
+ request :virtual_machine_import
242
+ request :virtual_machine_upload_file
243
+ request :virtual_machine_detach_disk
244
+ request :virtual_machine_attach_disk
261
245
 
262
246
  module Shared
263
247
 
264
248
  attr_reader :versions_uri
265
249
 
266
- def default_organization_uri
267
- @default_organization_uri ||= begin
268
- unless @login_results
269
- do_login
270
- end
271
- case @login_results.body[:Org]
272
- when Array
273
- @login_results.body[:Org].first[:href]
274
- when Hash
275
- @login_results.body[:Org][:href]
276
- else
277
- nil
278
- end
279
- end
280
- end
281
-
282
- # login handles the auth, but we just need the Set-Cookie
283
- # header from that call.
284
- def do_login
285
- @login_results = get_organizations
286
- end
287
-
288
- def ecloud_xmlns
289
- {
290
- "xmlns" => "urn:tmrk:eCloudExtensions-2.8",
291
- "xmlns:i" => "http://www.w3.org/2001/XMLSchema-instance"
292
- }
293
- end
294
-
295
- def ensure_unparsed(uri)
296
- if uri.is_a?(String)
297
- uri
298
- else
299
- uri.to_s
300
- end
301
- end
302
-
303
- def supported_versions
304
- @supported_versions ||= get_versions(@versions_uri).body[:VersionInfo]
305
- end
306
-
307
- def xmlns
308
- { "xmlns" => "http://www.vmware.com/vcloud/v0.8",
309
- "xmlns:xsi" => "http://www.w3.org/2001/XMLSchema-instance",
310
- "xmlns:xsd" => "http://www.w3.org/2001/XMLSchema" }
311
- end
312
-
313
250
  def validate_data(required_opts = [], options = {})
314
251
  unless required_opts.all? { |opt| options.has_key?(opt) }
315
252
  raise ArgumentError.new("Required data missing: #{(required_opts - options.keys).map(&:inspect).join(", ")}")
316
253
  end
317
254
  end
318
255
 
319
- end
320
-
321
- class Mock
322
- def self.data
323
- @data ||= Hash.new do |hash, key|
324
- hash[key] = {}
325
- end
326
- end
327
-
328
- def self.reset
329
- @data = nil
330
- end
331
-
332
- def initialize(options={})
333
- @ecloud_api_key = options[:ecloud]
334
- end
335
-
336
- def data
337
- self.class.data[@ecloud_api_key]
256
+ def id_from_uri(uri)
257
+ uri.match(/(\d+)$/)[1].to_i
338
258
  end
339
259
 
340
- def reset_data
341
- self.class.data.delete(@ecloud_api_key)
260
+ def default_organization_uri
261
+ "/cloudapi/ecloud/organizations/"
342
262
  end
343
263
  end
344
264
 
345
-
346
265
  class Real
347
266
  include Shared
348
267
 
349
268
  class << self
350
- def basic_request(*args)
351
- self.class_eval <<-EOS, __FILE__,__LINE__
352
- def #{args[0]}(uri)
353
- request({
354
- :expects => #{args[1] || 200},
355
- :method => '#{args[2] || 'GET'}',
356
- :headers => #{args[3] ? args[3].inspect : '{}'},
357
- :body => '#{args[4] ? args[4] : ''}',
358
- :parse => true,
359
- :uri => uri })
360
- end
361
- EOS
362
- end
363
-
364
- def unauthenticated_basic_request(*args)
365
- self.class_eval <<-EOS, __FILE__,__LINE__
366
- def #{args[0]}(uri)
367
- unauthenticated_request({
368
- :expects => #{args[1] || 200},
369
- :method => '#{args[2] || 'GET'}',
370
- :headers => #{args[3] ? args[3].inspect : '{}'},
371
- :parse => true,
372
- :uri => uri })
373
- end
374
- EOS
269
+ def basic_request(name, expects=[200], method=:get, headers={}, body='')
270
+ define_method(name) do |uri|
271
+ request({
272
+ :expects => expects,
273
+ :method => method,
274
+ :headers => headers,
275
+ :body => body,
276
+ :parse => true,
277
+ :uri => uri
278
+ })
279
+ end
375
280
  end
376
281
  end
377
282
 
378
283
 
379
284
  def initialize(options = {})
380
- require 'builder'
381
285
  require 'fog/core/parser'
382
286
  @connections = {}
383
287
  @connection_options = options[:connection_options] || {}
@@ -392,26 +296,14 @@ module Fog
392
296
  @username = options[:ecloud_username]
393
297
  @password = options[:ecloud_password]
394
298
  if @username.nil? || @password.nil?
395
- raise RuntimeError, "No credentials (cloud auth, or basic auth) passed!"
299
+ raise ArgumentError, "No credentials (cloud auth, or basic auth) passed!"
396
300
  end
397
301
  else
398
- @hmac = Fog::HMAC.new("sha256", @private_key)
302
+ @hmac = Fog::HMAC.new("sha256", @private_key)
399
303
  end
400
304
  end
401
305
 
402
- def default_organization_uri
403
- "/cloudapi/ecloud/organizations/"
404
- end
405
-
406
306
  def request(params)
407
- begin
408
- do_request(params)
409
- rescue Excon::Errors::Unauthorized => e
410
- raise RuntimeError, "Invalid authentication data: #{e}"
411
- end
412
- end
413
-
414
- def do_request(params)
415
307
  # Convert the uri to a URI if it's a string.
416
308
  if params[:uri].is_a?(String)
417
309
  params[:uri] = URI.parse(@host + params[:uri])
@@ -426,13 +318,16 @@ module Fog
426
318
  headers = set_extra_headers_for(params) || set_extra_headers_for({})
427
319
 
428
320
  # Make the request
429
- options = {:expects => params[:expects] || 200, :method => params[:method] || 'GET', :path => params[:uri].path + "#{"?#{params[:uri].query}" if params[:uri].query}", :headers => headers}
430
- unless params[:body].empty?
321
+ options = {
322
+ :expects => (params[:expects] || 200),
323
+ :method => params[:method] || 'GET',
324
+ :path => params[:uri].path + "#{"?#{params[:uri].query}" if params[:uri].query}",
325
+ :headers => headers
326
+ }
327
+ unless params[:body].nil? || params[:body].empty?
431
328
  options.merge!({:body => params[:body]})
432
329
  end
433
- #puts options[:body].inspect
434
330
  response = @connections[host_url].request(options)
435
-
436
331
  # Parse the response body into a hash
437
332
  unless response.body.empty?
438
333
  if params[:parse]
@@ -444,6 +339,7 @@ module Fog
444
339
  response.body = document.body
445
340
  end
446
341
  end
342
+
447
343
  response
448
344
  end
449
345
 
@@ -451,27 +347,27 @@ module Fog
451
347
 
452
348
  # if Authorization and x-tmrk-authorization are used, the x-tmrk-authorization takes precendence.
453
349
  def set_extra_headers_for(params)
454
- maor_headers = {
455
- 'x-tmrk-version' => @version,
456
- 'Date' => Time.now.utc.strftime("%a, %d %b %Y %H:%M:%S GMT"),
457
- }
458
- params[:headers].merge!(maor_headers)
459
- if params[:method]=="POST" || params[:method]=="PUT"
460
- params[:headers].merge!({"Content-Type" => 'application/xml'}) unless params[:headers]['Content-Type']
461
- params[:headers].merge!({"Accept" => 'application/xml'})
462
- end
463
- unless params[:body].empty?
350
+ params[:headers] = {
351
+ 'x-tmrk-version' => @version,
352
+ 'Date' => Time.now.utc.strftime("%a, %d %b %Y %H:%M:%S GMT"),
353
+ }.merge(params[:headers] || {})
354
+ if params[:method]=="POST" || params[:method]=="PUT"
355
+ params[:headers].merge!({"Content-Type" => 'application/xml'}) unless params[:headers]['Content-Type']
356
+ params[:headers].merge!({"Accept" => 'application/xml'})
357
+ end
358
+ unless params[:body].nil? || params[:body].empty?
464
359
  params[:headers].merge!({"x-tmrk-contenthash" => "Sha256 #{Base64.encode64(Digest::SHA2.digest(params[:body].to_s)).chomp}"})
465
- end
466
- if @authentication_method == :basic_auth
467
- params[:headers].merge!({'Authorization' => "Basic #{Base64.encode64(@username+":"+@password).delete("\r\n")}"})
468
- elsif @authentication_method == :cloud_api_auth
469
- signature = cloud_api_signature(params)
470
- params[:headers].merge!({
471
- "x-tmrk-authorization" => %{CloudApi AccessKey="#{@access_key}" SignatureType="HmacSha256" Signature="#{signature}"}
472
- })
473
- end
474
- params[:headers]
360
+ end
361
+ if @authentication_method == :basic_auth
362
+ params[:headers].merge!({'Authorization' => "Basic #{Base64.encode64(@username+":"+@password).delete("\r\n")}"})
363
+ elsif @authentication_method == :cloud_api_auth
364
+ signature = cloud_api_signature(params)
365
+ params[:headers].merge!({
366
+ "x-tmrk-authorization" => %{CloudApi AccessKey="#{@access_key}" SignatureType="HmacSha256" Signature="#{signature}"},
367
+ "Authorization" => %{CloudApi AccessKey="#{@access_key}" SignatureType="HmacSha256" Signature="#{signature}"}
368
+ })
369
+ end
370
+ params[:headers]
475
371
  end
476
372
 
477
373
  def cloud_api_signature(params)
@@ -480,13 +376,14 @@ module Fog
480
376
  path = params[:uri].path
481
377
  canonicalized_headers = canonicalize_headers(headers)
482
378
  canonicalized_resource = canonicalize_resource(path)
483
- string = [ verb,
484
- headers['Content-Length'].to_s,
485
- headers['Content-Type'].to_s,
486
- headers['Date'].to_s,
487
- canonicalized_headers,
488
- canonicalized_resource + "\n"
489
- ].join("\n")
379
+ string = [
380
+ verb,
381
+ headers['Content-Length'].to_s,
382
+ headers['Content-Type'].to_s,
383
+ headers['Date'].to_s,
384
+ canonicalized_headers,
385
+ canonicalized_resource + "\n"
386
+ ].join("\n")
490
387
  Base64.encode64(@hmac.sign(string)).chomp
491
388
  end
492
389
 
@@ -510,6 +407,421 @@ module Fog
510
407
  end
511
408
 
512
409
 
410
+ class Mock
411
+ include Shared
412
+
413
+ def self.data
414
+ @data ||= Hash.new do |hash, key|
415
+ hash[key] = begin
416
+ compute_pool_id = Fog.credentials[:ecloud_compute_pool_id] || Fog::Mock.random_numbers(3).to_i
417
+ environment_id = Fog.credentials[:ecloud_environment_id] || Fog::Mock.random_numbers(3).to_i
418
+ public_ip_id = Fog.credentials[:ecloud_public_ip_id] || Fog::Mock.random_numbers(6).to_i
419
+ internet_service_id = Fog::Mock.random_numbers(6).to_i
420
+ node_service_id = Fog::Mock.random_numbers(6).to_i
421
+ environment_name = Fog.credentials[:ecloud_environment_name] || Fog::Mock.random_letters(12)
422
+ location_id = Fog::Mock.random_numbers(4).to_i
423
+ network_id = Fog.credentials[:ecloud_network_id] || Fog::Mock.random_numbers(6).to_i
424
+ network_ip = Fog::Ecloud.ip_address
425
+ public_ip = Fog.credentials[:ecloud_public_ip_name] || Fog::Ecloud.ip_address
426
+ ip_address_id = Fog::Ecloud.ip_address
427
+ ip_address2_id = Fog::Ecloud.ip_address
428
+ operating_system_id = Fog::Mock.random_numbers(7).to_i
429
+ operating_system_family_id = Fog::Mock.random_numbers(7).to_i
430
+ organization_id = Fog::Mock.random_numbers(7).to_i
431
+ organization_name = Fog::Mock.random_letters(7)
432
+ template_id = Fog.credentials[:ecloud_template_id] || Fog::Mock.random_numbers(7).to_i
433
+ ssh_key_id = Fog.credentials[:ecloud_ssh_key_id] || Fog::Mock.random_numbers(4).to_i
434
+ ssh_key_name = Fog.credentials[:ecloud_ssh_key_name] || "root"
435
+
436
+ environment = {
437
+ :id => environment_id,
438
+ :href => "/cloudapi/ecloud/environments/#{environment_id}",
439
+ :name => environment_name,
440
+ :type => "application/vnd.tmrk.cloud.environment"
441
+ }
442
+
443
+ organization = {
444
+ :href => "/cloudapi/ecloud/organizations/#{organization_id}",
445
+ :type => "application/vnd.tmrk.cloud.organization",
446
+ :name => organization_name,
447
+ :Links => {
448
+ :Link => [
449
+ Fog::Ecloud.keep(environment, :href, :name, :type),
450
+ {
451
+ :href => "/cloudapi/ecloud/admin/organizations/#{organization_id}",
452
+ :name => organization_name,
453
+ :type => "application/vnd.tmrk.cloud.admin.organization",
454
+ :rel => "alternate",
455
+ },
456
+ {
457
+ :href => "/cloudapi/ecloud/devicetags/organizations/#{organization_id}",
458
+ :type => "application/vnd.tmrk.cloud.deviceTag; type=collection",
459
+ :rel => "down",
460
+ },
461
+ {
462
+ :href => "/cloudapi/ecloud/alerts/organizations/#{organization_id}",
463
+ :type => "application/vnd.tmrk.cloud.alertLog",
464
+ :rel => "down",
465
+ },
466
+ ],
467
+ },
468
+ :Locations => {
469
+ :Location => [
470
+ {
471
+ :href => "/cloudapi/ecloud/locations/#{location_id}",
472
+ :name => organization_name,
473
+ :Catalog => {
474
+ :href => "/cloudapi/ecloud/admin/catalog/organizations/#{organization_id}/locations/#{location_id}",
475
+ :type => "application/vnd.tmrk.cloud.admin.catalogEntry; type=collection"
476
+ },
477
+ :Environments => { :Environment => [environment] }
478
+ }
479
+ ]
480
+ }
481
+ }
482
+ environment.merge!(
483
+ :Links => {
484
+ :Link => [ Fog::Ecloud.keep(organization, :href, :name, :type), ]
485
+ }
486
+ )
487
+
488
+ admin_organization = {
489
+ :id => organization_id,
490
+ :href => "/cloudapi/ecloud/admin/organizations/#{organization_id}",
491
+ :type => "application/vnd.tmrk.cloud.admin.organization",
492
+ :name => organization_name,
493
+ :Links => {
494
+ :Link => [
495
+ Fog::Ecloud.keep(organization, :href, :type, :name)
496
+ ],
497
+ },
498
+ :organization_id => organization_id,
499
+ }
500
+
501
+ compute_pool = {
502
+ :id => compute_pool_id,
503
+ :href => "/cloudapi/ecloud/computepools/#{compute_pool_id}",
504
+ :name => Fog::Mock.random_letters(12),
505
+ :type => "application/vnd.tmrk.cloud.computePool",
506
+ :environment_id => environment_id,
507
+ :Links => {
508
+ :Link => [
509
+ Fog::Ecloud.keep(organization, :href, :name, :type),
510
+ Fog::Ecloud.keep(environment, :href, :name, :type),
511
+ ]
512
+ }
513
+ }
514
+
515
+
516
+ public_ip = {
517
+ :id => public_ip_id,
518
+ :href => "/cloudapi/ecloud/publicips/#{public_ip_id}",
519
+ :name => public_ip,
520
+ :type => "application/vnd.tmrk.cloud.publicIp",
521
+ :IpType => "none",
522
+ :environment_id => environment_id,
523
+ :Links => {
524
+ :Link => [
525
+ Fog::Ecloud.keep(environment, :href, :name, :type),
526
+ ],
527
+ },
528
+ :InternetServices => {
529
+ :InternetService => [
530
+ ],
531
+ },
532
+ }
533
+
534
+ internet_service = {
535
+ :id => internet_service_id,
536
+ :href => "/cloudapi/ecloud/internetservices/#{internet_service_id}",
537
+ :name => Fog::Mock.random_letters(6),
538
+ :type => "application/vnd.tmrk.cloud.internetService",
539
+ :public_ip_id => public_ip_id,
540
+ :Links => {
541
+ :Link => [
542
+ Fog::Ecloud.keep(public_ip, :href, :name, :type),
543
+ ],
544
+ },
545
+ :NodeServices => {
546
+ :NodeService => [
547
+ ]
548
+ },
549
+ }
550
+
551
+ node_service = {
552
+ :id => node_service_id,
553
+ :href => "/cloudapi/ecloud/nodeservices/#{node_service_id}",
554
+ :name => Fog::Mock.random_letters(6),
555
+ :type => "application/vnd.tmrk.cloud.nodeService",
556
+ :internet_service_id => internet_service_id,
557
+ :Links => {
558
+ :Link => [
559
+ Fog::Ecloud.keep(internet_service, :href, :name, :type)
560
+ ],
561
+ },
562
+ }
563
+
564
+ internet_service[:NodeServices][:NodeService].push(node_service)
565
+ public_ip[:InternetServices][:InternetService].push(internet_service)
566
+
567
+ network = {
568
+ :id => network_id,
569
+ :href => "/cloudapi/ecloud/networks/#{network_id}",
570
+ :name => "#{network_ip}/#{Fog::Mock.random_numbers(2)}",
571
+ :type => "application/vnd.tmrk.cloud.network",
572
+ :Address => network_ip,
573
+ :NetworkType => "Dmz",
574
+ :BroadcastAddress => network_ip,
575
+ :GatewayAddress => network_ip,
576
+ :environment_id => environment_id,
577
+ :Links => {
578
+ :Link => [
579
+ Fog::Ecloud.keep(environment, :href, :name, :type),
580
+ ]
581
+ },
582
+ :IpAddresses => {
583
+ :IpAddress => [],
584
+ },
585
+ }
586
+
587
+ ip_address = {
588
+ :id => ip_address_id,
589
+ :href => "/cloudapi/ecloud/ipaddresses/networks/#{network_id}/#{ip_address_id}",
590
+ :name => ip_address_id,
591
+ :type => "application/vnd.tmrk.cloud.ipAddress",
592
+ :network_id => network_id,
593
+ :Links => {
594
+ :Link => [ Fog::Ecloud.keep(network, :href, :name, :type), ],
595
+ },
596
+ :Reserved => "false",
597
+ :Host => nil,
598
+ :DetectedOn => nil,
599
+ }
600
+
601
+ ip_address2 = ip_address.dup.merge(:id => ip_address2_id, :href => "/cloudapi/ecloud/ipaddresses/networks/#{network_id}/#{ip_address2_id}", :name => ip_address2_id)
602
+
603
+ network[:IpAddresses][:IpAddress].push(ip_address).push(ip_address2)
604
+
605
+
606
+ short_name = "solaris10_64guest"
607
+ operating_system = {
608
+ :short_name => short_name,
609
+ :compute_pool_id => compute_pool_id,
610
+ :href => "/cloudapi/ecloud/operatingsystems/#{short_name}/computepools/#{compute_pool_id}",
611
+ :name => "Sun Solaris 10 (64-bit)",
612
+ :type => "application/vnd.tmrk.cloud.operatingSystem",
613
+ :FamilyName => "Solaris",
614
+ :Links => {
615
+ :Link => Fog::Ecloud.keep(compute_pool, :href, :name, :type),
616
+ },
617
+ :ConfigurationOptions => {
618
+ :Processor => {
619
+ :Minimum => "1",
620
+ :Maximum => "8",
621
+ :StepFactor => "1"
622
+ },
623
+ :Memory => {
624
+ :MinimumSize => {
625
+ :Unit => "MB",
626
+ :Value => "800"
627
+ },
628
+ :MaximumSize => {
629
+ :Unit => "MB",
630
+ :Value => "16384"
631
+ },
632
+ :StepFactor => {
633
+ :Unit => "MB",
634
+ :Value => "4"
635
+ }
636
+ },
637
+ :Disk => {
638
+ :Minimum => "1",
639
+ :Maximum => "15",
640
+ :SystemDisk => {
641
+ :ResourceCapacityRange => {
642
+ :MinimumSize => {
643
+ :Unit => "GB",
644
+ :Value => "1"
645
+ },
646
+ :MaximumSize => {
647
+ :Unit => "GB",
648
+ :Value => "512"
649
+ },
650
+ :StepFactor => {
651
+ :Unit => "GB",
652
+ :Value => "1"}
653
+ },
654
+ :MonthlyCost => "0"
655
+ },
656
+ :DataDisk => {
657
+ :ResourceCapacityRange => {
658
+ :MinimumSize => {
659
+ :Unit => "GB",
660
+ :Value => "1"
661
+ },
662
+ :MaximumSize => {
663
+ :Unit => "GB",
664
+ :Value => "512"
665
+ },
666
+ :StepFactor => {
667
+ :Unit => "GB",
668
+ :Value => "1"
669
+ }
670
+ },
671
+ :MonthlyCost => "0"
672
+ }
673
+ },
674
+ :NetworkAdapter=> {
675
+ :Minimum => "1",
676
+ :Maximum => "4",
677
+ :StepFactor => "1"
678
+ }
679
+ }
680
+ }
681
+
682
+
683
+ template = {
684
+ :id => template_id,
685
+ :href => "/cloudapi/ecloud/templates/#{template_id}/computepools/#{compute_pool_id}",
686
+ :type => "application/vnd.tmrk.cloud.template",
687
+ :name => "Sun Solaris 10 (x64)",
688
+ :compute_pool_id => compute_pool_id,
689
+ :OperatingSystem => Fog::Ecloud.keep(operating_system, :href, :name, :type),
690
+ :Memory => {
691
+ :MinimumSize => {
692
+ :Unit => "MB",
693
+ :Value => "800"
694
+ },
695
+ :MaximumSize => {
696
+ :Unit => "MB",
697
+ :Value => "16384"
698
+ },
699
+ :StepFactor => {
700
+ :Unit => "MB",
701
+ :Value => "4"
702
+ }
703
+ },
704
+ :Storage => {
705
+ :Size => {
706
+ :Unit => "GB",
707
+ :Value => "7"
708
+ }
709
+ },
710
+ :NetworkAdapters => "1",
711
+ :Links => {
712
+ :Link => [
713
+ Fog::Ecloud.keep(compute_pool, :href, :name, :type),
714
+ ]
715
+ }
716
+ }
717
+
718
+ operating_system_family = {
719
+ :id => operating_system_family_id,
720
+ :compute_pool_id => compute_pool_id,
721
+ :OperatingSystemFamily => {
722
+ :Name => "Linux",
723
+ :OperatingSystems => {
724
+ :OperatingSystem => [Fog::Ecloud.keep(operating_system, :href, :name, :type)],
725
+ }
726
+ },
727
+ :Links => {
728
+ :Link => [
729
+ Fog::Ecloud.keep(compute_pool, :href, :name, :type),
730
+ ]
731
+ }
732
+ }
733
+
734
+ ssh_key = {
735
+ :id => ssh_key_id,
736
+ :href => "/cloudapi/ecloud/admin/sshKeys/#{ssh_key_id}",
737
+ :name => ssh_key_name,
738
+ :admin_organization_id => organization_id,
739
+ :Links => {
740
+ :Link => [
741
+ Fog::Ecloud.keep(admin_organization, :href, :name, :type),
742
+ Fog::Ecloud.keep(organization, :href, :name, :type),
743
+ ]
744
+ },
745
+ :Default => "true",
746
+ :FingerPrint => Fog::Ecloud.mac_address
747
+ }
748
+
749
+ layout = {
750
+ :id => environment_id,
751
+ :href => "/cloudapi/ecloud/layout/environments/#{environment_id}",
752
+ :type => "application/vnd.tmrk.cloud.deviceLayout",
753
+ :Links => {
754
+ :Link => [
755
+ Fog::Ecloud.keep(environment, :name, :href, :type),
756
+ ],
757
+ },
758
+ :Rows => {
759
+ :Row => [
760
+ ],
761
+ },
762
+ :environment_id => environment_id
763
+ }
764
+
765
+
766
+ {
767
+ :compute_pools => {compute_pool_id => compute_pool},
768
+ :environments => {environment_id => environment},
769
+ :public_ips => {public_ip_id => public_ip},
770
+ :internet_services => {internet_service_id => internet_service},
771
+ :node_services => {node_service_id => node_service},
772
+ :networks => {network_id => network},
773
+ :organizations => {organization_id => organization},
774
+ :admin_organizations => {organization_id => admin_organization},
775
+ :operating_systems => {operating_system_id => operating_system},
776
+ :operating_system_families => {operating_system_family_id => operating_system_family},
777
+ :servers => {},
778
+ :tasks => {},
779
+ :templates => {template_id => template},
780
+ :ssh_keys => {ssh_key_id => ssh_key},
781
+ :detached_disks => {},
782
+ :template_href => (Fog.credentials[:ecloud_template_href] || "/cloudapi/ecloud/templates/#{template_id}/computepools/#{compute_pool_id}"),
783
+ :rows => {},
784
+ :groups => {},
785
+ :layouts => {environment_id => layout},
786
+ }
787
+ end
788
+ end
789
+ end
790
+
791
+ def self.reset
792
+ @data = nil
793
+ end
794
+
795
+ def initialize(options={})
796
+ @ecloud_api_key = options[:ecloud]
797
+ end
798
+
799
+ def data
800
+ self.class.data[@ecloud_api_key]
801
+ end
802
+
803
+ def reset_data
804
+ self.class.data.delete(@ecloud_api_key)
805
+ end
806
+
807
+ def response(params={})
808
+ body = params[:body]
809
+ headers = {
810
+ "Content-Type" => "application/xml"
811
+ }.merge(params[:headers] || {})
812
+ status = params[:status] || 200
813
+
814
+ response = Excon::Response.new(:body => body, :headers => headers, :status => status)
815
+ if params.has_key?(:expects) && ![*params[:expects]].include?(response.status)
816
+ raise(Excon::Errors.status_error(params, response))
817
+ else response
818
+ end
819
+ end
820
+
821
+ def deep_copy(o)
822
+ Marshal.load(Marshal.dump(o))
823
+ end
824
+ end
513
825
  end
514
826
  end
515
827
  end