fog 1.1.0 → 1.2.0

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 (780) hide show
  1. data/.gitignore +6 -0
  2. data/README.rdoc +1 -1
  3. data/Rakefile +7 -19
  4. data/changelog.txt +827 -2
  5. data/docs/_layouts/default.html +1 -1
  6. data/docs/compute/index.markdown +15 -1
  7. data/docs/index.markdown +2 -2
  8. data/docs/storage/index.markdown +4 -4
  9. data/fog.gemspec +8 -5
  10. data/lib/fog/aws/auto_scaling.rb +2 -17
  11. data/lib/fog/aws/beanstalk.rb +140 -0
  12. data/lib/fog/aws/cloud_formation.rb +1 -16
  13. data/lib/fog/aws/cloud_watch.rb +2 -17
  14. data/lib/fog/aws/compute.rb +22 -21
  15. data/lib/fog/aws/dns.rb +2 -2
  16. data/lib/fog/aws/dynamodb.rb +162 -0
  17. data/lib/fog/aws/elasticache.rb +1 -7
  18. data/lib/fog/aws/elb/policy_types.rb +35 -0
  19. data/lib/fog/aws/elb.rb +34 -24
  20. data/lib/fog/aws/emr.rb +5 -4
  21. data/lib/fog/aws/iam.rb +16 -1
  22. data/lib/fog/aws/models/auto_scaling/activity.rb +1 -1
  23. data/lib/fog/aws/models/auto_scaling/group.rb +2 -2
  24. data/lib/fog/aws/models/beanstalk/application.rb +62 -0
  25. data/lib/fog/aws/models/beanstalk/applications.rb +25 -0
  26. data/lib/fog/aws/models/beanstalk/environment.rb +129 -0
  27. data/lib/fog/aws/models/beanstalk/environments.rb +29 -0
  28. data/lib/fog/aws/models/beanstalk/event.rb +20 -0
  29. data/lib/fog/aws/models/beanstalk/events.rb +19 -0
  30. data/lib/fog/aws/models/beanstalk/template.rb +62 -0
  31. data/lib/fog/aws/models/beanstalk/templates.rb +70 -0
  32. data/lib/fog/aws/models/beanstalk/version.rb +79 -0
  33. data/lib/fog/aws/models/beanstalk/versions.rb +31 -0
  34. data/lib/fog/aws/models/cloud_watch/metric_statistic.rb +1 -2
  35. data/lib/fog/aws/models/compute/address.rb +7 -4
  36. data/lib/fog/aws/models/compute/addresses.rb +2 -2
  37. data/lib/fog/aws/models/compute/flavors.rb +1 -1
  38. data/lib/fog/aws/models/compute/key_pairs.rb +2 -2
  39. data/lib/fog/aws/models/compute/security_group.rb +3 -3
  40. data/lib/fog/aws/models/compute/security_groups.rb +30 -5
  41. data/lib/fog/aws/models/compute/server.rb +5 -1
  42. data/lib/fog/aws/models/compute/servers.rb +2 -2
  43. data/lib/fog/aws/models/compute/subnet.rb +58 -0
  44. data/lib/fog/aws/models/compute/subnets.rb +99 -0
  45. data/lib/fog/aws/models/compute/volumes.rb +3 -3
  46. data/lib/fog/aws/models/compute/vpc.rb +63 -0
  47. data/lib/fog/aws/models/compute/vpcs.rb +93 -0
  48. data/lib/fog/aws/models/dns/record.rb +37 -23
  49. data/lib/fog/aws/models/dns/records.rb +3 -3
  50. data/lib/fog/aws/models/elasticache/cluster.rb +1 -1
  51. data/lib/fog/aws/models/elb/listener.rb +9 -7
  52. data/lib/fog/aws/models/elb/load_balancer.rb +6 -0
  53. data/lib/fog/aws/models/storage/directory.rb +22 -1
  54. data/lib/fog/aws/models/storage/file.rb +60 -9
  55. data/lib/fog/aws/models/storage/files.rb +4 -4
  56. data/lib/fog/aws/models/storage/version.rb +36 -0
  57. data/lib/fog/aws/models/storage/versions.rb +38 -0
  58. data/lib/fog/aws/parsers/auto_scaling/describe_scheduled_actions.rb +3 -3
  59. data/lib/fog/aws/parsers/beanstalk/check_dns_availability.rb +19 -0
  60. data/lib/fog/aws/parsers/beanstalk/create_application.rb +24 -0
  61. data/lib/fog/aws/parsers/beanstalk/create_application_version.rb +26 -0
  62. data/lib/fog/aws/parsers/beanstalk/create_configuration_template.rb +29 -0
  63. data/lib/fog/aws/parsers/beanstalk/create_environment.rb +37 -0
  64. data/lib/fog/aws/parsers/beanstalk/create_storage_location.rb +18 -0
  65. data/lib/fog/aws/parsers/beanstalk/describe_application_versions.rb +26 -0
  66. data/lib/fog/aws/parsers/beanstalk/describe_applications.rb +24 -0
  67. data/lib/fog/aws/parsers/beanstalk/describe_configuration_options.rb +32 -0
  68. data/lib/fog/aws/parsers/beanstalk/describe_configuration_settings.rb +30 -0
  69. data/lib/fog/aws/parsers/beanstalk/describe_environment_resources.rb +26 -0
  70. data/lib/fog/aws/parsers/beanstalk/describe_environments.rb +38 -0
  71. data/lib/fog/aws/parsers/beanstalk/describe_events.rb +27 -0
  72. data/lib/fog/aws/parsers/beanstalk/empty.rb +27 -0
  73. data/lib/fog/aws/parsers/beanstalk/list_available_solution_stacks.rb +21 -0
  74. data/lib/fog/aws/parsers/beanstalk/parser.rb +93 -0
  75. data/lib/fog/aws/parsers/beanstalk/retrieve_environment_info.rb +22 -0
  76. data/lib/fog/aws/parsers/beanstalk/terminate_environment.rb +37 -0
  77. data/lib/fog/aws/parsers/beanstalk/update_application.rb +24 -0
  78. data/lib/fog/aws/parsers/beanstalk/update_application_version.rb +26 -0
  79. data/lib/fog/aws/parsers/beanstalk/update_configuration_template.rb +29 -0
  80. data/lib/fog/aws/parsers/beanstalk/update_environment.rb +37 -0
  81. data/lib/fog/aws/parsers/beanstalk/validate_configuration_settings.rb +22 -0
  82. data/lib/fog/aws/parsers/compute/allocate_address.rb +1 -1
  83. data/lib/fog/aws/parsers/compute/associate_address.rb +25 -0
  84. data/lib/fog/aws/parsers/compute/create_subnet.rb +51 -0
  85. data/lib/fog/aws/parsers/compute/create_vpc.rb +51 -0
  86. data/lib/fog/aws/parsers/compute/delete_subnet.rb +24 -0
  87. data/lib/fog/aws/parsers/compute/delete_vpc.rb +24 -0
  88. data/lib/fog/aws/parsers/compute/describe_addresses.rb +1 -1
  89. data/lib/fog/aws/parsers/compute/describe_images.rb +20 -13
  90. data/lib/fog/aws/parsers/compute/describe_instance_status.rb +97 -0
  91. data/lib/fog/aws/parsers/compute/describe_instances.rb +2 -2
  92. data/lib/fog/aws/parsers/compute/describe_security_groups.rb +4 -4
  93. data/lib/fog/aws/parsers/compute/describe_subnets.rb +49 -0
  94. data/lib/fog/aws/parsers/compute/describe_volume_status.rb +70 -0
  95. data/lib/fog/aws/parsers/compute/describe_vpcs.rb +49 -0
  96. data/lib/fog/aws/parsers/dns/list_resource_record_sets.rb +15 -7
  97. data/lib/fog/aws/parsers/elb/describe_load_balancer_policies.rb +64 -0
  98. data/lib/fog/aws/parsers/elb/describe_load_balancer_policy_types.rb +70 -0
  99. data/lib/fog/aws/parsers/sns/confirm_subscription.rb +1 -1
  100. data/lib/fog/aws/parsers/sns/create_topic.rb +1 -1
  101. data/lib/fog/aws/parsers/sns/list_subscriptions.rb +2 -2
  102. data/lib/fog/aws/parsers/sns/list_topics.rb +1 -1
  103. data/lib/fog/aws/parsers/sns/subscribe.rb +1 -1
  104. data/lib/fog/aws/parsers/sqs/receive_message.rb +1 -1
  105. data/lib/fog/aws/parsers/storage/get_bucket_lifecycle.rb +32 -0
  106. data/lib/fog/aws/parsers/storage/get_bucket_object_versions.rb +1 -1
  107. data/lib/fog/aws/parsers/storage/get_bucket_versioning.rb +1 -1
  108. data/lib/fog/aws/parsers/sts/get_session_token.rb +31 -0
  109. data/lib/fog/aws/rds.rb +51 -18
  110. data/lib/fog/aws/requests/auto_scaling/delete_launch_configuration.rb +10 -1
  111. data/lib/fog/aws/requests/auto_scaling/describe_launch_configurations.rb +16 -7
  112. data/lib/fog/aws/requests/auto_scaling/describe_scheduled_actions.rb +5 -0
  113. data/lib/fog/aws/requests/auto_scaling/put_scheduled_update_group_action.rb +13 -3
  114. data/lib/fog/aws/requests/beanstalk/check_dns_availability.rb +27 -0
  115. data/lib/fog/aws/requests/beanstalk/create_application.rb +29 -0
  116. data/lib/fog/aws/requests/beanstalk/create_application_version.rb +41 -0
  117. data/lib/fog/aws/requests/beanstalk/create_configuration_template.rb +44 -0
  118. data/lib/fog/aws/requests/beanstalk/create_environment.rb +50 -0
  119. data/lib/fog/aws/requests/beanstalk/create_storage_location.rb +27 -0
  120. data/lib/fog/aws/requests/beanstalk/delete_application.rb +29 -0
  121. data/lib/fog/aws/requests/beanstalk/delete_application_version.rb +36 -0
  122. data/lib/fog/aws/requests/beanstalk/delete_configuration_template.rb +34 -0
  123. data/lib/fog/aws/requests/beanstalk/delete_environment_configuration.rb +34 -0
  124. data/lib/fog/aws/requests/beanstalk/describe_application_versions.rb +34 -0
  125. data/lib/fog/aws/requests/beanstalk/describe_applications.rb +30 -0
  126. data/lib/fog/aws/requests/beanstalk/describe_configuration_options.rb +40 -0
  127. data/lib/fog/aws/requests/beanstalk/describe_configuration_settings.rb +31 -0
  128. data/lib/fog/aws/requests/beanstalk/describe_environment_resources.rb +29 -0
  129. data/lib/fog/aws/requests/beanstalk/describe_environments.rb +40 -0
  130. data/lib/fog/aws/requests/beanstalk/describe_events.rb +29 -0
  131. data/lib/fog/aws/requests/beanstalk/list_available_solution_stacks.rb +27 -0
  132. data/lib/fog/aws/requests/beanstalk/rebuild_environment.rb +30 -0
  133. data/lib/fog/aws/requests/beanstalk/request_environment_info.rb +29 -0
  134. data/lib/fog/aws/requests/beanstalk/restart_app_server.rb +29 -0
  135. data/lib/fog/aws/requests/beanstalk/retrieve_environment_info.rb +29 -0
  136. data/lib/fog/aws/requests/beanstalk/swap_environment_cnames.rb +29 -0
  137. data/lib/fog/aws/requests/beanstalk/terminate_environment.rb +31 -0
  138. data/lib/fog/aws/requests/beanstalk/update_application.rb +30 -0
  139. data/lib/fog/aws/requests/beanstalk/update_application_version.rb +30 -0
  140. data/lib/fog/aws/requests/beanstalk/update_configuration_template.rb +36 -0
  141. data/lib/fog/aws/requests/beanstalk/update_environment.rb +42 -0
  142. data/lib/fog/aws/requests/beanstalk/validate_configuration_settings.rb +33 -0
  143. data/lib/fog/aws/requests/compute/allocate_address.rb +11 -4
  144. data/lib/fog/aws/requests/compute/associate_address.rb +44 -17
  145. data/lib/fog/aws/requests/compute/authorize_security_group_ingress.rb +15 -17
  146. data/lib/fog/aws/requests/compute/create_security_group.rb +8 -4
  147. data/lib/fog/aws/requests/compute/create_subnet.rb +79 -0
  148. data/lib/fog/aws/requests/compute/create_tags.rb +3 -2
  149. data/lib/fog/aws/requests/compute/create_vpc.rb +71 -0
  150. data/lib/fog/aws/requests/compute/delete_security_group.rb +22 -4
  151. data/lib/fog/aws/requests/compute/delete_subnet.rb +49 -0
  152. data/lib/fog/aws/requests/compute/delete_vpc.rb +52 -0
  153. data/lib/fog/aws/requests/compute/describe_availability_zones.rb +3 -0
  154. data/lib/fog/aws/requests/compute/describe_instance_status.rb +36 -0
  155. data/lib/fog/aws/requests/compute/describe_security_groups.rb +4 -0
  156. data/lib/fog/aws/requests/compute/describe_subnets.rb +66 -0
  157. data/lib/fog/aws/requests/compute/describe_volume_status.rb +50 -0
  158. data/lib/fog/aws/requests/compute/describe_vpcs.rb +62 -0
  159. data/lib/fog/aws/requests/compute/detach_volume.rb +13 -8
  160. data/lib/fog/aws/requests/compute/disassociate_address.rb +7 -5
  161. data/lib/fog/aws/requests/compute/request_spot_instances.rb +5 -1
  162. data/lib/fog/aws/requests/compute/revoke_security_group_ingress.rb +11 -13
  163. data/lib/fog/aws/requests/compute/run_instances.rb +5 -1
  164. data/lib/fog/aws/requests/dns/change_resource_record_sets.rb +43 -28
  165. data/lib/fog/aws/requests/dns/create_hosted_zone.rb +9 -9
  166. data/lib/fog/aws/requests/dns/delete_hosted_zone.rb +7 -7
  167. data/lib/fog/aws/requests/dns/get_change.rb +5 -5
  168. data/lib/fog/aws/requests/dns/get_hosted_zone.rb +8 -8
  169. data/lib/fog/aws/requests/dns/list_hosted_zones.rb +15 -15
  170. data/lib/fog/aws/requests/dns/list_resource_record_sets.rb +23 -20
  171. data/lib/fog/aws/requests/dynamodb/batch_get_item.rb +43 -0
  172. data/lib/fog/aws/requests/dynamodb/create_table.rb +55 -0
  173. data/lib/fog/aws/requests/dynamodb/delete_item.rb +45 -0
  174. data/lib/fog/aws/requests/dynamodb/delete_table.rb +42 -0
  175. data/lib/fog/aws/requests/dynamodb/describe_table.rb +44 -0
  176. data/lib/fog/aws/requests/dynamodb/get_item.rb +43 -0
  177. data/lib/fog/aws/requests/dynamodb/list_tables.rb +29 -0
  178. data/lib/fog/aws/requests/dynamodb/put_item.rb +41 -0
  179. data/lib/fog/aws/requests/dynamodb/query.rb +44 -0
  180. data/lib/fog/aws/requests/dynamodb/scan.rb +45 -0
  181. data/lib/fog/aws/requests/dynamodb/update_item.rb +49 -0
  182. data/lib/fog/aws/requests/dynamodb/update_table.rb +46 -0
  183. data/lib/fog/aws/requests/elasticache/create_cache_cluster.rb +2 -2
  184. data/lib/fog/aws/requests/elasticache/modify_cache_cluster.rb +2 -2
  185. data/lib/fog/aws/requests/elb/create_app_cookie_stickiness_policy.rb +2 -0
  186. data/lib/fog/aws/requests/elb/create_lb_cookie_stickiness_policy.rb +3 -1
  187. data/lib/fog/aws/requests/elb/create_load_balancer.rb +7 -2
  188. data/lib/fog/aws/requests/elb/create_load_balancer_listeners.rb +10 -1
  189. data/lib/fog/aws/requests/elb/create_load_balancer_policy.rb +79 -0
  190. data/lib/fog/aws/requests/elb/delete_load_balancer_policy.rb +1 -1
  191. data/lib/fog/aws/requests/elb/describe_load_balancer_policies.rb +71 -0
  192. data/lib/fog/aws/requests/elb/describe_load_balancer_policy_types.rb +68 -0
  193. data/lib/fog/aws/requests/elb/describe_load_balancers.rb +5 -1
  194. data/lib/fog/aws/requests/elb/set_load_balancer_listener_ssl_certificate.rb +27 -0
  195. data/lib/fog/aws/requests/elb/set_load_balancer_policies_of_listener.rb +1 -1
  196. data/lib/fog/aws/requests/emr/run_job_flow.rb +9 -7
  197. data/lib/fog/aws/requests/iam/add_user_to_group.rb +24 -0
  198. data/lib/fog/aws/requests/iam/create_access_key.rb +24 -0
  199. data/lib/fog/aws/requests/iam/create_group.rb +21 -0
  200. data/lib/fog/aws/requests/iam/create_user.rb +21 -0
  201. data/lib/fog/aws/requests/iam/delete_access_key.rb +17 -0
  202. data/lib/fog/aws/requests/iam/delete_group.rb +19 -0
  203. data/lib/fog/aws/requests/iam/delete_user.rb +17 -0
  204. data/lib/fog/aws/requests/iam/delete_user_policy.rb +16 -0
  205. data/lib/fog/aws/requests/iam/list_access_keys.rb +21 -0
  206. data/lib/fog/aws/requests/iam/list_groups.rb +18 -0
  207. data/lib/fog/aws/requests/iam/list_groups_for_user.rb +24 -0
  208. data/lib/fog/aws/requests/iam/list_user_policies.rb +18 -0
  209. data/lib/fog/aws/requests/iam/list_users.rb +17 -0
  210. data/lib/fog/aws/requests/iam/put_user_policy.rb +18 -0
  211. data/lib/fog/aws/requests/iam/remove_user_from_group.rb +19 -0
  212. data/lib/fog/aws/requests/iam/upload_server_certificate.rb +4 -1
  213. data/lib/fog/aws/requests/rds/authorize_db_security_group_ingress.rb +30 -1
  214. data/lib/fog/aws/requests/rds/create_db_instance.rb +73 -7
  215. data/lib/fog/aws/requests/rds/create_db_parameter_group.rb +19 -1
  216. data/lib/fog/aws/requests/rds/create_db_security_group.rb +19 -1
  217. data/lib/fog/aws/requests/rds/create_db_snapshot.rb +38 -2
  218. data/lib/fog/aws/requests/rds/delete_db_instance.rb +18 -3
  219. data/lib/fog/aws/requests/rds/delete_db_parameter_group.rb +11 -1
  220. data/lib/fog/aws/requests/rds/delete_db_security_group.rb +11 -1
  221. data/lib/fog/aws/requests/rds/delete_db_snapshot.rb +15 -4
  222. data/lib/fog/aws/requests/rds/describe_db_instances.rb +57 -2
  223. data/lib/fog/aws/requests/rds/describe_db_parameter_groups.rb +19 -1
  224. data/lib/fog/aws/requests/rds/describe_db_parameters.rb +0 -1
  225. data/lib/fog/aws/requests/rds/describe_db_reserved_instances.rb +1 -1
  226. data/lib/fog/aws/requests/rds/describe_db_security_groups.rb +49 -3
  227. data/lib/fog/aws/requests/rds/describe_db_snapshots.rb +28 -1
  228. data/lib/fog/aws/requests/rds/modify_db_instance.rb +26 -1
  229. data/lib/fog/aws/requests/rds/reboot_db_instance.rb +17 -1
  230. data/lib/fog/aws/requests/rds/revoke_db_security_group_ingress.rb +27 -1
  231. data/lib/fog/aws/requests/sns/confirm_subscription.rb +1 -1
  232. data/lib/fog/aws/requests/sns/delete_topic.rb +1 -1
  233. data/lib/fog/aws/requests/sns/get_topic_attributes.rb +1 -1
  234. data/lib/fog/aws/requests/sns/list_subscriptions_by_topic.rb +1 -1
  235. data/lib/fog/aws/requests/sns/publish.rb +1 -1
  236. data/lib/fog/aws/requests/sns/set_topic_attributes.rb +1 -1
  237. data/lib/fog/aws/requests/sns/subscribe.rb +1 -1
  238. data/lib/fog/aws/requests/sns/unsubscribe.rb +1 -1
  239. data/lib/fog/aws/requests/sqs/change_message_visibility.rb +1 -1
  240. data/lib/fog/aws/requests/sqs/delete_message.rb +1 -1
  241. data/lib/fog/aws/requests/sqs/receive_message.rb +13 -14
  242. data/lib/fog/aws/requests/storage/{hash_to_acl.rb → acl_utils.rb} +8 -0
  243. data/lib/fog/aws/requests/storage/copy_object.rb +11 -5
  244. data/lib/fog/aws/requests/storage/delete_bucket_lifecycle.rb +30 -0
  245. data/lib/fog/aws/requests/storage/delete_object.rb +73 -2
  246. data/lib/fog/aws/requests/storage/get_bucket.rb +3 -2
  247. data/lib/fog/aws/requests/storage/get_bucket_acl.rb +7 -1
  248. data/lib/fog/aws/requests/storage/get_bucket_lifecycle.rb +41 -0
  249. data/lib/fog/aws/requests/storage/get_bucket_object_versions.rb +95 -2
  250. data/lib/fog/aws/requests/storage/get_bucket_versioning.rb +32 -0
  251. data/lib/fog/aws/requests/storage/get_object.rb +42 -12
  252. data/lib/fog/aws/requests/storage/get_object_acl.rb +7 -1
  253. data/lib/fog/aws/requests/storage/get_object_http_url.rb +10 -4
  254. data/lib/fog/aws/requests/storage/get_object_https_url.rb +10 -4
  255. data/lib/fog/aws/requests/storage/head_object.rb +7 -6
  256. data/lib/fog/aws/requests/storage/put_bucket_acl.rb +2 -2
  257. data/lib/fog/aws/requests/storage/put_bucket_lifecycle.rb +48 -0
  258. data/lib/fog/aws/requests/storage/put_bucket_versioning.rb +41 -0
  259. data/lib/fog/aws/requests/storage/put_bucket_website.rb +17 -0
  260. data/lib/fog/aws/requests/storage/put_object.rb +26 -10
  261. data/lib/fog/aws/requests/storage/put_object_acl.rb +1 -1
  262. data/lib/fog/aws/requests/storage/sync_clock.rb +1 -1
  263. data/lib/fog/aws/requests/sts/get_federation_token.rb +21 -0
  264. data/lib/fog/aws/requests/sts/get_session_token.rb +19 -0
  265. data/lib/fog/aws/ses.rb +2 -7
  266. data/lib/fog/aws/simpledb.rb +4 -17
  267. data/lib/fog/aws/sns.rb +1 -14
  268. data/lib/fog/aws/sqs.rb +5 -11
  269. data/lib/fog/aws/storage.rb +7 -23
  270. data/lib/fog/aws/sts.rb +137 -0
  271. data/lib/fog/aws.rb +40 -5
  272. data/lib/fog/{new_servers → bare_metal_cloud}/compute.rb +14 -14
  273. data/lib/fog/{new_servers → bare_metal_cloud}/requests/compute/add_server.rb +1 -1
  274. data/lib/fog/{new_servers → bare_metal_cloud}/requests/compute/cancel_server.rb +1 -1
  275. data/lib/fog/{new_servers → bare_metal_cloud}/requests/compute/get_server.rb +1 -1
  276. data/lib/fog/{new_servers → bare_metal_cloud}/requests/compute/list_images.rb +1 -1
  277. data/lib/fog/{new_servers → bare_metal_cloud}/requests/compute/list_plans.rb +1 -1
  278. data/lib/fog/{new_servers → bare_metal_cloud}/requests/compute/list_servers.rb +1 -1
  279. data/lib/fog/{new_servers → bare_metal_cloud}/requests/compute/reboot_server.rb +1 -1
  280. data/lib/fog/{new_servers.rb → bare_metal_cloud.rb} +2 -2
  281. data/lib/fog/bin/aws.rb +11 -1
  282. data/lib/fog/bin/{new_servers.rb → bare_metal_cloud.rb} +5 -5
  283. data/lib/fog/bin/clodo.rb +31 -0
  284. data/lib/fog/bin/cloudstack.rb +30 -0
  285. data/lib/fog/bin/joyent.rb +31 -0
  286. data/lib/fog/bin/ovirt.rb +30 -0
  287. data/lib/fog/bin/voxel.rb +1 -1
  288. data/lib/fog/bin.rb +5 -1
  289. data/lib/fog/bluebox/compute.rb +4 -0
  290. data/lib/fog/bluebox/models/compute/location.rb +17 -0
  291. data/lib/fog/bluebox/models/compute/locations.rb +28 -0
  292. data/lib/fog/bluebox/models/compute/server.rb +12 -5
  293. data/lib/fog/bluebox/requests/compute/create_block.rb +2 -2
  294. data/lib/fog/bluebox/requests/compute/get_location.rb +26 -0
  295. data/lib/fog/bluebox/requests/compute/get_locations.rb +24 -0
  296. data/lib/fog/brightbox/compute.rb +8 -0
  297. data/lib/fog/brightbox/models/compute/cloud_ip.rb +10 -2
  298. data/lib/fog/brightbox/models/compute/firewall_policies.rb +29 -0
  299. data/lib/fog/brightbox/models/compute/firewall_policy.rb +65 -0
  300. data/lib/fog/brightbox/models/compute/firewall_rule.rb +54 -0
  301. data/lib/fog/brightbox/models/compute/firewall_rules.rb +24 -0
  302. data/lib/fog/brightbox/models/compute/image.rb +2 -0
  303. data/lib/fog/brightbox/models/compute/server.rb +41 -6
  304. data/lib/fog/brightbox/models/compute/server_group.rb +56 -17
  305. data/lib/fog/brightbox/requests/compute/remove_firewall_policy.rb +14 -0
  306. data/lib/fog/brightbox/requests/compute/update_firewall_rule.rb +13 -0
  307. data/lib/fog/clodo/compute.rb +152 -0
  308. data/lib/fog/clodo/models/compute/image.rb +31 -0
  309. data/lib/fog/clodo/models/compute/images.rb +28 -0
  310. data/lib/fog/clodo/models/compute/server.rb +163 -0
  311. data/lib/fog/clodo/models/compute/servers.rb +36 -0
  312. data/lib/fog/clodo/requests/compute/add_ip_address.rb +49 -0
  313. data/lib/fog/clodo/requests/compute/create_server.rb +112 -0
  314. data/lib/fog/clodo/requests/compute/delete_ip_address.rb +47 -0
  315. data/lib/fog/clodo/requests/compute/delete_server.rb +44 -0
  316. data/lib/fog/clodo/requests/compute/get_image_details.rb +20 -0
  317. data/lib/fog/clodo/requests/compute/get_server_details.rb +49 -0
  318. data/lib/fog/clodo/requests/compute/list_images.rb +48 -0
  319. data/lib/fog/clodo/requests/compute/list_images_detail.rb +61 -0
  320. data/lib/fog/clodo/requests/compute/list_servers.rb +50 -0
  321. data/lib/fog/clodo/requests/compute/list_servers_detail.rb +51 -0
  322. data/lib/fog/clodo/requests/compute/move_ip_address.rb +34 -0
  323. data/lib/fog/clodo/requests/compute/reboot_server.rb +19 -0
  324. data/lib/fog/clodo/requests/compute/rebuild_server.rb +21 -0
  325. data/lib/fog/clodo/requests/compute/server_action.rb +25 -0
  326. data/lib/fog/clodo/requests/compute/start_server.rb +19 -0
  327. data/lib/fog/clodo/requests/compute/stop_server.rb +19 -0
  328. data/lib/fog/clodo.rb +34 -0
  329. data/lib/fog/cloudstack/compute.rb +254 -0
  330. data/lib/fog/cloudstack/requests/compute/acquire_ip_address.rb +21 -0
  331. data/lib/fog/cloudstack/requests/compute/assign_to_load_balancer_rule.rb +25 -0
  332. data/lib/fog/cloudstack/requests/compute/attach_volume.rb +23 -0
  333. data/lib/fog/cloudstack/requests/compute/authorize_security_group_ingress.rb +22 -0
  334. data/lib/fog/cloudstack/requests/compute/change_service_for_virtual_machine.rb +20 -0
  335. data/lib/fog/cloudstack/requests/compute/create_account.rb +20 -0
  336. data/lib/fog/cloudstack/requests/compute/create_domain.rb +20 -0
  337. data/lib/fog/cloudstack/requests/compute/create_load_balancer_rule.rb +20 -0
  338. data/lib/fog/cloudstack/requests/compute/create_network.rb +20 -0
  339. data/lib/fog/cloudstack/requests/compute/create_port_forwarding_rule.rb +20 -0
  340. data/lib/fog/cloudstack/requests/compute/create_security_group.rb +20 -0
  341. data/lib/fog/cloudstack/requests/compute/create_snapshot.rb +20 -0
  342. data/lib/fog/cloudstack/requests/compute/create_snapshot_policy.rb +20 -0
  343. data/lib/fog/cloudstack/requests/compute/create_ssh_key_pair.rb +22 -0
  344. data/lib/fog/cloudstack/requests/compute/create_user.rb +20 -0
  345. data/lib/fog/cloudstack/requests/compute/create_volume.rb +20 -0
  346. data/lib/fog/cloudstack/requests/compute/delete_account.rb +20 -0
  347. data/lib/fog/cloudstack/requests/compute/delete_domain.rb +20 -0
  348. data/lib/fog/cloudstack/requests/compute/delete_load_balancer_rule.rb +20 -0
  349. data/lib/fog/cloudstack/requests/compute/delete_port_forwarding_rule.rb +20 -0
  350. data/lib/fog/cloudstack/requests/compute/delete_security_group.rb +20 -0
  351. data/lib/fog/cloudstack/requests/compute/delete_snapshot.rb +20 -0
  352. data/lib/fog/cloudstack/requests/compute/delete_snapshot_policies.rb +20 -0
  353. data/lib/fog/cloudstack/requests/compute/delete_ssh_key_pair.rb +21 -0
  354. data/lib/fog/cloudstack/requests/compute/delete_user.rb +20 -0
  355. data/lib/fog/cloudstack/requests/compute/delete_volume.rb +20 -0
  356. data/lib/fog/cloudstack/requests/compute/deploy_virtual_machine.rb +33 -0
  357. data/lib/fog/cloudstack/requests/compute/destroy_virtual_machine.rb +20 -0
  358. data/lib/fog/cloudstack/requests/compute/detach_volume.rb +21 -0
  359. data/lib/fog/cloudstack/requests/compute/disable_account.rb +20 -0
  360. data/lib/fog/cloudstack/requests/compute/disable_user.rb +20 -0
  361. data/lib/fog/cloudstack/requests/compute/enable_account.rb +20 -0
  362. data/lib/fog/cloudstack/requests/compute/enable_user.rb +20 -0
  363. data/lib/fog/cloudstack/requests/compute/generate_usage_records.rb +28 -0
  364. data/lib/fog/cloudstack/requests/compute/get_vm_password.rb +21 -0
  365. data/lib/fog/cloudstack/requests/compute/list_accounts.rb +20 -0
  366. data/lib/fog/cloudstack/requests/compute/list_alerts.rb +20 -0
  367. data/lib/fog/cloudstack/requests/compute/list_async_jobs.rb +20 -0
  368. data/lib/fog/cloudstack/requests/compute/list_capabilities.rb +20 -0
  369. data/lib/fog/cloudstack/requests/compute/list_capacity.rb +20 -0
  370. data/lib/fog/cloudstack/requests/compute/list_clusters.rb +20 -0
  371. data/lib/fog/cloudstack/requests/compute/list_configurations.rb +20 -0
  372. data/lib/fog/cloudstack/requests/compute/list_disk_offerings.rb +20 -0
  373. data/lib/fog/cloudstack/requests/compute/list_domain_children.rb +20 -0
  374. data/lib/fog/cloudstack/requests/compute/list_domains.rb +20 -0
  375. data/lib/fog/cloudstack/requests/compute/list_events.rb +20 -0
  376. data/lib/fog/cloudstack/requests/compute/list_external_firewalls.rb +20 -0
  377. data/lib/fog/cloudstack/requests/compute/list_external_load_balancers.rb +20 -0
  378. data/lib/fog/cloudstack/requests/compute/list_hosts.rb +20 -0
  379. data/lib/fog/cloudstack/requests/compute/list_hypervisors.rb +20 -0
  380. data/lib/fog/cloudstack/requests/compute/list_instance_groups.rb +20 -0
  381. data/lib/fog/cloudstack/requests/compute/list_isos.rb +20 -0
  382. data/lib/fog/cloudstack/requests/compute/list_load_balancer_rule_instances.rb +23 -0
  383. data/lib/fog/cloudstack/requests/compute/list_load_balancer_rules.rb +22 -0
  384. data/lib/fog/cloudstack/requests/compute/list_network_offerings.rb +20 -0
  385. data/lib/fog/cloudstack/requests/compute/list_networks.rb +20 -0
  386. data/lib/fog/cloudstack/requests/compute/list_os_categories.rb +22 -0
  387. data/lib/fog/cloudstack/requests/compute/list_os_types.rb +22 -0
  388. data/lib/fog/cloudstack/requests/compute/list_pods.rb +20 -0
  389. data/lib/fog/cloudstack/requests/compute/list_port_forwarding_rules.rb +22 -0
  390. data/lib/fog/cloudstack/requests/compute/list_public_ip_addresses.rb +22 -0
  391. data/lib/fog/cloudstack/requests/compute/list_resource_limits.rb +20 -0
  392. data/lib/fog/cloudstack/requests/compute/list_security_groups.rb +20 -0
  393. data/lib/fog/cloudstack/requests/compute/list_service_offerings.rb +20 -0
  394. data/lib/fog/cloudstack/requests/compute/list_snapshot_policies.rb +20 -0
  395. data/lib/fog/cloudstack/requests/compute/list_snapshots.rb +20 -0
  396. data/lib/fog/cloudstack/requests/compute/list_ssh_key_pairs.rb +20 -0
  397. data/lib/fog/cloudstack/requests/compute/list_storage_pools.rb +20 -0
  398. data/lib/fog/cloudstack/requests/compute/list_templates.rb +20 -0
  399. data/lib/fog/cloudstack/requests/compute/list_usage_records.rb +28 -0
  400. data/lib/fog/cloudstack/requests/compute/list_users.rb +20 -0
  401. data/lib/fog/cloudstack/requests/compute/list_virtual_machines.rb +20 -0
  402. data/lib/fog/cloudstack/requests/compute/list_volumes.rb +20 -0
  403. data/lib/fog/cloudstack/requests/compute/list_zones.rb +20 -0
  404. data/lib/fog/cloudstack/requests/compute/migrate_virtual_machine.rb +20 -0
  405. data/lib/fog/cloudstack/requests/compute/query_async_job_result.rb +20 -0
  406. data/lib/fog/cloudstack/requests/compute/reboot_virtual_machine.rb +20 -0
  407. data/lib/fog/cloudstack/requests/compute/recover_virtual_machine.rb +20 -0
  408. data/lib/fog/cloudstack/requests/compute/register_ssh_key_pair.rb +20 -0
  409. data/lib/fog/cloudstack/requests/compute/register_user_keys.rb +20 -0
  410. data/lib/fog/cloudstack/requests/compute/remove_from_load_balancer_rule.rb +25 -0
  411. data/lib/fog/cloudstack/requests/compute/reset_password_for_virtual_machine.rb +21 -0
  412. data/lib/fog/cloudstack/requests/compute/revoke_security_group_ingress.rb +21 -0
  413. data/lib/fog/cloudstack/requests/compute/start_virtual_machine.rb +20 -0
  414. data/lib/fog/cloudstack/requests/compute/stop_virtual_machine.rb +20 -0
  415. data/lib/fog/cloudstack/requests/compute/update_account.rb +20 -0
  416. data/lib/fog/cloudstack/requests/compute/update_domain.rb +20 -0
  417. data/lib/fog/cloudstack/requests/compute/update_resource_count.rb +20 -0
  418. data/lib/fog/cloudstack/requests/compute/update_user.rb +20 -0
  419. data/lib/fog/cloudstack/requests/compute/update_virtual_machine.rb +20 -0
  420. data/lib/fog/cloudstack.rb +28 -0
  421. data/lib/fog/compute/models/server.rb +11 -0
  422. data/lib/fog/compute.rb +20 -3
  423. data/lib/fog/core/connection.rb +2 -2
  424. data/lib/fog/core/credentials.rb +3 -3
  425. data/lib/fog/core/errors.rb +10 -2
  426. data/lib/fog/core/model.rb +8 -0
  427. data/lib/fog/core/scp.rb +18 -2
  428. data/lib/fog/core/wait_for.rb +1 -1
  429. data/lib/fog/core.rb +1 -3
  430. data/lib/fog/dns.rb +1 -0
  431. data/lib/fog/dnsimple/dns.rb +1 -1
  432. data/lib/fog/dnsmadeeasy/dns.rb +1 -1
  433. data/lib/fog/dynect/models/dns/records.rb +2 -2
  434. data/lib/fog/dynect/requests/dns/get_node_list.rb +2 -1
  435. data/lib/fog/ecloud/compute.rb +1 -1
  436. data/lib/fog/ecloud/requests/compute/add_backup_internet_service.rb +1 -1
  437. data/lib/fog/ecloud/requests/compute/add_internet_service.rb +2 -2
  438. data/lib/fog/ecloud/requests/compute/add_node.rb +1 -1
  439. data/lib/fog/ecloud/requests/compute/clone_vapp.rb +1 -1
  440. data/lib/fog/ecloud/requests/compute/configure_internet_service.rb +1 -1
  441. data/lib/fog/ecloud/requests/compute/configure_network.rb +1 -1
  442. data/lib/fog/ecloud/requests/compute/configure_network_ip.rb +1 -1
  443. data/lib/fog/ecloud/requests/compute/configure_vapp.rb +1 -1
  444. data/lib/fog/ecloud/requests/compute/instantiate_vapp_template.rb +1 -1
  445. data/lib/fog/glesys/compute.rb +4 -2
  446. data/lib/fog/glesys/models/compute/server.rb +14 -14
  447. data/lib/fog/google/requests/storage/get_object.rb +22 -14
  448. data/lib/fog/joyent/compute.rb +228 -0
  449. data/lib/fog/joyent/errors.rb +90 -0
  450. data/lib/fog/joyent/models/compute/flavor.rb +17 -0
  451. data/lib/fog/joyent/models/compute/flavors.rb +25 -0
  452. data/lib/fog/joyent/models/compute/image.rb +18 -0
  453. data/lib/fog/joyent/models/compute/images.rb +25 -0
  454. data/lib/fog/joyent/models/compute/key.rb +19 -0
  455. data/lib/fog/joyent/models/compute/keys.rb +34 -0
  456. data/lib/fog/joyent/models/compute/server.rb +117 -0
  457. data/lib/fog/joyent/models/compute/servers.rb +35 -0
  458. data/lib/fog/joyent/models/compute/snapshot.rb +45 -0
  459. data/lib/fog/joyent/models/compute/snapshots.rb +37 -0
  460. data/lib/fog/joyent/requests/compute/add_machine_tags.rb +20 -0
  461. data/lib/fog/joyent/requests/compute/create_key.rb +56 -0
  462. data/lib/fog/joyent/requests/compute/create_machine.rb +16 -0
  463. data/lib/fog/joyent/requests/compute/create_machine_snapshot.rb +18 -0
  464. data/lib/fog/joyent/requests/compute/delete_all_machine_metadata.rb +16 -0
  465. data/lib/fog/joyent/requests/compute/delete_all_machine_tags.rb +15 -0
  466. data/lib/fog/joyent/requests/compute/delete_key.rb +29 -0
  467. data/lib/fog/joyent/requests/compute/delete_machine.rb +15 -0
  468. data/lib/fog/joyent/requests/compute/delete_machine_metadata.rb +18 -0
  469. data/lib/fog/joyent/requests/compute/delete_machine_snapshot.rb +21 -0
  470. data/lib/fog/joyent/requests/compute/delete_machine_tag.rb +15 -0
  471. data/lib/fog/joyent/requests/compute/get_dataset.rb +28 -0
  472. data/lib/fog/joyent/requests/compute/get_key.rb +29 -0
  473. data/lib/fog/joyent/requests/compute/get_machine.rb +29 -0
  474. data/lib/fog/joyent/requests/compute/get_machine_metadata.rb +25 -0
  475. data/lib/fog/joyent/requests/compute/get_machine_snapshot.rb +14 -0
  476. data/lib/fog/joyent/requests/compute/get_machine_tag.rb +19 -0
  477. data/lib/fog/joyent/requests/compute/get_package.rb +33 -0
  478. data/lib/fog/joyent/requests/compute/list_datasets.rb +24 -0
  479. data/lib/fog/joyent/requests/compute/list_keys.rb +25 -0
  480. data/lib/fog/joyent/requests/compute/list_machine_snapshots.rb +14 -0
  481. data/lib/fog/joyent/requests/compute/list_machine_tags.rb +20 -0
  482. data/lib/fog/joyent/requests/compute/list_machines.rb +25 -0
  483. data/lib/fog/joyent/requests/compute/list_packages.rb +36 -0
  484. data/lib/fog/joyent/requests/compute/reboot_machine.rb +15 -0
  485. data/lib/fog/joyent/requests/compute/resize_machine.rb +13 -0
  486. data/lib/fog/joyent/requests/compute/start_machine.rb +16 -0
  487. data/lib/fog/joyent/requests/compute/start_machine_from_snapshot.rb +15 -0
  488. data/lib/fog/joyent/requests/compute/stop_machine.rb +16 -0
  489. data/lib/fog/joyent/requests/compute/update_machine_metadata.rb +15 -0
  490. data/lib/fog/joyent.rb +8 -0
  491. data/lib/fog/libvirt/compute.rb +7 -3
  492. data/lib/fog/libvirt/models/compute/nodes.rb +1 -3
  493. data/lib/fog/libvirt/models/compute/server.rb +93 -99
  494. data/lib/fog/libvirt/models/compute/servers.rb +2 -1
  495. data/lib/fog/libvirt/models/compute/util.rb +1 -2
  496. data/lib/fog/local/models/storage/file.rb +8 -1
  497. data/lib/fog/local/storage.rb +8 -0
  498. data/lib/fog/ninefold/models/storage/file.rb +8 -0
  499. data/lib/fog/openstack/compute.rb +0 -2
  500. data/lib/fog/openstack.rb +9 -7
  501. data/lib/fog/ovirt/compute.rb +106 -0
  502. data/lib/fog/ovirt/models/compute/cluster.rb +24 -0
  503. data/lib/fog/ovirt/models/compute/clusters.rb +23 -0
  504. data/lib/fog/ovirt/models/compute/interface.rb +22 -0
  505. data/lib/fog/ovirt/models/compute/interfaces.rb +32 -0
  506. data/lib/fog/ovirt/models/compute/server.rb +112 -0
  507. data/lib/fog/ovirt/models/compute/servers.rb +30 -0
  508. data/lib/fog/ovirt/models/compute/template.rb +53 -0
  509. data/lib/fog/ovirt/models/compute/templates.rb +23 -0
  510. data/lib/fog/ovirt/requests/compute/add_interface.rb +23 -0
  511. data/lib/fog/ovirt/requests/compute/create_vm.rb +20 -0
  512. data/lib/fog/ovirt/requests/compute/datacenters.rb +22 -0
  513. data/lib/fog/ovirt/requests/compute/destroy_interface.rb +25 -0
  514. data/lib/fog/ovirt/requests/compute/destroy_vm.rb +22 -0
  515. data/lib/fog/ovirt/requests/compute/get_cluster.rb +18 -0
  516. data/lib/fog/ovirt/requests/compute/get_template.rb +18 -0
  517. data/lib/fog/ovirt/requests/compute/get_virtual_machine.rb +18 -0
  518. data/lib/fog/ovirt/requests/compute/list_clusters.rb +20 -0
  519. data/lib/fog/ovirt/requests/compute/list_networks.rb +17 -0
  520. data/lib/fog/ovirt/requests/compute/list_template_interfaces.rb +20 -0
  521. data/lib/fog/ovirt/requests/compute/list_templates.rb +20 -0
  522. data/lib/fog/ovirt/requests/compute/list_virtual_machines.rb +20 -0
  523. data/lib/fog/ovirt/requests/compute/list_vm_interfaces.rb +20 -0
  524. data/lib/fog/ovirt/requests/compute/mock_files/cluster.xml +20 -0
  525. data/lib/fog/ovirt/requests/compute/mock_files/clusters.xml +39 -0
  526. data/lib/fog/ovirt/requests/compute/mock_files/data_centers.xml +17 -0
  527. data/lib/fog/ovirt/requests/compute/mock_files/nics.xml +10 -0
  528. data/lib/fog/ovirt/requests/compute/mock_files/storage_domains.xml +36 -0
  529. data/lib/fog/ovirt/requests/compute/mock_files/template.xml +39 -0
  530. data/lib/fog/ovirt/requests/compute/mock_files/templates.xml +110 -0
  531. data/lib/fog/ovirt/requests/compute/mock_files/vm.xml +54 -0
  532. data/lib/fog/ovirt/requests/compute/mock_files/vms.xml +152 -0
  533. data/lib/fog/ovirt/requests/compute/storage_domains.rb +22 -0
  534. data/lib/fog/ovirt/requests/compute/update_interface.rb +25 -0
  535. data/lib/fog/ovirt/requests/compute/update_vm.rb +20 -0
  536. data/lib/fog/ovirt/requests/compute/vm_action.rb +26 -0
  537. data/lib/fog/ovirt.rb +17 -0
  538. data/lib/fog/providers.rb +5 -1
  539. data/lib/fog/rackspace/dns.rb +10 -2
  540. data/lib/fog/rackspace/load_balancers.rb +3 -0
  541. data/lib/fog/rackspace/models/compute/flavor.rb +2 -0
  542. data/lib/fog/rackspace/models/compute/server.rb +2 -2
  543. data/lib/fog/rackspace/models/dns/callback.rb +3 -1
  544. data/lib/fog/rackspace/models/dns/record.rb +4 -0
  545. data/lib/fog/rackspace/models/load_balancers/load_balancer.rb +18 -8
  546. data/lib/fog/rackspace/models/storage/directory.rb +5 -1
  547. data/lib/fog/rackspace/models/storage/file.rb +7 -0
  548. data/lib/fog/rackspace/requests/compute/create_image.rb +1 -3
  549. data/lib/fog/rackspace/requests/load_balancers/delete_nodes.rb +1 -2
  550. data/lib/fog/rackspace/requests/load_balancers/get_error_page.rb +15 -0
  551. data/lib/fog/rackspace/requests/load_balancers/list_load_balancers.rb +8 -2
  552. data/lib/fog/rackspace/requests/load_balancers/remove_error_page.rb +15 -0
  553. data/lib/fog/rackspace/requests/load_balancers/set_error_page.rb +21 -0
  554. data/lib/fog/rackspace/requests/storage/copy_object.rb +27 -0
  555. data/lib/fog/rackspace/requests/storage/get_object.rb +8 -2
  556. data/lib/fog/rackspace/requests/storage/put_object.rb +6 -5
  557. data/lib/fog/rackspace/storage.rb +1 -0
  558. data/lib/fog/storm_on_demand/compute.rb +1 -1
  559. data/lib/fog/vcloud/compute.rb +91 -30
  560. data/lib/fog/vcloud/models/compute/catalog.rb +1 -1
  561. data/lib/fog/vcloud/models/compute/catalog_item.rb +1 -1
  562. data/lib/fog/vcloud/models/compute/catalogs.rb +5 -8
  563. data/lib/fog/vcloud/models/compute/helpers/status.rb +37 -0
  564. data/lib/fog/vcloud/models/compute/ip.rb +2 -2
  565. data/lib/fog/vcloud/models/compute/network.rb +9 -51
  566. data/lib/fog/vcloud/models/compute/networks.rb +21 -7
  567. data/lib/fog/vcloud/models/compute/organization.rb +43 -0
  568. data/lib/fog/vcloud/models/compute/organizations.rb +32 -0
  569. data/lib/fog/vcloud/models/compute/server.rb +38 -58
  570. data/lib/fog/vcloud/models/compute/servers.rb +12 -18
  571. data/lib/fog/vcloud/models/compute/task.rb +1 -1
  572. data/lib/fog/vcloud/models/compute/tasks.rb +1 -3
  573. data/lib/fog/vcloud/models/compute/vapp.rb +43 -0
  574. data/lib/fog/vcloud/models/compute/vapps.rb +28 -0
  575. data/lib/fog/vcloud/models/compute/vdc.rb +14 -29
  576. data/lib/fog/vcloud/models/compute/vdcs.rb +6 -11
  577. data/lib/fog/vcloud/requests/compute/clone_vapp.rb +1 -1
  578. data/lib/fog/vcloud/requests/compute/configure_network.rb +1 -1
  579. data/lib/fog/vcloud/requests/compute/configure_network_ip.rb +1 -1
  580. data/lib/fog/vcloud/requests/compute/configure_vapp.rb +1 -1
  581. data/lib/fog/vcloud/requests/compute/configure_vm.rb +1 -1
  582. data/lib/fog/vcloud/requests/compute/get_server.rb +10 -0
  583. data/lib/fog/vcloud/requests/compute/instantiate_vapp_template.rb +1 -1
  584. data/lib/fog/vcloud/requests/compute/login.rb +8 -4
  585. data/lib/fog/virtual_box/compute.rb +4 -0
  586. data/lib/fog/vmfusion/models/compute/server.rb +120 -52
  587. data/lib/fog/vmfusion/models/compute/servers.rb +11 -7
  588. data/lib/fog/voxel/compute.rb +1 -1
  589. data/lib/fog/vsphere/compute.rb +6 -0
  590. data/lib/fog/vsphere/models/compute/server.rb +43 -0
  591. data/lib/fog/vsphere/models/compute/servers.rb +8 -2
  592. data/lib/fog/vsphere/requests/compute/datacenters.rb +34 -0
  593. data/lib/fog/vsphere/requests/compute/list_virtual_machines.rb +132 -91
  594. data/lib/fog/vsphere/requests/compute/vm_clone.rb +115 -41
  595. data/lib/fog/vsphere/requests/compute/vm_create.rb +97 -0
  596. data/lib/fog/vsphere/requests/compute/vm_migrate.rb +37 -0
  597. data/lib/fog/vsphere/requests/compute/vm_reconfig_cpus.rb +23 -0
  598. data/lib/fog/vsphere/requests/compute/vm_reconfig_hardware.rb +25 -0
  599. data/lib/fog/vsphere/requests/compute/vm_reconfig_memory.rb +23 -0
  600. data/lib/fog/zerigo/models/dns/record.rb +7 -5
  601. data/lib/fog/zerigo/parsers/dns/create_host.rb +3 -1
  602. data/lib/fog/zerigo/parsers/dns/find_hosts.rb +3 -1
  603. data/lib/fog/zerigo/parsers/dns/get_host.rb +3 -1
  604. data/lib/fog/zerigo/parsers/dns/get_zone.rb +3 -1
  605. data/lib/fog/zerigo/parsers/dns/list_hosts.rb +3 -1
  606. data/lib/fog/zerigo/requests/dns/update_host.rb +2 -2
  607. data/lib/fog.rb +1 -1
  608. data/spec/ecloud/spec_helper.rb +1 -1
  609. data/spec/lib/fog/aws/parsers/sqs/receive_message_spec.rb +58 -0
  610. data/tests/aws/models/beanstalk/application_tests.rb +70 -0
  611. data/tests/aws/models/beanstalk/applications_tests.rb +7 -0
  612. data/tests/aws/models/beanstalk/environment_tests.rb +132 -0
  613. data/tests/aws/models/beanstalk/environments_tests.rb +34 -0
  614. data/tests/aws/models/beanstalk/template_tests.rb +47 -0
  615. data/tests/aws/models/beanstalk/templates_tests.rb +62 -0
  616. data/tests/aws/models/beanstalk/version_tests.rb +66 -0
  617. data/tests/aws/models/beanstalk/versions_tests.rb +61 -0
  618. data/tests/aws/models/compute/subnet_tests.rb +5 -0
  619. data/tests/aws/models/compute/subnets_tests.rb +6 -0
  620. data/tests/aws/models/compute/vpc_tests.rb +4 -0
  621. data/tests/aws/models/compute/vpcs_tests.rb +6 -0
  622. data/tests/aws/models/dns/record_tests.rb +23 -0
  623. data/tests/aws/models/dns/records_tests.rb +23 -0
  624. data/tests/aws/models/dns/zone_tests.rb +4 -0
  625. data/tests/aws/models/dns/zones_tests.rb +4 -0
  626. data/tests/aws/models/elb/model_tests.rb +15 -6
  627. data/tests/aws/models/rds/security_group_tests.rb +6 -3
  628. data/tests/aws/models/rds/security_groups_tests.rb +1 -2
  629. data/tests/aws/models/rds/server_tests.rb +5 -3
  630. data/tests/aws/models/rds/servers_tests.rb +1 -3
  631. data/tests/aws/models/rds/snapshot_tests.rb +1 -3
  632. data/tests/aws/models/rds/snapshots_tests.rb +1 -3
  633. data/tests/aws/models/storage/directory_tests.rb +51 -0
  634. data/tests/aws/models/storage/file_tests.rb +80 -0
  635. data/tests/aws/models/storage/files_tests.rb +56 -0
  636. data/tests/aws/models/storage/version_tests.rb +52 -0
  637. data/tests/aws/models/storage/versions_tests.rb +56 -0
  638. data/tests/aws/requests/auto_scaling/helper.rb +2 -2
  639. data/tests/aws/requests/beanstalk/application_tests.rb +140 -0
  640. data/tests/aws/requests/beanstalk/solution_stack_tests.rb +22 -0
  641. data/tests/aws/requests/compute/address_tests.rb +7 -5
  642. data/tests/aws/requests/compute/instance_tests.rb +37 -0
  643. data/tests/aws/requests/compute/security_group_tests.rb +78 -4
  644. data/tests/aws/requests/compute/subnet_tests.rb +36 -0
  645. data/tests/aws/requests/compute/volume_tests.rb +4 -0
  646. data/tests/aws/requests/compute/vpc_tests.rb +34 -0
  647. data/tests/aws/requests/dns/dns_tests.rb +106 -99
  648. data/tests/aws/requests/dns/helper.rb +21 -0
  649. data/tests/aws/requests/dynamodb/item_tests.rb +117 -0
  650. data/tests/aws/requests/dynamodb/table_tests.rb +99 -0
  651. data/tests/aws/requests/elb/helper.rb +33 -0
  652. data/tests/aws/requests/elb/listener_tests.rb +22 -4
  653. data/tests/aws/requests/elb/policy_tests.rb +13 -0
  654. data/tests/aws/requests/iam/access_key_tests.rb +2 -7
  655. data/tests/aws/requests/iam/group_tests.rb +1 -4
  656. data/tests/aws/requests/iam/helper.rb +19 -0
  657. data/tests/aws/requests/iam/server_certificate_tests.rb +5 -0
  658. data/tests/aws/requests/iam/user_policy_tests.rb +4 -11
  659. data/tests/aws/requests/iam/user_tests.rb +19 -12
  660. data/tests/aws/requests/rds/helper.rb +45 -11
  661. data/tests/aws/requests/rds/instance_tests.rb +2 -3
  662. data/tests/aws/requests/rds/parameter_group_tests.rb +1 -7
  663. data/tests/aws/requests/rds/security_group_tests.rb +101 -0
  664. data/tests/aws/requests/storage/{hash_to_acl_tests.rb → acl_utils_tests.rb} +38 -2
  665. data/tests/aws/requests/storage/bucket_tests.rb +66 -4
  666. data/tests/aws/requests/storage/object_tests.rb +2 -4
  667. data/tests/aws/requests/storage/versioning_tests.rb +188 -0
  668. data/tests/aws/requests/sts/get_federation_token_tests.rb +21 -0
  669. data/tests/aws/requests/sts/session_token_tests.rb +16 -0
  670. data/tests/bluebox/requests/compute/block_tests.rb +9 -8
  671. data/tests/bluebox/requests/compute/helper.rb +5 -0
  672. data/tests/bluebox/requests/compute/location_tests.rb +32 -0
  673. data/tests/bluebox/requests/compute/product_tests.rb +10 -4
  674. data/tests/bluebox/requests/compute/template_tests.rb +4 -2
  675. data/tests/brightbox/requests/compute/account_tests.rb +11 -6
  676. data/tests/brightbox/requests/compute/api_client_tests.rb +23 -12
  677. data/tests/brightbox/requests/compute/cloud_ip_tests.rb +32 -17
  678. data/tests/brightbox/requests/compute/helper.rb +62 -11
  679. data/tests/brightbox/requests/compute/image_tests.rb +17 -14
  680. data/tests/brightbox/requests/compute/interface_tests.rb +3 -2
  681. data/tests/brightbox/requests/compute/load_balancer_tests.rb +57 -11
  682. data/tests/brightbox/requests/compute/server_group_tests.rb +29 -22
  683. data/tests/brightbox/requests/compute/server_tests.rb +43 -22
  684. data/tests/brightbox/requests/compute/server_type_tests.rb +7 -6
  685. data/tests/brightbox/requests/compute/user_tests.rb +11 -16
  686. data/tests/brightbox/requests/compute/zone_tests.rb +7 -6
  687. data/tests/clodo/requests/compute/image_tests.rb +36 -0
  688. data/tests/clodo/requests/compute/server_tests.rb +152 -0
  689. data/tests/cloudstack/requests/disk_offering_tests.rb +29 -0
  690. data/tests/cloudstack/requests/os_type_tests.rb +38 -0
  691. data/tests/cloudstack/requests/security_group_tests.rb +29 -0
  692. data/tests/cloudstack/requests/service_offering_tests.rb +38 -0
  693. data/tests/cloudstack/requests/snapshot_tests.rb +32 -0
  694. data/tests/cloudstack/requests/ssh_key_pair_tests.rb +23 -0
  695. data/tests/cloudstack/requests/template_tests.rb +53 -0
  696. data/tests/cloudstack/requests/virtual_machine_tests.rb +71 -0
  697. data/tests/cloudstack/requests/volume_tests.rb +48 -0
  698. data/tests/cloudstack/requests/zone_tests.rb +33 -0
  699. data/tests/cloudstack/signed_params_tests.rb +12 -0
  700. data/tests/compute/helper.rb +8 -3
  701. data/tests/core/credential_tests.rb +2 -2
  702. data/tests/glesys/requests/compute/helper.rb +187 -139
  703. data/tests/glesys/requests/compute/ip_tests.rb +4 -4
  704. data/tests/glesys/requests/compute/server_tests.rb +55 -17
  705. data/tests/helper.rb +1 -1
  706. data/tests/helpers/formats_helper.rb +1 -1
  707. data/tests/helpers/mock_helper.rb +9 -2
  708. data/tests/joyent/requests/compute/datasets_tests.rb +49 -0
  709. data/tests/joyent/requests/compute/keys_tests.rb +47 -0
  710. data/tests/joyent/requests/compute/machines_tests.rb +67 -0
  711. data/tests/joyent/requests/compute/packages_tests.rb +68 -0
  712. data/tests/ovirt/compute_tests.rb +24 -0
  713. data/tests/ovirt/models/compute/cluster_tests.rb +31 -0
  714. data/tests/ovirt/models/compute/clusters_tests.rb +9 -0
  715. data/tests/ovirt/models/compute/interface_tests.rb +27 -0
  716. data/tests/ovirt/models/compute/interfaces_tests.rb +9 -0
  717. data/tests/ovirt/models/compute/server_tests.rb +51 -0
  718. data/tests/ovirt/models/compute/servers_tests.rb +14 -0
  719. data/tests/ovirt/models/compute/template_tests.rb +28 -0
  720. data/tests/ovirt/models/compute/templates_tests.rb +9 -0
  721. data/tests/ovirt/requests/compute/create_vm_tests.rb +26 -0
  722. data/tests/ovirt/requests/compute/destroy_vm_tests.rb +18 -0
  723. data/tests/ovirt/requests/compute/list_datacenters_tests.rb +13 -0
  724. data/tests/ovirt/requests/compute/list_storage_domains_tests.rb +13 -0
  725. data/tests/ovirt/requests/compute/update_vm_tests.rb +18 -0
  726. data/tests/rackspace/models/dns/zone_tests.rb +14 -0
  727. data/tests/rackspace/models/{load_balancer_tests.rb → load_balancers/load_balancer_tests.rb} +25 -0
  728. data/tests/rackspace/requests/dns/dns_tests.rb +4 -2
  729. data/tests/rackspace/requests/load_balancers/error_page_tests.rb +31 -0
  730. data/tests/rackspace/requests/load_balancers/helper.rb +27 -11
  731. data/tests/rackspace/requests/load_balancers/load_balancer_tests.rb +4 -1
  732. data/tests/rackspace/requests/load_balancers/node_tests.rb +24 -25
  733. data/tests/slicehost/requests/compute/slice_tests.rb +2 -2
  734. data/tests/storm_on_demand/requests/compute/server_tests.rb +3 -3
  735. data/tests/vcloud/data/api_+_admin_+_network_+_2 +110 -0
  736. data/tests/vcloud/data/api_+_network_+_1 +44 -0
  737. data/tests/vcloud/data/api_+_org_+_ +5 -0
  738. data/tests/vcloud/data/api_+_org_+_1 +17 -0
  739. data/tests/vcloud/data/api_+_sessions +8 -0
  740. data/tests/vcloud/data/api_+_v1.0_+_admin_+_network_+_2 +110 -0
  741. data/tests/vcloud/data/api_+_v1.0_+_login +5 -0
  742. data/tests/vcloud/data/api_+_v1.0_+_network_+_1 +44 -0
  743. data/tests/vcloud/data/api_+_v1.0_+_network_+_2 +31 -0
  744. data/tests/vcloud/data/api_+_v1.0_+_org_+_1 +17 -0
  745. data/tests/vcloud/data/api_+_v1.0_+_vApp_+_vapp-1 +369 -0
  746. data/tests/vcloud/data/api_+_v1.0_+_vApp_+_vm-1 +139 -0
  747. data/tests/vcloud/data/api_+_v1.0_+_vApp_+_vm-2 +155 -0
  748. data/tests/vcloud/data/api_+_v1.0_+_vdc_+_1 +61 -0
  749. data/tests/vcloud/data/api_+_vApp_+_vapp-1 +369 -0
  750. data/tests/vcloud/data/api_+_vApp_+_vm-2 +155 -0
  751. data/tests/vcloud/data/api_+_vdc_+_1 +61 -0
  752. data/tests/vcloud/models/compute/conn_helper.rb +20 -0
  753. data/tests/vcloud/models/compute/network_tests.rb +67 -0
  754. data/tests/vcloud/models/compute/networks_tests.rb +61 -0
  755. data/tests/vcloud/models/compute/organization_tests.rb +20 -0
  756. data/tests/vcloud/models/compute/organizations_tests.rb +16 -0
  757. data/tests/vcloud/models/compute/server_tests.rb +142 -0
  758. data/tests/vcloud/models/compute/servers_tests.rb +18 -90
  759. data/tests/vcloud/models/compute/vapp_tests.rb +32 -0
  760. data/tests/vcloud/models/compute/vapps_tests.rb +19 -0
  761. data/tests/vcloud/models/compute/vdc_tests.rb +48 -0
  762. data/tests/vcloud/models/compute/vdcs_tests.rb +24 -0
  763. data/tests/vsphere/requests/compute/vm_clone_tests.rb +16 -8
  764. data/tests/vsphere/requests/compute/vm_create_tests.rb +20 -0
  765. data/tests/vsphere/requests/compute/vm_migrate_tests.rb +16 -0
  766. data/tests/vsphere/requests/compute/vm_power_on_tests.rb +1 -1
  767. data/tests/vsphere/requests/compute/vm_reconfig_cpus_tests.rb +19 -0
  768. data/tests/vsphere/requests/compute/vm_reconfig_hardware_tests.rb +19 -0
  769. data/tests/vsphere/requests/compute/vm_reconfig_memory_tests.rb +19 -0
  770. metadata +635 -70
  771. data/examples/compute_tests.rb +0 -71
  772. data/examples/dns_tests.rb +0 -78
  773. data/examples/storage_tests.rb +0 -105
  774. /data/tests/rackspace/models/{access_list_tests.rb → load_balancers/access_list_tests.rb} +0 -0
  775. /data/tests/rackspace/models/{access_lists_tests.rb → load_balancers/access_lists_tests.rb} +0 -0
  776. /data/tests/rackspace/models/{load_balancers_tests.rb → load_balancers/load_balancers_tests.rb} +0 -0
  777. /data/tests/rackspace/models/{node_tests.rb → load_balancers/node_tests.rb} +0 -0
  778. /data/tests/rackspace/models/{nodes_tests.rb → load_balancers/nodes_tests.rb} +0 -0
  779. /data/tests/rackspace/models/{virtual_ip_tests.rb → load_balancers/virtual_ip_tests.rb} +0 -0
  780. /data/tests/rackspace/models/{virtual_ips_tests.rb → load_balancers/virtual_ips_tests.rb} +0 -0
