fog 1.14.0 → 1.15.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (288) hide show
  1. data/.gitignore +1 -0
  2. data/Rakefile +2 -2
  3. data/changelog.txt +296 -0
  4. data/fog.gemspec +2 -2
  5. data/lib/fog/atmos/models/storage/file.rb +2 -2
  6. data/lib/fog/aws/compute.rb +42 -2
  7. data/lib/fog/aws/elb.rb +3 -0
  8. data/lib/fog/aws/elb/policy_types.rb +441 -430
  9. data/lib/fog/aws/models/auto_scaling/activities.rb +11 -3
  10. data/lib/fog/aws/models/auto_scaling/groups.rb +6 -3
  11. data/lib/fog/aws/models/auto_scaling/policies.rb +7 -3
  12. data/lib/fog/aws/models/compute/flavors.rb +19 -0
  13. data/lib/fog/aws/models/compute/volume.rb +1 -1
  14. data/lib/fog/aws/models/elb/backend_server_description.rb +11 -0
  15. data/lib/fog/aws/models/elb/backend_server_descriptions.rb +22 -0
  16. data/lib/fog/aws/models/elb/load_balancer.rb +15 -2
  17. data/lib/fog/aws/models/elb/policies.rb +28 -13
  18. data/lib/fog/aws/models/elb/policy.rb +20 -10
  19. data/lib/fog/aws/models/rds/instance_option.rb +21 -0
  20. data/lib/fog/aws/models/rds/instance_options.rb +30 -0
  21. data/lib/fog/aws/models/rds/server.rb +1 -0
  22. data/lib/fog/aws/parsers/auto_scaling/describe_policies.rb +5 -5
  23. data/lib/fog/aws/parsers/compute/describe_account_attributes.rb +42 -0
  24. data/lib/fog/aws/parsers/elb/describe_load_balancers.rb +44 -13
  25. data/lib/fog/aws/parsers/rds/db_parser.rb +28 -6
  26. data/lib/fog/aws/parsers/rds/describe_orderable_db_instance_options.rb +47 -0
  27. data/lib/fog/aws/rds.rb +5 -0
  28. data/lib/fog/aws/requests/auto_scaling/describe_auto_scaling_groups.rb +9 -1
  29. data/lib/fog/aws/requests/auto_scaling/describe_policies.rb +15 -1
  30. data/lib/fog/aws/requests/compute/describe_account_attributes.rb +49 -0
  31. data/lib/fog/aws/requests/elb/create_app_cookie_stickiness_policy.rb +0 -2
  32. data/lib/fog/aws/requests/elb/create_lb_cookie_stickiness_policy.rb +0 -2
  33. data/lib/fog/aws/requests/elb/create_load_balancer.rb +30 -9
  34. data/lib/fog/aws/requests/elb/create_load_balancer_policy.rb +11 -8
  35. data/lib/fog/aws/requests/elb/describe_load_balancers.rb +21 -1
  36. data/lib/fog/aws/requests/elb/set_load_balancer_policies_for_backend_server.rb +67 -0
  37. data/lib/fog/aws/requests/iam/upload_server_certificate.rb +1 -1
  38. data/lib/fog/aws/requests/rds/describe_orderable_db_instance_options.rb +76 -0
  39. data/lib/fog/aws/requests/ses/verify_domain_identity.rb +1 -1
  40. data/lib/fog/bin/rackspace.rb +4 -0
  41. data/lib/fog/brightbox/models/compute/collaboration.rb +10 -2
  42. data/lib/fog/brightbox/models/compute/collaborations.rb +26 -2
  43. data/lib/fog/brightbox/models/compute/user_collaboration.rb +16 -1
  44. data/lib/fog/brightbox/models/compute/user_collaborations.rb +10 -2
  45. data/lib/fog/cloudstack/models/compute/server.rb +4 -0
  46. data/lib/fog/cloudstack/models/compute/servers.rb +1 -1
  47. data/lib/fog/compute/models/server.rb +16 -10
  48. data/lib/fog/core.rb +1 -0
  49. data/lib/fog/core/collection.rb +18 -0
  50. data/lib/fog/core/credentials.rb +6 -1
  51. data/lib/fog/core/mock.rb +16 -0
  52. data/lib/fog/digitalocean/compute.rb +32 -3
  53. data/lib/fog/digitalocean/models/compute/server.rb +43 -14
  54. data/lib/fog/digitalocean/models/compute/servers.rb +27 -4
  55. data/lib/fog/digitalocean/models/compute/ssh_keys.rb +2 -3
  56. data/lib/fog/digitalocean/requests/compute/create_server.rb +9 -7
  57. data/lib/fog/digitalocean/requests/compute/destroy_server.rb +3 -0
  58. data/lib/fog/digitalocean/requests/compute/list_images.rb +6 -6
  59. data/lib/fog/dnsimple/dns.rb +4 -1
  60. data/lib/fog/dnsimple/models/dns/record.rb +3 -3
  61. data/lib/fog/dnsimple/requests/dns/create_domain.rb +36 -0
  62. data/lib/fog/dnsimple/requests/dns/create_record.rb +27 -0
  63. data/lib/fog/dnsimple/requests/dns/delete_domain.rb +12 -0
  64. data/lib/fog/dnsimple/requests/dns/delete_record.rb +12 -0
  65. data/lib/fog/dnsimple/requests/dns/get_domain.rb +12 -0
  66. data/lib/fog/dnsimple/requests/dns/get_record.rb +24 -0
  67. data/lib/fog/dnsimple/requests/dns/list_domains.rb +12 -0
  68. data/lib/fog/dnsimple/requests/dns/list_records.rb +12 -0
  69. data/lib/fog/dnsimple/requests/dns/update_record.rb +20 -0
  70. data/lib/fog/glesys/models/compute/server.rb +6 -0
  71. data/lib/fog/google/README.md +28 -0
  72. data/lib/fog/google/Rakefile +17 -0
  73. data/lib/fog/google/compute.rb +5 -0
  74. data/lib/fog/google/examples/bootstrap.rb +9 -0
  75. data/lib/fog/google/examples/create.rb +37 -0
  76. data/lib/fog/google/examples/eric-fail.rb +19 -0
  77. data/lib/fog/google/examples/get_list_images.rb +27 -0
  78. data/lib/fog/google/examples/get_list_snapshots.rb +20 -0
  79. data/lib/fog/google/examples/image_create.rb +18 -0
  80. data/lib/fog/google/examples/launch_micro_instance.rb +26 -0
  81. data/lib/fog/google/examples/metadata.rb +18 -0
  82. data/lib/fog/google/examples/network.rb +21 -0
  83. data/lib/fog/google/models/compute/disk.rb +16 -5
  84. data/lib/fog/google/models/compute/disks.rb +16 -6
  85. data/lib/fog/google/models/compute/flavors.rb +2 -1
  86. data/lib/fog/google/models/compute/image.rb +36 -18
  87. data/lib/fog/google/models/compute/images.rb +38 -5
  88. data/lib/fog/google/models/compute/server.rb +20 -6
  89. data/lib/fog/google/models/compute/servers.rb +8 -5
  90. data/lib/fog/google/models/compute/snapshot.rb +36 -0
  91. data/lib/fog/google/models/compute/snapshots.rb +28 -0
  92. data/lib/fog/google/models/storage/file.rb +7 -1
  93. data/lib/fog/google/parsers/storage/access_control_list.rb +2 -2
  94. data/lib/fog/google/requests/compute/delete_disk.rb +5 -1
  95. data/lib/fog/google/requests/compute/get_disk.rb +2 -1
  96. data/lib/fog/google/requests/compute/get_snapshot.rb +34 -0
  97. data/lib/fog/google/requests/compute/insert_disk.rb +23 -7
  98. data/lib/fog/google/requests/compute/insert_image.rb +16 -9
  99. data/lib/fog/google/requests/compute/insert_server.rb +22 -10
  100. data/lib/fog/google/requests/compute/list_disks.rb +1 -1
  101. data/lib/fog/google/requests/compute/list_images.rb +3 -2
  102. data/lib/fog/google/requests/compute/list_snapshots.rb +30 -0
  103. data/lib/fog/openstack.rb +11 -2
  104. data/lib/fog/openstack/network.rb +23 -0
  105. data/lib/fog/openstack/requests/compute/add_flavor_access.rb +1 -1
  106. data/lib/fog/openstack/requests/compute/create_volume.rb +8 -7
  107. data/lib/fog/openstack/requests/compute/list_tenants_with_flavor_access.rb +1 -1
  108. data/lib/fog/openstack/requests/compute/remove_flavor_access.rb +1 -1
  109. data/lib/fog/openstack/requests/image/create_image.rb +23 -23
  110. data/lib/fog/openstack/requests/image/update_image.rb +31 -33
  111. data/lib/fog/openstack/requests/network/delete_quota.rb +26 -0
  112. data/lib/fog/openstack/requests/network/get_quota.rb +31 -0
  113. data/lib/fog/openstack/requests/network/get_quotas.rb +31 -0
  114. data/lib/fog/openstack/requests/network/update_quota.rb +33 -0
  115. data/lib/fog/openstack/requests/storage/get_object_https_url.rb +3 -3
  116. data/lib/fog/openstack/requests/storage/post_set_meta_temp_url_key.rb +1 -1
  117. data/lib/fog/openstack/requests/storage/put_object.rb +8 -5
  118. data/lib/fog/openstack/storage.rb +10 -9
  119. data/lib/fog/rackspace.rb +15 -5
  120. data/lib/fog/rackspace/block_storage.rb +8 -4
  121. data/lib/fog/rackspace/cdn.rb +21 -4
  122. data/lib/fog/rackspace/compute.rb +4 -4
  123. data/lib/fog/rackspace/compute_v2.rb +15 -4
  124. data/lib/fog/rackspace/databases.rb +4 -4
  125. data/lib/fog/rackspace/dns.rb +6 -6
  126. data/lib/fog/rackspace/errors.rb +12 -5
  127. data/lib/fog/rackspace/load_balancers.rb +4 -4
  128. data/lib/fog/rackspace/mock_data.rb +18 -7
  129. data/lib/fog/rackspace/models/compute_v2/key_pair.rb +56 -0
  130. data/lib/fog/rackspace/models/compute_v2/key_pairs.rb +43 -0
  131. data/lib/fog/rackspace/models/compute_v2/server.rb +7 -2
  132. data/lib/fog/rackspace/models/compute_v2/servers.rb +2 -1
  133. data/lib/fog/rackspace/models/identity/service_catalog.rb +34 -16
  134. data/lib/fog/rackspace/models/monitoring/agent_token.rb +40 -0
  135. data/lib/fog/rackspace/models/monitoring/agent_tokens.rb +28 -0
  136. data/lib/fog/rackspace/models/monitoring/alarm.rb +59 -0
  137. data/lib/fog/rackspace/models/monitoring/alarm_example.rb +26 -0
  138. data/lib/fog/rackspace/models/monitoring/alarm_examples.rb +31 -0
  139. data/lib/fog/rackspace/models/monitoring/alarms.rb +40 -0
  140. data/lib/fog/rackspace/models/monitoring/base.rb +30 -0
  141. data/lib/fog/rackspace/models/monitoring/check.rb +75 -0
  142. data/lib/fog/rackspace/models/monitoring/check_type.rb +15 -0
  143. data/lib/fog/rackspace/models/monitoring/check_types.rb +23 -0
  144. data/lib/fog/rackspace/models/monitoring/checks.rb +40 -0
  145. data/lib/fog/rackspace/models/monitoring/data_point.rb +18 -0
  146. data/lib/fog/rackspace/models/monitoring/data_points.rb +49 -0
  147. data/lib/fog/rackspace/models/monitoring/entities.rb +48 -0
  148. data/lib/fog/rackspace/models/monitoring/entity.rb +64 -0
  149. data/lib/fog/rackspace/models/monitoring/metric.rb +25 -0
  150. data/lib/fog/rackspace/models/monitoring/metrics.rb +27 -0
  151. data/lib/fog/rackspace/monitoring.rb +153 -0
  152. data/lib/fog/rackspace/requests/compute_v2/create_keypair.rb +53 -0
  153. data/lib/fog/rackspace/requests/compute_v2/create_server.rb +10 -8
  154. data/lib/fog/rackspace/requests/compute_v2/delete_keypair.rb +36 -0
  155. data/lib/fog/rackspace/requests/compute_v2/get_keypair.rb +41 -0
  156. data/lib/fog/rackspace/requests/compute_v2/list_keypairs.rb +37 -0
  157. data/lib/fog/rackspace/requests/monitoring/create_agent_token.rb +19 -0
  158. data/lib/fog/rackspace/requests/monitoring/create_alarm.rb +19 -0
  159. data/lib/fog/rackspace/requests/monitoring/create_check.rb +19 -0
  160. data/lib/fog/rackspace/requests/monitoring/create_entity.rb +19 -0
  161. data/lib/fog/rackspace/requests/monitoring/delete_agent_token.rb +17 -0
  162. data/lib/fog/rackspace/requests/monitoring/delete_alarm.rb +18 -0
  163. data/lib/fog/rackspace/requests/monitoring/delete_check.rb +17 -0
  164. data/lib/fog/rackspace/requests/monitoring/delete_entity.rb +17 -0
  165. data/lib/fog/rackspace/requests/monitoring/evaluate_alarm_example.rb +21 -0
  166. data/lib/fog/rackspace/requests/monitoring/get_agent_token.rb +19 -0
  167. data/lib/fog/rackspace/requests/monitoring/get_alarm.rb +19 -0
  168. data/lib/fog/rackspace/requests/monitoring/get_alarm_example.rb +19 -0
  169. data/lib/fog/rackspace/requests/monitoring/get_check.rb +19 -0
  170. data/lib/fog/rackspace/requests/monitoring/get_entity.rb +19 -0
  171. data/lib/fog/rackspace/requests/monitoring/list_agent_tokens.rb +19 -0
  172. data/lib/fog/rackspace/requests/monitoring/list_alarm_examples.rb +18 -0
  173. data/lib/fog/rackspace/requests/monitoring/list_alarms.rb +18 -0
  174. data/lib/fog/rackspace/requests/monitoring/list_check_types.rb +17 -0
  175. data/lib/fog/rackspace/requests/monitoring/list_checks.rb +18 -0
  176. data/lib/fog/rackspace/requests/monitoring/list_data_points.rb +18 -0
  177. data/lib/fog/rackspace/requests/monitoring/list_entities.rb +19 -0
  178. data/lib/fog/rackspace/requests/monitoring/list_metrics.rb +18 -0
  179. data/lib/fog/rackspace/requests/monitoring/list_notification_plans.rb +18 -0
  180. data/lib/fog/rackspace/requests/monitoring/list_overview.rb +19 -0
  181. data/lib/fog/rackspace/requests/monitoring/update_alarm.rb +18 -0
  182. data/lib/fog/rackspace/requests/monitoring/update_check.rb +18 -0
  183. data/lib/fog/rackspace/requests/monitoring/update_entity.rb +18 -0
  184. data/lib/fog/rackspace/requests/storage/put_object.rb +1 -1
  185. data/lib/fog/rackspace/storage.rb +8 -4
  186. data/lib/fog/vcloud/compute.rb +1 -1
  187. data/lib/fog/vcloud/examples/README.md +54 -0
  188. data/lib/fog/vcloud/examples/creating_a_connection.md +20 -0
  189. data/lib/fog/vcloud/examples/creating_a_vapp.md +17 -0
  190. data/lib/fog/vcloud/examples/get_network_information.md +10 -0
  191. data/lib/fog/vcloud/examples/get_vapp_information.md +10 -0
  192. data/lib/fog/vcloud/examples/more_on_vapps.md +23 -0
  193. data/lib/fog/vcloud/requests/compute/configure_vm.rb +2 -2
  194. data/lib/fog/version.rb +1 -1
  195. data/lib/fog/vsphere/compute.rb +131 -0
  196. data/lib/fog/vsphere/models/compute/server.rb +5 -1
  197. data/lib/fog/vsphere/requests/compute/get_datacenter.rb +3 -1
  198. data/lib/fog/vsphere/requests/compute/get_virtual_machine.rb +21 -37
  199. data/lib/fog/vsphere/requests/compute/list_datacenters.rb +1 -0
  200. data/lib/fog/vsphere/requests/compute/list_virtual_machines.rb +8 -114
  201. data/lib/fog/vsphere/requests/compute/vm_clone.rb +18 -9
  202. data/lib/fog/vsphere/requests/compute/vm_power_off.rb +2 -0
  203. data/lib/fog/xenserver/compute.rb +14 -12
  204. data/lib/fog/xenserver/models/compute/console.rb +27 -0
  205. data/lib/fog/xenserver/models/compute/consoles.rb +25 -0
  206. data/lib/fog/xenserver/models/compute/server.rb +6 -2
  207. data/lib/fog/xenserver/models/compute/servers.rb +5 -0
  208. data/lib/fog/xenserver/requests/compute/create_server.rb +4 -0
  209. data/lib/fog/xml/sax_parser_connection.rb +3 -0
  210. data/lib/tasks/changelog_task.rb +1 -0
  211. data/tests/aws/models/compute/volume_tests.rb +1 -1
  212. data/tests/aws/models/elb/model_tests.rb +33 -1
  213. data/tests/aws/models/rds/instance_option_tests.rb +14 -0
  214. data/tests/aws/parsers/elb/describe_load_balancers.rb +65 -0
  215. data/tests/aws/requests/compute/client_tests.rb +25 -0
  216. data/tests/aws/requests/elb/helper.rb +2 -1
  217. data/tests/aws/requests/elb/listener_tests.rb +1 -1
  218. data/tests/aws/requests/elb/load_balancer_tests.rb +5 -1
  219. data/tests/aws/requests/elb/policy_tests.rb +85 -6
  220. data/tests/aws/requests/iam/helper.rb +4 -1
  221. data/tests/aws/requests/iam/server_certificate_tests.rb +2 -2
  222. data/tests/aws/requests/rds/helper.rb +22 -0
  223. data/tests/aws/requests/rds/instance_option_tests.rb +21 -0
  224. data/tests/core/credential_tests.rb +21 -0
  225. data/tests/core/mocking_tests.rb +15 -0
  226. data/tests/core/service_tests.rb +26 -0
  227. data/tests/digitalocean/helper.rb +23 -16
  228. data/tests/digitalocean/models/compute/flavor_tests.rb +2 -2
  229. data/tests/digitalocean/models/compute/image_tests.rb +2 -2
  230. data/tests/digitalocean/models/compute/region_tests.rb +2 -2
  231. data/tests/digitalocean/models/compute/server_tests.rb +11 -3
  232. data/tests/digitalocean/models/compute/servers_tests.rb +14 -28
  233. data/tests/digitalocean/models/compute/ssh_key_tests.rb +7 -3
  234. data/tests/digitalocean/models/compute/ssh_keys_tests.rb +5 -1
  235. data/tests/digitalocean/requests/compute/create_server_tests.rb +3 -6
  236. data/tests/digitalocean/requests/compute/destroy_server_tests.rb +1 -2
  237. data/tests/digitalocean/requests/compute/get_server_details_tests.rb +1 -1
  238. data/tests/digitalocean/requests/compute/get_ssh_key_tests.rb +4 -1
  239. data/tests/digitalocean/requests/compute/list_ssh_keys_tests.rb +5 -2
  240. data/tests/dnsimple/requests/dns/dns_tests.rb +30 -26
  241. data/tests/helper.rb +2 -2
  242. data/tests/helpers/collection_helper.rb +4 -4
  243. data/tests/helpers/mock_helper.rb +2 -0
  244. data/tests/openstack/authenticate_tests.rb +22 -0
  245. data/tests/openstack/requests/compute/flavor_tests.rb +27 -12
  246. data/tests/openstack/requests/compute/volume_tests.rb +10 -12
  247. data/tests/openstack/requests/image/image_tests.rb +30 -15
  248. data/tests/openstack/requests/network/quota_tests.rb +65 -0
  249. data/tests/openstack/requests/storage/object_tests.rb +27 -2
  250. data/tests/rackspace/block_storage_tests.rb +2 -1
  251. data/tests/rackspace/cdn_tests.rb +9 -0
  252. data/tests/rackspace/compute_v2_tests.rb +16 -15
  253. data/tests/rackspace/databases_tests.rb +1 -1
  254. data/tests/rackspace/load_balancer_tests.rb +1 -1
  255. data/tests/rackspace/models/compute_v2/keypairs_tests.rb +47 -0
  256. data/tests/rackspace/models/identity/service_catalog_tests.rb +54 -29
  257. data/tests/rackspace/models/monitoring/agent_token_tests.rb +9 -0
  258. data/tests/rackspace/models/monitoring/agent_tokens_tests.rb +9 -0
  259. data/tests/rackspace/models/monitoring/alarm_example_tests.rb +18 -0
  260. data/tests/rackspace/models/monitoring/alarm_examples_tests.rb +19 -0
  261. data/tests/rackspace/models/monitoring/alarm_tests.rb +56 -0
  262. data/tests/rackspace/models/monitoring/alarms_tests.rb +25 -0
  263. data/tests/rackspace/models/monitoring/check_tests.rb +50 -0
  264. data/tests/rackspace/models/monitoring/check_types_tests.rb +14 -0
  265. data/tests/rackspace/models/monitoring/checks_tests.rb +16 -0
  266. data/tests/rackspace/models/monitoring/data_points_tests.rb +19 -0
  267. data/tests/rackspace/models/monitoring/entities_tests.rb +14 -0
  268. data/tests/rackspace/models/monitoring/entity_tests.rb +26 -0
  269. data/tests/rackspace/models/monitoring/metric_tests.rb +19 -0
  270. data/tests/rackspace/models/monitoring/metrics_tests.rb +17 -0
  271. data/tests/rackspace/monitoring_tests.rb +72 -0
  272. data/tests/rackspace/requests/compute_v2/keypair_tests.rb +55 -0
  273. data/tests/rackspace/requests/monitoring/agent_tests.rb +34 -0
  274. data/tests/rackspace/requests/monitoring/alarm_example_tests.rb +30 -0
  275. data/tests/rackspace/requests/monitoring/alarm_tests.rb +55 -0
  276. data/tests/rackspace/requests/monitoring/check_tests.rb +40 -0
  277. data/tests/rackspace/requests/monitoring/entity_tests.rb +37 -0
  278. data/tests/rackspace/requests/monitoring/helper.rb +78 -0
  279. data/tests/rackspace/requests/monitoring/list_tests.rb +60 -0
  280. data/tests/vsphere/models/compute/server_tests.rb +1 -1
  281. data/tests/vsphere/requests/compute/list_virtual_machines_tests.rb +2 -2
  282. data/tests/vsphere/requests/compute/vm_clone_tests.rb +14 -8
  283. data/tests/xenserver/compute_tests.rb +5 -5
  284. data/tests/xenserver/models/compute/console_test.rb +35 -0
  285. data/tests/xenserver/models/compute/consoles_test.rb +19 -0
  286. data/tests/xenserver/models/compute/server_tests.rb +25 -18
  287. data/tests/xenserver/models/compute/servers_tests.rb +1 -0
  288. metadata +154 -3