@@ -5,7 +5,7 @@ module Fog
5
5
 
6
6
  def validate_clone_vapp_options(options)
7
7
  valid_opts = [:name, :poweron]
8
- unless valid_opts.all? { |opt| options.keys.include?(opt) }
8
+ unless valid_opts.all? { |opt| options.has_key?(opt) }
9
9
  raise ArgumentError.new("Required data missing: #{(valid_opts - options.keys).map(&:inspect).join(", ")}")
10
10
  end
11
11
  end
@@ -5,7 +5,7 @@ module Fog
5
5
 
6
6
  def validate_network_data(network_data, configure=false)
7
7
  valid_opts = [:id, :href, :name, :address, :broadcast, :gateway]
8
- unless valid_opts.all? { |opt| network_data.keys.include?(opt) }
8
+ unless valid_opts.all? { |opt| network_data.has_key?(opt) }
9
9
  raise ArgumentError.new("Required data missing: #{(valid_opts - network_data.keys).map(&:inspect).join(", ")}")
10
10
  end
11
11
  end
@@ -6,7 +6,7 @@ module Fog
6
6
 
7
7
  def validate_network_ip_data(network_ip_data)
8
8
  valid_opts = [:id, :href, :name, :status, :server]
9
- unless valid_opts.all? { |opt| network_ip_data.keys.include?(opt) }
9
+ unless valid_opts.all? { |opt| network_ip_data.has_key?(opt) }
10
10
  raise ArgumentError.new("Required data missing: #{(valid_opts - network_ip_data.keys).map(&:inspect).join(", ")}")
11
11
  end
12
12
  end
@@ -6,7 +6,7 @@ module Fog
6
6
 
7
7
  def validate_vapp_data(vapp_data)
8
8
  valid_opts = [:name, :cpus, :memory, :disks]
9
- unless valid_opts.all? { |opt| vapp_data.keys.include?(opt) }
9
+ unless valid_opts.all? { |opt| vapp_data.has_key?(opt) }
10
10
  raise ArgumentError.new("Required Vapp data missing: #{(valid_opts - vapp_data.keys).map(&:inspect).join(", ")}")
11
11
  end
12
12
  end
@@ -138,7 +138,7 @@ module Fog
138
138
 
139
139
  def validate_vm_data(vm_data)
140
140
  valid_opts = [:name, :cpus, :memory, :disks]
141
- unless valid_opts.all? { |opt| vm_data.keys.include?(opt) }
141
+ unless valid_opts.all? { |opt| vm_data.has_key?(opt) }
142
142
  raise ArgumentError.new("Required vm data missing: #{(valid_opts - vm_data.keys).map(&:inspect).join(", ")}")
143
143
  end
144
144
  end
@@ -0,0 +1,10 @@
1
+ module Fog
2
+ module Vcloud
3
+ class Compute
4
+
5
+ class Real
6
+ basic_request :get_server
7
+ end
8
+ end
9
+ end
10
+ end
@@ -7,7 +7,7 @@ module Fog
7
7
  def validate_instantiate_vapp_template_options options