@@ -0,0 +1,18 @@
1
+ module Fog
2
+ module Rackspace
3
+ class Monitoring
4
+ class Real
5
+
6
+ def update_alarm(entity_id, id, options)
7
+ request(
8
+ :body => JSON.encode(options),
9
+ :expects => [204],
10
+ :method => 'PUT',
11
+ :path => "entities/#{entity_id}/alarms/#{id}"
12
+ )
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+
@@ -0,0 +1,18 @@
1
+ module Fog
2
+ module Rackspace
3
+ class Monitoring
4
+ class Real
5
+
6
+ def update_check(entity_id, id, options)
7
+ request(
8
+ :body => JSON.encode(options),
9
+ :expects => [204],
10
+ :method => 'PUT',
11
+ :path => "entities/#{entity_id}/checks/#{id}"
12
+ )
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+
@@ -0,0 +1,18 @@
1
+ module Fog
2
+ module Rackspace
3
+ class Monitoring
4
+ class Real
5
+
6
+ def update_entity(id, options)
7
+ request(
8
+ :body => JSON.encode(options),
9
+ :expects => [204],
10
+ :method => 'PUT',
11
+ :path => "entities/#{id}"
12
+ )
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+
@@ -22,7 +22,7 @@ module Fog
22
22
 
23
23
  params.merge!(
24
24
  :expects => 201,
25
- :idempotent => true,
25
+ :idempotent => !params[:request_block],
26
26
  :headers => headers,
27
27
  :method => 'PUT',
28
28
  :path => "#{Fog::Rackspace.escape(container)}/#{Fog::Rackspace.escape(object)}"
@@ -145,13 +145,13 @@ module Fog
145
145
  def request(params, parse_json = true, &block)
146
146
  super(params, parse_json, &block)
147
147
  rescue Excon::Errors::NotFound => error
148
- raise NotFound.slurp(error, region)
148
+ raise NotFound.slurp(error, self)
149
149
  rescue Excon::Errors::BadRequest => error
150
- raise BadRequest.slurp error
150
+ raise BadRequest.slurp(error, self)
151
151
  rescue Excon::Errors::InternalServerError => error
152
- raise InternalServerError.slurp error
152
+ raise InternalServerError.slurp(error, self)
153
153
  rescue Excon::Errors::HTTPStatusError => error
154
- raise ServiceError.slurp error
154
+ raise ServiceError.slurp(error, self)
155
155
  end
156
156
 
157
157
  def service_net?
@@ -177,6 +177,10 @@ module Fog
177
177
  :cloudFiles
178
178
  end
179
179
 
180
+ def request_id_header
181
+ "X-Trans-Id"
182
+ end
183
+
180
184
  def region
181
185
  @rackspace_region
182
186
  end
@@ -231,7 +231,7 @@ module Fog
231
231
  # header from that call.
232
232
  def do_login
233
233
  @login_results = login
234
- @cookie = @login_results.headers['Set-Cookie']
234
+ @cookie = @login_results.headers['Set-Cookie'] || @login_results.headers['set-cookie']
235
235
  end
236
236
 
237
237
  def ensure_unparsed(uri)
@@ -0,0 +1,54 @@
1
+ # Using vCloud API via fog
2
+ _contributor @singhgarima_
3
+
4
+ For more information about fog [README](/README.md), or visit their website
5
+ [fog.io](www.fog.io).
6
+
7
+ ## Vcloud API
8
+
9
+ Some useful links to get started on the vCloud API:
10
+
11
+ - [http://www.vmware.com/pdf/vcd_15_api_guide.pdf](http://www.vmware.com/pdf/vcd_15_api_guide.pdf)
12
+ - [vCloud API Programming Guide](http://pubs.vmware.com/vcd-51/index.jsp?topic=%2Fcom.vmware.vcloud.api.doc_51%2FGUID-86CA32C2-3753-49B2-A471-1CE460109ADB.html)
13
+
14
+ ## Terminology
15
+
16
+ - Organization: An Organization is the fundamental vCloud Director grouping
17
+ that contains users, the vApps that they create, and the resources the vApps
18
+ use. It is a top-level container in a cloud that contains one or more
19
+ Organization Virtual Data Centers (Org vDCs) and Catalog entities. It owns
20
+ all the virtual resources for a cloud instance and can have many Org vDCs.[1]
21
+
22
+ - vApp: VMware vApp is a format for packaging and managing applications. A vApp
23
+ can contain multiple virtual machines.[2]
24
+
25
+ - VM: A virtualized personal computer environment in which a guest
26
+ operating system and associated application software can run. Multiple virtual
27
+ machines can operate on the same managed host machine concurrently.[3]
28
+
29
+ - Catalogs & Catalog-Items: Catalog is used in organizations for storing content.
30
+ Example: base images. Each item stored in catalog is referred as catalog item.
31
+
32
+ - vDC: Virtual Data Center. These are of two kinds provider vDCs (accessible to
33
+ multiple organizations), and organization vDCs (accessible only by a given
34
+ organization). In fog we refer to organization vDCs.
35
+
36
+ - Networks: You can setup various internal networks and assign various internal
37
+ ip ranges to them
38
+
39
+ ## What is the difference between a virtual appliance and a virtual machine?
40
+
41
+ A virtual machine is a tightly isolated software container created to run on
42
+ virtualized platforms. It has four key virtualized resources (CPU, RAM,
43
+ Storage, and Networking); but requires the installation of an Operating System
44
+ and runs on one or more applications. A virtual appliance functions very much
45
+ like a virtual machine, possessing the four key characteristics of
46
+ compatibility, isolation, encapsulation, and hardware independence. However, a
47
+ virtual appliance contains a pre-installed, pre-configured Operating System
48
+ and an application stack optimized to provide a specific set of services.[3]
49
+
50
+ **References**
51
+
52
+ - [1] http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1026316
53
+ - [2] http://www.vmware.com/pdf/vsphere4/r40/vsp_40_admin_guide.pdf
54
+ - [3] http://www.vmware.com/technical-resources/virtualization-topics/virtual-appliances/faqs
@@ -0,0 +1,20 @@
1
+ # Creating a connection
2
+
3
+ connection = Fog::Compute.new(
4
+ :provider => :vcloud,
5
+ :vcloud_username => "username@org-name",
6
+ :vcloud_password => password,
7
+ :vcloud_host => vendor-api-endpoint-host,
8
+ :vcloud_default_vdc => default_vdc_uri,
9
+ :connection_options => {
10
+ :ssl_verify_peer => false,
11
+ :omit_default_port => true
12
+ }
13
+ )
14
+
15
+ - Refer to links in [vcloud/examples/README.md](/lib/fog/vcloud/examples/REAME.md)
16
+ for find various different uris
17
+ - connection_options are passed down to `excon`, which is used by fog to make
18
+ http requests.
19
+ - We using `omit_default_port`, as currently excon adds port to host entry
20
+ in headers, which might not be compatible with various vendors.
@@ -0,0 +1,17 @@
1
+ # Creating a vApp
2
+
3
+ connection.servers.create(
4
+ :vdc_uri => vdc-uuid,
5
+ :catalog_item_uri => catalog-uuid,
6
+ :name => vApp-name,
7
+ :network_uri => network-uri,
8
+ :network_name => network-name,
9
+ :connection_options => {
10
+ :ssl_verify_peer => false,
11
+ :omit_default_port => true
12
+ }
13
+ )
14
+
15
+ - Not most of the uris can be found by understanding the vcloud api
16
+ eg various network information can be retrieved by
17
+ `connection.servers.service.networks`
@@ -0,0 +1,10 @@
1
+ # Get network information
2
+
3
+ - To see all networks list
4
+
5
+ connection.servers.service.networks
6
+
7
+ - To see details of a particular network
8
+
9
+ selected_nw = connection.servers.service.networks.detect { |n| n.name == 'Default' }
10
+ connection.servers.service.get_network(selected_nw.href)
@@ -0,0 +1,10 @@
1
+ # Get network information
2
+
3
+ - To see all vApps list
4
+
5
+ connection.servers.service.vapps
6
+
7
+ - To see details of a particular vApp
8
+
9
+ selected_vapp = connection.servers.service.vapps.detect { |n| n.name == 'vapp-name' }
10
+ connection.servers.service.get_vapp(selected_vapp.href)
@@ -0,0 +1,23 @@
1
+ # More on vApps
2
+
3
+ ## Checking running or stopped
4
+
5
+ selected_vapp = connection.servers.service.vapps.detect { |n| n.name == 'vapp-name' }
6
+ selected_vapp.on?
7
+ selected_vapp.off?
8
+
9
+ ## Wait for app to come up or stop
10
+
11
+ selected_vapp.wait_for { selected_vapp.on? }
12
+ selected_vapp.wait_for { selected_vapp.off? }
13
+
14
+ ## Delete vApp
15
+
16
+ selected_vapp = connection.servers.service.vapps.detect { |n| n.name == 'vapp-name' }
17
+ vapp = connection.servers.service.get_vapp(selected_vapp.href)
18
+ if vapp.on?
19
+ vapp.service.undeploy selected_vapp.href #undeploy to stop vApp
20
+ vapp.wait_for { vapp.off? }
21
+ end
22
+ vapp.wait_for { vapp.off? } #double check
23
+ vapp.service.delete_vapp selected_vapp.href
@@ -18,8 +18,8 @@ module Fog
18
18
  def generate_configure_vm_request(vm_data)
19
19
  xmlns = 'http://schemas.dmtf.org/ovf/envelope/1'
20
20
  xmlns_vcloud = 'http://www.vmware.com/vcloud/v1'
21
- xmlns_rasd = 'http://schemas.dmtf.org/wbem/wscim/1/cimschema/2/CIM_ResourceAllocationSettingData'
22
- xmlns_vssd = 'http://schemas.dmtf.org/wbem/wscim/1/cimschema/2/CIM_VirtualSystemSettingData'
21
+ xmlns_rasd = 'http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData'
22
+ xmlns_vssd = 'http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData'
23
23
 
24
24
  builder = Builder::XmlMarkup.new(:target=>STDOUT, :indent=>2) # TODO - remove params
25
25
  builder.VirtualHardwareSection(
@@ -1,3 +1,3 @@
1
1
  module Fog
2
- VERSION = '1.14.0'
2
+ VERSION = '1.15.0'
3
3
  end
@@ -169,12 +169,136 @@ module Fog
169
169
  obj.to_s.match(/\("([^"]+)"\)/)[1]
170
170
  end
171
171
 
172
+ def is_uuid?(id)
173
+ !(id =~ /[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}/).nil?
174
+ end
175
+
172
176
  end
173
177
 
174
178
  class Mock
175
179
 
176
180
  include Shared
177
181
 
182
+ def self.data
183
+ @data ||= Hash.new do |hash, key|
184
+ hash[key] = {
185
+ :servers => {
186
+ "5032c8a5-9c5e-ba7a-3804-832a03e16381" => {
187
+ "resource_pool" => "Resources",
188
+ "memory_mb" => 2196,
189
+ "mac_addresses" => { "Network adapter 1" => "00:50:56:a9:00:28" },
190
+ "power_state" => "poweredOn",
191
+ "cpus" => 1,
192
+ "hostname" => "dhcp75-197.virt.bos.redhat.com",
193
+ "mo_ref" => "vm-562",
194
+ "connection_state" => "connected",
195
+ "overall_status" => "green",
196
+ "datacenter" => "Solutions",
197
+ "volumes" =>
198
+ [{
199
+ "id" => "6000C29c-a47d-4cd9-5249-c371de775f06",
200
+ "datastore" => "Storage1",
201
+ "mode" => "persistent",
202
+ "size" => 8388608,
203
+ "thin" => true,
204
+ "name" => "Hard disk 1",
205
+ "filename" => "[Storage1] rhel6-mfojtik/rhel6-mfojtik.vmdk",
206
+ "size_gb" => 8
207
+ }],
208
+ "interfaces" =>
209
+ [{"mac" => "00:50:56:a9:00:28",
210
+ "network" => "VM Network",
211
+ "name" => "Network adapter 1",
212
+ "status" => "ok",
213
+ "summary" => "VM Network",
214
+ }],
215
+ "hypervisor" => "gunab.puppetlabs.lan",
216
+ "guest_id" => "rhel6_64Guest",
217
+ "tools_state" => "toolsOk",
218
+ "cluster" => "Solutionscluster",
219
+ "name" => "rhel64",
220
+ "operatingsystem" => "Red Hat Enterprise Linux 6 (64-bit)",
221
+ "path" => "/Datacenters/Solutions/vm",
222
+ "uuid" => "4229f0e9-bfdc-d9a7-7bac-12070772e6dc",
223
+ "instance_uuid" => "5032c8a5-9c5e-ba7a-3804-832a03e16381",
224
+ "id" => "5032c8a5-9c5e-ba7a-3804-832a03e16381",
225
+ "tools_version" => "guestToolsUnmanaged",
226
+ "ipaddress" => "192.168.100.184",
227
+ "template" => false
228
+ },
229
+ "502916a3-b42e-17c7-43ce-b3206e9524dc" => {
230
+ "resource_pool" => "Resources",
231
+ "memory_mb" => 512,
232
+ "power_state" => "poweredOn",
233
+ "mac_addresses" => { "Network adapter 1" => "00:50:56:a9:00:00" },
234
+ "hostname" => nil,
235
+ "cpus" => 1,
236
+ "connection_state" => "connected",
237
+ "mo_ref" => "vm-621",
238
+ "overall_status" => "green",
239
+ "datacenter" => "Solutions",
240
+ "volumes" =>
241
+ [{"thin" => false,
242
+ "size_gb" => 10,
243
+ "datastore" => "datastore1",
244
+ "filename" => "[datastore1] i-1342439683/i-1342439683.vmdk",
245
+ "size" => 10485762,
246
+ "name" => "Hard disk 1",
247
+ "mode" => "persistent",
248
+ "id" => "6000C29b-f364-d073-8316-8e98ac0a0eae" }],
249
+ "interfaces" =>
250
+ [{ "summary" => "VM Network",
251
+ "mac" => "00:50:56:a9:00:00",
252
+ "status" => "ok",
253
+ "network" => "VM Network",
254
+ "name" => "Network adapter 1" }],
255
+ "hypervisor" => "gunab.puppetlabs.lan",
256
+ "guest_id" => nil,
257
+ "cluster" => "Solutionscluster",
258
+ "tools_state" => "toolsNotInstalled",
259
+ "name" => "i-1342439683",
260
+ "operatingsystem" => nil,
261
+ "path" => "/",
262
+ "tools_version" => "guestToolsNotInstalled",
263
+ "uuid" => "4229e0de-30cb-ceb2-21f9-4d8d8beabb52",
264
+ "instance_uuid" => "502916a3-b42e-17c7-43ce-b3206e9524dc",
265
+ "id" => "502916a3-b42e-17c7-43ce-b3206e9524dc",
266
+ "ipaddress" => nil,
267
+ "template" => false
268
+ },
269
+ "5029c440-85ee-c2a1-e9dd-b63e39364603" => {
270
+ "resource_pool" => "Resources",
271
+ "memory_mb" => 2196,
272
+ "power_state" => "poweredOn",
273
+ "mac_addresses" => { "Network adapter 1" => "00:50:56:b2:00:af" },
274
+ "hostname" => "centos56gm.localdomain",
275
+ "cpus" => 1,
276
+ "connection_state" => "connected",
277
+ "mo_ref" => "vm-715",
278
+ "overall_status" => "green",
279
+ "datacenter" => "Solutions",
280
+ "hypervisor" => "gunab.puppetlabs.lan",
281
+ "guest_id" => "rhel6_64Guest",
282
+ "cluster" => "Solutionscluster",
283
+ "tools_state" => "toolsOk",
284
+ "name" => "jefftest",
285
+ "operatingsystem" => "Red Hat Enterprise Linux 6 (64-bit)",
286
+ "path" => "/",
287
+ "tools_version" => "guestToolsUnmanaged",
288
+ "ipaddress" => "192.168.100.187",
289
+ "uuid" => "42329da7-e8ab-29ec-1892-d6a4a964912a",
290
+ "instance_uuid" => "5029c440-85ee-c2a1-e9dd-b63e39364603",
291
+ "id" => "5029c440-85ee-c2a1-e9dd-b63e39364603",
292
+ "template" => false
293
+ }
294
+ },
295
+ :datacenters => {
296
+ "Solutions" => {:name => "Solutions", :status => "grey"}
297
+ }
298
+ }
299
+ end
300
+ end
301
+
178
302
  def initialize(options={})
179
303
  require 'rbvmomi'
180
304
  @vsphere_username = options[:vsphere_username]
@@ -185,6 +309,13 @@ module Fog
185
309
  @vsphere_rev = '4.0'
186
310
  end
187
311
 
312
+ def data
313
+ self.class.data[@vsphere_username]
314
+ end
315
+
316
+ def reset_data
317
+ self.class.data.delete(@vsphere_username)
318
+ end
188
319
  end
189
320
 
190
321
  class Real
@@ -98,7 +98,11 @@ module Fog
98
98
 
99
99
  def destroy(options = {})
100
100
  requires :instance_uuid
101
- stop if ready? # need to turn it off before destroying
101
+ if ready?
102
+ # need to turn it off before destroying
103
+ stop
104
+ wait_for { !ready? }
105
+ end
102
106
  service.vm_destroy('instance_uuid' => instance_uuid)
103
107
  end
104
108
 
@@ -21,7 +21,9 @@ module Fog
21
21
 
22
22
  class Mock
23
23
  def get_datacenter name
24
- {:name => "Solutions", :status => "grey"}
24
+ dc = self.data[:datacenters][name]
25
+ raise(Fog::Compute::Vsphere::NotFound) unless dc
26
+ dc
25
27
  end
26
28
  end
27
29
  end
@@ -9,50 +9,34 @@ module Fog
9
9
  protected
10
10
 
11
11
  def get_vm_ref(id, dc = nil)
12
- vm = case id
13
- # UUID based
14
- when /[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}/
15
- @connection.searchIndex.FindByUuid :uuid => id, :vmSearch => true, :instanceUuid => true, :datacenter => dc
16
- else
17
- # try to find based on VM name
18
- if dc
19
- get_raw_datacenter(dc).find_vm(id)
20
- else
21
- raw_datacenters.map { |d| d.find_vm(id) }.compact.first
22
- end
23
- end
12
+ raw_datacenter = find_raw_datacenter(dc) if dc
13
+ vm = case is_uuid?(id)
14
+ # UUID based
15
+ when true
16
+ params = {:uuid => id, :vmSearch => true, :instanceUuid => true}
17
+ params[:datacenter] = raw_datacenter if dc
18
+ @connection.searchIndex.FindByUuid(params)
19
+ else
20
+ # try to find based on VM name
21
+ if dc
22
+ raw_datacenter.find_vm(id)
23
+ else
24
+ raw_datacenters.map { |d| d.find_vm(id) }.compact.first
25
+ end
26
+ end
24
27
  vm ? vm : raise(Fog::Compute::Vsphere::NotFound, "#{id} was not found")
25
28
  end
26
29
  end
27
30
 
28
31
  class Mock
29
32
  def get_virtual_machine(id, datacenter_name = nil)
30
- case id
31
- when "5032c8a5-9c5e-ba7a-3804-832a03e16381", 'vm-715'
32
- { :resource_pool => "Resources",
33
- :memory_mb => 2196,
34
- :power_state => "poweredOn",
35
- :mac_addresses => { "Network adapter 1" => "00:50:56:b2:00:af" },
36
- :hostname => "centos56gm.localdomain",
37
- :cpus => 1,
38
- :connection_state => "connected",
39
- :mo_ref => "vm-715",
40
- :overall_status => "green",
41
- :datacenter => "Solutions",
42
- :instance_uuid => "5029c440-85ee-c2a1-e9dd-b63e39364603",
43
- :hypervisor => "gunab.puppetlabs.lan",
44
- :guest_id => "rhel6_64Guest",
45
- :cluster => "virtlabcluster",
46
- :tools_state => "toolsOk",
47
- :name => "jefftest",
48
- :operatingsystem => "Red Hat Enterprise Linux 6 (64-bit)",
49
- :path => "/",
50
- :tools_version => "guestToolsUnmanaged",
51
- :ipaddress => "192.168.100.187",
52
- :id => "5032c8a5-9c5e-ba7a-3804-832a03e16381",
53
- :uuid => "42329da7-e8ab-29ec-1892-d6a4a964912a"
54
- }
33
+ if is_uuid?(id)
34
+ vm = list_virtual_machines({ 'instance_uuid' => id, 'datacenter' => datacenter_name }).first
35
+ else
36
+ # try to find based on VM name. May need to handle the path of the VM
37
+ vm = list_virtual_machines({ 'name' => id, 'datacenter' => datacenter_name }).first
55
38
  end
39
+ vm ? vm : raise(Fog::Compute::Vsphere::NotFound, "#{id} was not found")
56
40
  end
57
41
 
58
42
  end