8
8
  # :network_uri removed, if not specified will use template network config.
9
9
  valid_opts = [:catalog_item_uri, :name, :vdc_uri]
10
- unless valid_opts.all? { |opt| options.keys.include?(opt) }
10
+ unless valid_opts.all? { |opt| options.has_key?(opt) }
11
11
  raise ArgumentError.new("Required data missing: #{(valid_opts - options.keys).map(&:inspect).join(", ")}")
12
12
  end
13
13
 
@@ -6,14 +6,18 @@ module Fog
6
6
 
7
7
 
8
8
  def login
9
+ headers = { 'Authorization' => authorization_header }
10
+ uri = if version == '1.0'
11
+ "#{base_url}/login"
12
+ else
13
+ "#{base_path_url}/sessions"
14
+ end
9
15
  unauthenticated_request({
10
16
  :expects => 200,
11
- :headers => {
12
- 'Authorization' => authorization_header
13
- },
17
+ :headers => headers,
14
18
  :method => 'POST',
15
19
  :parse => true,
16
- :uri => "#{base_url}/login"
20
+ :uri => uri
17
21
  })
18
22
  end
19
23
 
@@ -34,6 +34,10 @@ module Fog
34
34
  @connection = ::VirtualBox::Global.global.lib.virtualbox
35
35
  end
36
36
 
37
+ def respond_to?(method, *)
38
+ super or @connection.respond_to? method
39
+ end
40
+
37
41
  # hack to provide 'requests'
38
42
  def method_missing(method_sym, *arguments, &block)
39
43
  if @connection.respond_to?(method_sym)
@@ -8,150 +8,209 @@ module Fog
8
8
 
9
9
  identity :name
10
10
 
11
- attribute :name
12
- attribute :state
11
+ attribute :ipaddress
12
+ attribute :power_state
13
+ attribute :mac_addresses
14
+ attribute :path
13
15
 
14
16
  attr_accessor :password
15
17
  attr_writer :private_key, :private_key_path, :public_key, :public_key_path, :username
16
18
 
17
- def initalize(attributes={})
18
- end
19
-
19
+ # There is currently no documented model of creating VMs from scratch
20
+ # sans Fusion's wizard.
20
21
  def save
21
22
  raise Fog::Errors::Error.new('Creating a new vm is not yet supported')
22
23
  end
23
24
 
25
+ # Fussion doesn't have the concept of templates so one just clones
26
+ # regular VMs.
24
27
  def clone(name)
25
28
  requires :raw
26
29
 
27
- ::Fission::VM.clone(@raw.name,name)
30
+ ::Fission::VM.clone(@raw[:fission].name,name)
28
31
  return connection.servers.get(name)
29
32
  end
30
33
 
31
- def destroy(options={ :force => false})
34
+ # Destroy, deletes the VM from the local disk but only hard stops the VM
35
+ # before doing so if you set :force to true.
36
+ def destroy(options = { :force => false })
32
37
  requires :raw
33
38
 
34
- if state=="running"
39
+ if ready?
35
40
  if options[:force]
36
- @raw.stop
41
+ stop
37
42
  end
38
43
  end
39
44
 
40
- ::Fission::VM.delete @raw.name
45
+ @raw[:fission].delete
41
46
  end
42
47
 
43
- def start
48
+ # Start is pretty self explanatory...if you pass :headless as true you
49
+ # won't get a console on launch.
50
+ def start(options = { :headless => false })
44
51
  requires :raw
45
52
 
46
- unless state=="running"
47
- @raw.start
53
+ unless ready?
54
+ @raw[:fission].start(:headless => options[:headless])
48
55
  return true
49
56
  else
50
57
  return false
51
58
  end
52
59
  end
53
60
 
61
+ # We're covering a lot of bases here with the different ways one can
62
+ # stop a VM from running.
63
+
64
+ # Stop is a hard stop, like pulling out the power cord.
54
65
  def stop
55
66
  requires :raw
56
67
 
57
- if state=="running"
58
- @raw.stop
68
+ if ready?
69
+ @raw[:fission].stop(:hard => true)
59
70
  return true
60
71
  else
61
72
  return false
62
73
  end
63
74
  end
64
75
 
65
- def reboot
76
+ # Halt and poweroff are just synonyms for stop.
77
+ def halt
78
+ stop
79
+ end
80
+
81
+ def poweroff
82
+ stop
83
+ end
84
+
85
+ # This is a graceful shutdown but Fusion is only capable of a graceful
86
+ # shutdown if tools are installed. Fusion does the right thing though
87
+ # and if graceful can't be initiated it just does a hard stop.
88
+ def shutdown
66
89
  requires :raw
67
- if state=="running"
68
- @raw.stop
69
- wait_for { state!="running"}
70
- @raw.start
90
+ if ready?
91
+ @raw[:fission].stop
71
92
  return true
72
93
  else
73
94
  return false
74
95
  end
75
96
  end
76
97
 
77
- def halt
78
- requires :raw
79
- if state=="running"
80
- @raw.halt
98
+ # Attempt a graceful shutdown, wait for the VM to completely shutdown
99
+ # and then start it again.
100
+ def reboot
101
+ if ready?
102
+ shutdown
103
+ wait_for { ! ready? }
104
+ start
81
105
  return true
82
106
  else
83
107
  return false
84
108
  end
109
+ end
85
110
 
111
+ # Resuming from suspend is the same thing as start to Fusion.
112
+ def resume
113
+ start
86
114
  end
87
115
 
88
- def poweroff
116
+ def suspend
89
117
  requires :raw
90
- halt
118
+ if ready?
119
+ @raw[:fission].suspend
120
+ return true
121
+ else
122
+ return false
123
+ end
91
124
  end
92
125
 
93
- def shutdown
126
+ # Fusion VM Metadata.
127
+
128
+ # The power state of the VM is commonly going to be three values;
129
+ # running, not running, or suspended.
130
+ def power_state
94
131
  requires :raw
95
- stop
132
+ @raw[:fission].state.data
96
133
  end
97
134
 
98
- def resume
135
+ def ready?
99
136
  requires :raw
100
- @raw.resume
137
+ @raw[:fission].running?.data
101
138
  end
102
139
 
103
- def suspend
140
+ # Path to the VM's vmx file on the local disk.
141
+ def path
104
142
  requires :raw
105
- @raw.suspend
143
+ @raw[:fission].path
106
144
  end
107
145
 
108
- def state
146
+ # We obtain the first ipaddress. This should generally be a safe
147
+ # assumption for Fusion. Even if an address is provided via NAT,
148
+ # bridge, or host only it will by accessible from the host machine the
149
+ # VM resides on.
150
+ def ipaddress
109
151
  requires :raw
110
- @raw.state
152
+ ip(@raw[:fission])
111
153
  end
112
154
 
113
- def ready?
114
- state == "running"
155
+ # Keeping these three methods around for API compatibility reasons.
156
+ # Makes the vmfusion provider function similar to cloud providers and
157
+ # the vsphere provider. Future goal is to add an actual private and
158
+ # public concept. Needs changes to fission and a determination what is
159
+ # a public or private address here; bridge, nat, host-only.
160
+ def public_ip_address
161
+ ipaddress
115
162
  end
116
163
 
117
164
  def private_ip_address
118
- ip_address(:private)
165
+ ipaddress
119
166
  end
120
167
 
121
- def public_ip_address
122
- ip_address(:public)
168
+ def state
169
+ power_state
170
+ end
171
+
172
+ # Collecting all mac_addresses the VM has...mostly just because we are
173
+ # doing the same thing for the vSphere provider.
174
+ def mac_addresses
175
+ requires :raw
176
+ macs(@raw[:fission])
123
177
  end
124
178
 
179
+ # Sets up a conveinent way to SSH into a Fusion VM using credentials
180
+ # stored in your .fog file.
125
181
 
126
182
  def username
127
183
  @username ||= 'root'
128
184
  end
129
185
 
186
+ # Simply spawn an SSH session.
130
187
  def ssh(commands)
131
- requires :public_ip_address, :username
188
+ requires :ipaddress, :username
132
189
 
133
190
  #requires :password, :private_key
134
191
  ssh_options={}
135
192
  ssh_options[:password] = password unless password.nil?
136
193
  ssh_options[:key_data] = [private_key] if private_key
137
194
 
138
- Fog::SSH.new(public_ip_address, @username, ssh_options).run(commands)
195
+ Fog::SSH.new(ipaddress, @username, ssh_options).run(commands)
139
196
 
140
197
  end
141
198
 
199
+ # SCP something to our VM.
142
200
  def scp(local_path, remote_path, upload_options = {})
143
- requires :public_ip_address, :username
201
+ requires :ipaddress, :username
144
202
 
145
203
  scp_options = {}
146
204
  scp_options[:password] = password unless self.password.nil?
147
205
  scp_options[:key_data] = [private_key] if self.private_key
148
206
 
149
- Fog::SCP.new(public_ip_address, username, scp_options).upload(local_path, remote_path, upload_options)
207
+ Fog::SCP.new(ipaddress, username, scp_options).upload(local_path, remote_path, upload_options)
150
208
  end
151
209
 
152
- # Sets up a new key
210
+ # Sets up a new SSH key on the VM so one doesn't need to use a password
211
+ # ever again.
153
212
  def setup(credentials = {})
154
- requires :public_key, :public_ip_address, :username
213
+ requires :public_key, :ipaddress, :username
155
214
 
156
215
  credentials[:password] = password unless self.password.nil?
157
216
  credentails[:key_data] = [private_key] if self.private_key
@@ -167,7 +226,7 @@ module Fog
167
226
  Timeout::timeout(360) do
168
227
  begin
169
228
  Timeout::timeout(8) do
170
- Fog::SSH.new(public_ip_address, username, credentials.merge(:timeout => 4)).run('pwd')
229
+ Fog::SSH.new(ipaddress, username, credentials.merge(:timeout => 4)).run('pwd')
171
230
  end
172
231
  rescue Errno::ECONNREFUSED
173
232
  sleep(2)
@@ -176,9 +235,11 @@ module Fog
176
235
  retry
177
236
  end
178
237
  end
179
- Fog::SSH.new(public_ip_address, username, credentials).run(commands)
238
+ Fog::SSH.new(ipaddress, username, credentials).run(commands)
180
239
  end
181
240
 
241
+ # Just setting local versions of some variables that were going to use
242
+ # for SSH operations.
182
243
  def private_key_path
183
244
  @private_key_path ||= Fog.credentials[:private_key_path]
184
245
  @private_key_path &&= File.expand_path(@private_key_path)
@@ -198,8 +259,13 @@ module Fog
198
259
  end
199
260
 
200
261
  private
201
- def ip_address(key)
202
- @raw.ip_address
262
+ def ip(fission)
263
+ first_int = fission.network_info.data.keys.first
264
+ fission.network_info.data[first_int]['ip_address']
265
+ end
266
+
267
+ def macs(fission)
268
+ fission.mac_addresses.data
203
269
  end
204
270
 
205
271
  def raw
@@ -210,13 +276,15 @@ module Fog
210
276
  @raw = new_raw
211
277
 
212
278
  raw_attributes = {
213
- :name => new_raw.name,
214
- :state => new_raw.state
279
+ :name => new_raw[:fission].name,
280
+ :power_state => new_raw[:state],
281
+ :ipaddress => ip(new_raw[:fission]),
282
+ :mac_addresses => macs(new_raw[:fission]),
283
+ :path => new_raw[:fission].path
215
284
  }
216
285
 
217
286
  merge_attributes(raw_attributes)
218
287
  end
219
-
220
288
  end
221
289
  end
222
290
  end
@@ -9,18 +9,22 @@ module Fog
9
9
 
10
10
  model Fog::Compute::Vmfusion::Server
11
11
 
12
- def all(filter=nil)
12
+ def all(filter = nil)
13
13
 
14
- data=[]
14
+ data = []
15
15
 
16
- filter={} if filter.nil?
16
+ states = ::Fission::VM.all_with_status.data
17
+
18
+ filter = {} if filter.nil?
17
19
  unless filter.has_key?(:name)
18
- vms=::Fission::VM.all
20
+ vms=::Fission::VM.all.data
19
21
  vms.each do |vm|
20
- data << { :raw => vm}
22
+ data << { :raw => { :fission => vm,
23
+ :state => states[vm.name] } }
21
24
  end
22
25
  else
23
- data << { :raw => ::Fission::VM.new(filter[:name])}
26
+ data << { :raw => { :fission => ::Fission::VM.new(filter[:name]),
27
+ :state => states[filter[:name]] } }
24
28
  end
25
29
 
26
30
  load(data)
@@ -28,7 +32,7 @@ module Fog
28
32
  end
29
33
 
30
34
  def get(name)
31
- self.all(:name =>name).first
35
+ self.all(:name => name).first
32
36
  end
33
37
 
34
38
  end
@@ -85,7 +85,7 @@ module Fog
85
85
  @scheme = options[:scheme] || 'https'
86
86
  @persistent = options[:persistent] || false
87
87
 
88
- Excon.ssl_verify_peer = false
88
+ @connection_options[:ssl_verify_peer] = false
89
89
 
90
90
  @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}", @persistent, @connection_options)
91
91
  end
@@ -20,7 +20,13 @@ module Fog
20
20
  request :vm_power_on
21
21
  request :vm_reboot
22
22
  request :vm_clone
23
+ request :vm_create
23
24
  request :vm_destroy
25
+ request :vm_migrate
26
+ request :datacenters
27
+ request :vm_reconfig_hardware
28
+ request :vm_reconfig_memory
29
+ request :vm_reconfig_cpus
24
30
 
25
31
  module Shared
26
32
 
@@ -35,6 +35,18 @@ module Fog
35
35
  attribute :mo_ref
36
36
  attribute :path
37
37
 
38
+ def vm_reconfig_memory(options = {})
39
+ requires :instance_uuid, :memory
40
+ connection.vm_reconfig_memory('instance_uuid' => instance_uuid, 'memory' => memory)
41
+ end
42
+ def vm_reconfig_cpus(options = {})
43
+ requires :instance_uuid, :cpus
44
+ connection.vm_reconfig_cpus('instance_uuid' => instance_uuid, 'cpus' => cpus)
45
+ end
46
+ def vm_reconfig_hardware(options = {})
47
+ requires :instance_uuid, :hardware_spec
48
+ connection.vm_reconfig_hardware('instance_uuid' => instance_uuid, 'hardware_spec' => hardware_spec)
49
+ end
38
50
  def start(options = {})
39
51
  requires :instance_uuid
40
52
  connection.vm_power_on('instance_uuid' => instance_uuid)
@@ -57,6 +69,37 @@ module Fog
57
69
  connection.vm_destroy('instance_uuid' => instance_uuid)
58
70
  end
59
71
 
72
+ def migrate(options = {})
73
+ options = { :priority => 'defaultPriority' }.merge(options)
74
+ requires :instance_uuid
75
+ connection.vm_migrate('instance_uuid' => instance_uuid, 'priority' => options[:priority])
76
+ end
77
+
78
+ def create(options ={})
79
+ requires :name, :path
80
+ new_vm = self.class.new(create_results['vm_attributes'])
81
+ new_vm.collection = self.collection
82
+ new_vm.connection = self.connection
83
+ new_vm
84
+ end
85
+ def clone(options = {})
86
+ requires :name, :path
87
+ # Convert symbols to strings
88
+ req_options = options.inject({}) { |hsh, (k,v)| hsh[k.to_s] = v; hsh }
89
+ # Give our path to the request
90
+ req_options['path'] ="#{path}/#{name}"
91
+ # Perform the actual clone
92
+ clone_results = connection.vm_clone(req_options)
93
+ # Create the new VM model.
94
+ new_vm = self.class.new(clone_results['vm_attributes'])
95
+ # We need to assign the collection and the connection otherwise we
96
+ # cannot reload the model.
97
+ new_vm.collection = self.collection
98
+ new_vm.connection = self.connection
99
+ # Return the new VM model.
100
+ new_vm
101
+ end
102
+
60
103
  end
61
104
 
62
105
  end
@@ -9,8 +9,14 @@ module Fog
9
9
 
10
10
  model Fog::Compute::Vsphere::Server
11
11
 
12
- def all
13
- response = connection.list_virtual_machines
12
+ # 'path' => '/Datacenters/vm/Jeff/Templates' will be MUCH faster.
13
+ # than simply listing everything.
14
+ def all(filters = {})
15
+ # REVISIT: I'm not sure if this is the best way to implement search
16
+ # filters on a collection but it does work. I need to study the AWS
17
+ # code more to make sure this matches up.
18
+ filters['folder'] ||= attributes['folder']
19
+ response = connection.list_virtual_machines(filters)
14
20
  load(response['virtual_machines'])
15
21
  end
16
22
 
@@ -0,0 +1,34 @@
1
+ module Fog
2
+ module Compute
3
+ class Vsphere
4
+ class Real
5
+ def datacenters
6
+ @datacenters ||= datacenters_reload
7
+ # Hide the values which are the RbVmomi instances
8
+ @datacenters.keys
9
+ end
10
+
11
+ private
12
+
13
+ def datacenters_reload
14
+ @rootfolder ||= @connection.rootFolder
15
+ inventory = @rootfolder.inventory(:Datacenter => [ 'name' ])[@rootfolder]
16
+ # Convert the inventory into a Hash of the form: We remove the
17
+ # property selectors. { "<dc_name>" => #<RbVmomi::VIM::Datacenter> }
18
+ # The Datacenter instance itself is at index 0 and the properties we
19
+ # collected are at index 1.
20
+ inventory.inject({}) do |memo, (name,dc_ary)|
21
+ memo[name] = dc_ary[0]
22
+ memo
23
+ end
24
+ end
25
+ end
26
+
27
+ class Mock
28
+ def datacenters
29
+ [ "Solutions", "Solutions2", "Solutions3" ]
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end