fog 1.36.0 → 1.37.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (305) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +61 -0
  3. data/Rakefile +0 -3
  4. data/fog.gemspec +4 -3
  5. data/lib/fog/digitalocean/compute_v2.rb +2 -1
  6. data/lib/fog/digitalocean/examples/getting_started.md +24 -48
  7. data/lib/fog/digitalocean/models/compute_v2/server.rb +4 -0
  8. data/lib/fog/digitalocean/models/compute_v2/ssh_key.rb +17 -16
  9. data/lib/fog/digitalocean/requests/compute_v2/delete_ssh_key.rb +1 -1
  10. data/lib/fog/digitalocean/requests/compute_v2/get_image_details.rb +1 -2
  11. data/lib/fog/openstack.rb +2 -0
  12. data/lib/fog/openstack/common.rb +46 -0
  13. data/lib/fog/openstack/compute.rb +3 -1
  14. data/lib/fog/openstack/core.rb +15 -3
  15. data/lib/fog/openstack/docs/compute.md +1 -1
  16. data/lib/fog/openstack/identity.rb +0 -37
  17. data/lib/fog/openstack/identity_v2.rb +9 -3
  18. data/lib/fog/openstack/identity_v3.rb +8 -3
  19. data/lib/fog/openstack/image.rb +1 -41
  20. data/lib/fog/openstack/image_v1.rb +9 -3
  21. data/lib/fog/openstack/image_v2.rb +7 -2
  22. data/lib/fog/openstack/metering.rb +2 -1
  23. data/lib/fog/openstack/models/compute/server.rb +5 -0
  24. data/lib/fog/openstack/models/identity_v2/user.rb +6 -2
  25. data/lib/fog/openstack/models/volume/availability_zone.rb +1 -4
  26. data/lib/fog/openstack/models/volume/availability_zones.rb +1 -4
  27. data/lib/fog/openstack/models/volume/transfer.rb +1 -9
  28. data/lib/fog/openstack/models/volume/transfers.rb +1 -4
  29. data/lib/fog/openstack/models/volume/volume.rb +6 -18
  30. data/lib/fog/openstack/models/volume/volume_type.rb +0 -3
  31. data/lib/fog/openstack/models/volume/volume_types.rb +1 -4
  32. data/lib/fog/openstack/models/volume/volumes.rb +1 -4
  33. data/lib/fog/openstack/models/volume_v1/availability_zone.rb +15 -0
  34. data/lib/fog/openstack/models/volume_v1/availability_zones.rb +16 -0
  35. data/lib/fog/openstack/models/volume_v1/transfer.rb +18 -0
  36. data/lib/fog/openstack/models/volume_v1/transfers.rb +16 -0
  37. data/lib/fog/openstack/models/volume_v1/volume.rb +26 -0
  38. data/lib/fog/openstack/models/volume_v1/volume_type.rb +16 -0
  39. data/lib/fog/openstack/models/volume_v1/volume_types.rb +16 -0
  40. data/lib/fog/openstack/models/volume_v1/volumes.rb +16 -0
  41. data/lib/fog/openstack/models/volume_v2/availability_zone.rb +15 -0
  42. data/lib/fog/openstack/models/volume_v2/availability_zones.rb +16 -0
  43. data/lib/fog/openstack/models/volume_v2/transfer.rb +19 -0
  44. data/lib/fog/openstack/models/volume_v2/transfers.rb +16 -0
  45. data/lib/fog/openstack/models/volume_v2/volume.rb +27 -0
  46. data/lib/fog/openstack/models/volume_v2/volume_type.rb +16 -0
  47. data/lib/fog/openstack/models/volume_v2/volume_types.rb +16 -0
  48. data/lib/fog/openstack/models/volume_v2/volumes.rb +16 -0
  49. data/lib/fog/openstack/network.rb +2 -1
  50. data/lib/fog/openstack/orchestration.rb +2 -1
  51. data/lib/fog/openstack/planning.rb +2 -1
  52. data/lib/fog/openstack/requests/compute/evacuate_server.rb +26 -0
  53. data/lib/fog/openstack/requests/volume/accept_transfer.rb +8 -10
  54. data/lib/fog/openstack/requests/volume/create_transfer.rb +8 -10
  55. data/lib/fog/openstack/requests/volume/create_volume.rb +9 -40
  56. data/lib/fog/openstack/requests/volume/create_volume_snapshot.rb +13 -31
  57. data/lib/fog/openstack/requests/volume/create_volume_type.rb +2 -2
  58. data/lib/fog/openstack/requests/volume/delete_snapshot.rb +2 -2
  59. data/lib/fog/openstack/requests/volume/delete_transfer.rb +1 -3
  60. data/lib/fog/openstack/requests/volume/delete_volume.rb +2 -2
  61. data/lib/fog/openstack/requests/volume/delete_volume_type.rb +2 -2
  62. data/lib/fog/openstack/requests/volume/extend_volume.rb +2 -2
  63. data/lib/fog/openstack/requests/volume/get_quota.rb +2 -2
  64. data/lib/fog/openstack/requests/volume/get_quota_defaults.rb +7 -7
  65. data/lib/fog/openstack/requests/volume/get_quota_usage.rb +2 -2
  66. data/lib/fog/openstack/requests/volume/get_snapshot_details.rb +1 -20
  67. data/lib/fog/openstack/requests/volume/get_transfer_details.rb +1 -1
  68. data/lib/fog/openstack/requests/volume/get_volume_details.rb +1 -22
  69. data/lib/fog/openstack/requests/volume/get_volume_type_details.rb +2 -2
  70. data/lib/fog/openstack/requests/volume/list_snapshots.rb +2 -2
  71. data/lib/fog/openstack/requests/volume/list_snapshots_detailed.rb +2 -2
  72. data/lib/fog/openstack/requests/volume/list_transfers.rb +1 -1
  73. data/lib/fog/openstack/requests/volume/list_transfers_detailed.rb +1 -1
  74. data/lib/fog/openstack/requests/volume/list_volume_types.rb +2 -2
  75. data/lib/fog/openstack/requests/volume/list_volumes.rb +1 -34
  76. data/lib/fog/openstack/requests/volume/list_volumes_detailed.rb +1 -34
  77. data/lib/fog/openstack/requests/volume/list_zones.rb +2 -2
  78. data/lib/fog/openstack/requests/volume/set_tenant.rb +2 -2
  79. data/lib/fog/openstack/requests/volume/update_quota.rb +2 -2
  80. data/lib/fog/openstack/requests/volume/update_volume_type.rb +2 -2
  81. data/lib/fog/openstack/requests/volume_v1/accept_transfer.rb +2 -0
  82. data/lib/fog/openstack/requests/volume_v1/create_transfer.rb +2 -0
  83. data/lib/fog/openstack/requests/volume_v1/create_volume.rb +49 -0
  84. data/lib/fog/openstack/requests/volume_v1/create_volume_snapshot.rb +44 -0
  85. data/lib/fog/openstack/requests/volume_v1/create_volume_type.rb +2 -0
  86. data/lib/fog/openstack/requests/volume_v1/delete_snapshot.rb +2 -0
  87. data/lib/fog/openstack/requests/volume_v1/delete_transfer.rb +2 -0
  88. data/lib/fog/openstack/requests/volume_v1/delete_volume.rb +2 -0
  89. data/lib/fog/openstack/requests/volume_v1/delete_volume_type.rb +2 -0
  90. data/lib/fog/openstack/requests/volume_v1/extend_volume.rb +2 -0
  91. data/lib/fog/openstack/requests/volume_v1/get_quota.rb +2 -0
  92. data/lib/fog/openstack/requests/volume_v1/get_quota_defaults.rb +2 -0
  93. data/lib/fog/openstack/requests/volume_v1/get_quota_usage.rb +2 -0
  94. data/lib/fog/openstack/requests/volume_v1/get_snapshot_details.rb +32 -0
  95. data/lib/fog/openstack/requests/volume_v1/get_transfer_details.rb +2 -0
  96. data/lib/fog/openstack/requests/volume_v1/get_volume_details.rb +35 -0
  97. data/lib/fog/openstack/requests/volume_v1/get_volume_type_details.rb +2 -0
  98. data/lib/fog/openstack/requests/volume_v1/list_snapshots.rb +2 -0
  99. data/lib/fog/openstack/requests/volume_v1/list_snapshots_detailed.rb +2 -0
  100. data/lib/fog/openstack/requests/volume_v1/list_transfers.rb +2 -0
  101. data/lib/fog/openstack/requests/volume_v1/list_transfers_detailed.rb +2 -0
  102. data/lib/fog/openstack/requests/volume_v1/list_volume_types.rb +2 -0
  103. data/lib/fog/openstack/requests/volume_v1/list_volumes.rb +46 -0
  104. data/lib/fog/openstack/requests/volume_v1/list_volumes_detailed.rb +46 -0
  105. data/lib/fog/openstack/requests/volume_v1/list_zones.rb +2 -0
  106. data/lib/fog/openstack/requests/volume_v1/real.rb +11 -0
  107. data/lib/fog/openstack/requests/volume_v1/real_mock.rb +14 -0
  108. data/lib/fog/openstack/requests/volume_v1/set_tenant.rb +2 -0
  109. data/lib/fog/openstack/requests/volume_v1/update_quota.rb +2 -0
  110. data/lib/fog/openstack/requests/volume_v2/accept_transfer.rb +2 -0
  111. data/lib/fog/openstack/requests/volume_v2/create_transfer.rb +2 -0
  112. data/lib/fog/openstack/requests/volume_v2/create_volume.rb +49 -0
  113. data/lib/fog/openstack/requests/volume_v2/create_volume_snapshot.rb +43 -0
  114. data/lib/fog/openstack/requests/volume_v2/create_volume_type.rb +2 -0
  115. data/lib/fog/openstack/requests/volume_v2/delete_snapshot.rb +2 -0
  116. data/lib/fog/openstack/requests/volume_v2/delete_transfer.rb +2 -0
  117. data/lib/fog/openstack/requests/volume_v2/delete_volume.rb +2 -0
  118. data/lib/fog/openstack/requests/volume_v2/delete_volume_type.rb +2 -0
  119. data/lib/fog/openstack/requests/volume_v2/extend_volume.rb +2 -0
  120. data/lib/fog/openstack/requests/volume_v2/get_quota.rb +2 -0
  121. data/lib/fog/openstack/requests/volume_v2/get_quota_defaults.rb +2 -0
  122. data/lib/fog/openstack/requests/volume_v2/get_quota_usage.rb +2 -0
  123. data/lib/fog/openstack/requests/volume_v2/get_snapshot_details.rb +32 -0
  124. data/lib/fog/openstack/requests/volume_v2/get_transfer_details.rb +2 -0
  125. data/lib/fog/openstack/requests/volume_v2/get_volume_details.rb +35 -0
  126. data/lib/fog/openstack/requests/volume_v2/get_volume_type_details.rb +2 -0
  127. data/lib/fog/openstack/requests/volume_v2/list_snapshots.rb +2 -0
  128. data/lib/fog/openstack/requests/volume_v2/list_snapshots_detailed.rb +2 -0
  129. data/lib/fog/openstack/requests/volume_v2/list_transfers.rb +2 -0
  130. data/lib/fog/openstack/requests/volume_v2/list_transfers_detailed.rb +2 -0
  131. data/lib/fog/openstack/requests/volume_v2/list_volume_types.rb +2 -0
  132. data/lib/fog/openstack/requests/volume_v2/list_volumes.rb +46 -0
  133. data/lib/fog/openstack/requests/volume_v2/list_volumes_detailed.rb +46 -0
  134. data/lib/fog/openstack/requests/volume_v2/list_zones.rb +2 -0
  135. data/lib/fog/openstack/requests/volume_v2/real.rb +11 -0
  136. data/lib/fog/openstack/requests/volume_v2/real_mock.rb +14 -0
  137. data/lib/fog/openstack/requests/volume_v2/set_tenant.rb +2 -0
  138. data/lib/fog/openstack/requests/volume_v2/update_quota.rb +2 -0
  139. data/lib/fog/openstack/requests/volume_v2/update_volume_type.rb +2 -0
  140. data/lib/fog/openstack/storage.rb +2 -1
  141. data/lib/fog/openstack/volume.rb +21 -176
  142. data/lib/fog/openstack/volume_v1.rb +163 -0
  143. data/lib/fog/openstack/volume_v2.rb +164 -0
  144. data/lib/fog/rackspace/compute_v2.rb +1 -0
  145. data/lib/fog/rackspace/docs/compute_v2.md +1 -1
  146. data/lib/fog/rackspace/models/compute_v2/server.rb +14 -0
  147. data/lib/fog/rackspace/requests/compute_v2/get_vnc_console.rb +45 -0
  148. data/lib/fog/rackspace/requests/storage/put_container.rb +10 -6
  149. data/lib/fog/vcloud_director/compute.rb +18 -2
  150. data/lib/fog/vcloud_director/models/compute/disks.rb +6 -0
  151. data/lib/fog/vcloud_director/models/compute/networks.rb +7 -2
  152. data/lib/fog/vcloud_director/models/compute/vdc.rb +5 -0
  153. data/lib/fog/vcloud_director/models/compute/vm.rb +15 -1
  154. data/lib/fog/vcloud_director/parsers/compute/vm.rb +4 -0
  155. data/lib/fog/vcloud_director/parsers/compute/vms.rb +4 -0
  156. data/lib/fog/vcloud_director/requests/compute/delete_vapp.rb +30 -0
  157. data/lib/fog/vcloud_director/requests/compute/get_catalog.rb +24 -3
  158. data/lib/fog/vcloud_director/requests/compute/get_catalog_item.rb +23 -0
  159. data/lib/fog/vcloud_director/requests/compute/get_metadata.rb +11 -0
  160. data/lib/fog/vcloud_director/requests/compute/get_vapp.rb +1 -0
  161. data/lib/fog/vcloud_director/requests/compute/get_vm.rb +46 -0
  162. data/lib/fog/vcloud_director/requests/compute/get_vm_disks.rb +20 -0
  163. data/lib/fog/vcloud_director/requests/compute/get_vm_network.rb +25 -0
  164. data/lib/fog/vcloud_director/requests/compute/get_vms.rb +13 -0
  165. data/lib/fog/vcloud_director/requests/compute/instantiate_vapp_template.rb +70 -0
  166. data/lib/fog/vcloud_director/requests/compute/post_power_on_vapp.rb +35 -0
  167. data/lib/fog/vcloud_director/requests/compute/post_reconfigure_vm.rb +118 -0
  168. data/lib/fog/vcloud_director/requests/compute/post_update_vapp_metadata.rb +34 -0
  169. data/lib/fog/vcloud_director/requests/compute/put_guest_customization_section_vapp.rb +2 -1
  170. data/lib/fog/vcloud_director/requests/compute/put_network_connection_system_section_vapp.rb +31 -0
  171. data/lib/fog/version.rb +1 -1
  172. data/lib/tasks/changelog_task.rb +1 -0
  173. data/spec/fog/openstack/shared_context.rb +11 -2
  174. data/spec/fog/openstack/volume/common_setup.yml +74 -50
  175. data/spec/fog/openstack/volume/volume_crud.yml +286 -236
  176. data/spec/fog/openstack/volume/volume_extend.yml +270 -363
  177. data/spec/fog/openstack/volume/volume_transfer_and_accept.yml +418 -424
  178. data/spec/fog/openstack/volume/volume_transfer_and_delete.yml +292 -321
  179. data/spec/fog/openstack/volume/volume_type_read.yml +30 -36
  180. data/spec/fog/openstack/volume_spec.rb +251 -224
  181. data/spec/fog/openstack/volume_v1/common_setup.yml +100 -0
  182. data/spec/fog/openstack/volume_v1/volume_crud.yml +535 -0
  183. data/spec/fog/openstack/volume_v1/volume_extend.yml +596 -0
  184. data/spec/fog/openstack/volume_v1/volume_transfer_and_accept.yml +1010 -0
  185. data/spec/fog/openstack/volume_v1/volume_transfer_and_delete.yml +645 -0
  186. data/spec/fog/openstack/volume_v1/volume_type_read.yml +114 -0
  187. data/spec/fog/openstack/volume_v2/common_setup.yml +100 -0
  188. data/spec/fog/openstack/volume_v2/volume_crud.yml +611 -0
  189. data/spec/fog/openstack/volume_v2/volume_extend.yml +669 -0
  190. data/spec/fog/openstack/volume_v2/volume_transfer_and_accept.yml +1072 -0
  191. data/spec/fog/openstack/volume_v2/volume_transfer_and_delete.yml +666 -0
  192. data/spec/fog/openstack/volume_v2/volume_type_read.yml +114 -0
  193. data/tests/helpers/mock_helper.rb +0 -4
  194. data/tests/openstack/authenticate_tests.rb +4 -0
  195. data/tests/openstack/volume_tests.rb +4 -0
  196. data/tests/rackspace/requests/compute_v2/server_tests.rb +4 -0
  197. metadata +135 -152
  198. data/lib/fog/bin/vsphere.rb +0 -28
  199. data/lib/fog/vsphere.rb +0 -1
  200. data/lib/fog/vsphere/compute.rb +0 -474
  201. data/lib/fog/vsphere/core.rb +0 -39
  202. data/lib/fog/vsphere/models/compute/cluster.rb +0 -28
  203. data/lib/fog/vsphere/models/compute/clusters.rb +0 -23
  204. data/lib/fog/vsphere/models/compute/customfield.rb +0 -16
  205. data/lib/fog/vsphere/models/compute/customfields.rb +0 -24
  206. data/lib/fog/vsphere/models/compute/customvalue.rb +0 -14
  207. data/lib/fog/vsphere/models/compute/customvalues.rb +0 -34
  208. data/lib/fog/vsphere/models/compute/datacenter.rb +0 -44
  209. data/lib/fog/vsphere/models/compute/datacenters.rb +0 -20
  210. data/lib/fog/vsphere/models/compute/datastore.rb +0 -21
  211. data/lib/fog/vsphere/models/compute/datastores.rb +0 -22
  212. data/lib/fog/vsphere/models/compute/folder.rb +0 -24
  213. data/lib/fog/vsphere/models/compute/folders.rb +0 -24
  214. data/lib/fog/vsphere/models/compute/interface.rb +0 -91
  215. data/lib/fog/vsphere/models/compute/interfaces.rb +0 -67
  216. data/lib/fog/vsphere/models/compute/interfacetype.rb +0 -22
  217. data/lib/fog/vsphere/models/compute/interfacetypes.rb +0 -35
  218. data/lib/fog/vsphere/models/compute/network.rb +0 -18
  219. data/lib/fog/vsphere/models/compute/networks.rb +0 -23
  220. data/lib/fog/vsphere/models/compute/process.rb +0 -18
  221. data/lib/fog/vsphere/models/compute/resource_pool.rb +0 -19
  222. data/lib/fog/vsphere/models/compute/resource_pools.rb +0 -23
  223. data/lib/fog/vsphere/models/compute/scsicontroller.rb +0 -16
  224. data/lib/fog/vsphere/models/compute/server.rb +0 -325
  225. data/lib/fog/vsphere/models/compute/servers.rb +0 -37
  226. data/lib/fog/vsphere/models/compute/servertype.rb +0 -36
  227. data/lib/fog/vsphere/models/compute/servertypes.rb +0 -24
  228. data/lib/fog/vsphere/models/compute/snapshot.rb +0 -35
  229. data/lib/fog/vsphere/models/compute/snapshots.rb +0 -27
  230. data/lib/fog/vsphere/models/compute/template.rb +0 -11
  231. data/lib/fog/vsphere/models/compute/templates.rb +0 -20
  232. data/lib/fog/vsphere/models/compute/volume.rb +0 -99
  233. data/lib/fog/vsphere/models/compute/volumes.rb +0 -54
  234. data/lib/fog/vsphere/requests/compute/cloudinit_to_customspec.rb +0 -65
  235. data/lib/fog/vsphere/requests/compute/create_folder.rb +0 -22
  236. data/lib/fog/vsphere/requests/compute/create_vm.rb +0 -227
  237. data/lib/fog/vsphere/requests/compute/current_time.rb +0 -18
  238. data/lib/fog/vsphere/requests/compute/get_cluster.rb +0 -25
  239. data/lib/fog/vsphere/requests/compute/get_compute_resource.rb +0 -41
  240. data/lib/fog/vsphere/requests/compute/get_datacenter.rb +0 -31
  241. data/lib/fog/vsphere/requests/compute/get_datastore.rb +0 -30
  242. data/lib/fog/vsphere/requests/compute/get_folder.rb +0 -74
  243. data/lib/fog/vsphere/requests/compute/get_interface_type.rb +0 -15
  244. data/lib/fog/vsphere/requests/compute/get_network.rb +0 -59
  245. data/lib/fog/vsphere/requests/compute/get_resource_pool.rb +0 -26
  246. data/lib/fog/vsphere/requests/compute/get_server_type.rb +0 -32
  247. data/lib/fog/vsphere/requests/compute/get_template.rb +0 -16
  248. data/lib/fog/vsphere/requests/compute/get_virtual_machine.rb +0 -57
  249. data/lib/fog/vsphere/requests/compute/get_vm_first_scsi_controller.rb +0 -26
  250. data/lib/fog/vsphere/requests/compute/list_child_snapshots.rb +0 -71
  251. data/lib/fog/vsphere/requests/compute/list_clusters.rb +0 -72
  252. data/lib/fog/vsphere/requests/compute/list_compute_resources.rb +0 -92
  253. data/lib/fog/vsphere/requests/compute/list_customfields.rb +0 -21
  254. data/lib/fog/vsphere/requests/compute/list_datacenters.rb +0 -53
  255. data/lib/fog/vsphere/requests/compute/list_datastores.rb +0 -40
  256. data/lib/fog/vsphere/requests/compute/list_folders.rb +0 -44
  257. data/lib/fog/vsphere/requests/compute/list_interface_types.rb +0 -25
  258. data/lib/fog/vsphere/requests/compute/list_networks.rb +0 -38
  259. data/lib/fog/vsphere/requests/compute/list_processes.rb +0 -41
  260. data/lib/fog/vsphere/requests/compute/list_resource_pools.rb +0 -38
  261. data/lib/fog/vsphere/requests/compute/list_server_types.rb +0 -54
  262. data/lib/fog/vsphere/requests/compute/list_templates.rb +0 -48
  263. data/lib/fog/vsphere/requests/compute/list_virtual_machines.rb +0 -80
  264. data/lib/fog/vsphere/requests/compute/list_vm_customvalues.rb +0 -20
  265. data/lib/fog/vsphere/requests/compute/list_vm_interfaces.rb +0 -63
  266. data/lib/fog/vsphere/requests/compute/list_vm_snapshots.rb +0 -66
  267. data/lib/fog/vsphere/requests/compute/list_vm_volumes.rb +0 -52
  268. data/lib/fog/vsphere/requests/compute/modify_vm_interface.rb +0 -59
  269. data/lib/fog/vsphere/requests/compute/modify_vm_volume.rb +0 -25
  270. data/lib/fog/vsphere/requests/compute/revert_to_snapshot.rb +0 -30
  271. data/lib/fog/vsphere/requests/compute/set_vm_customvalue.rb +0 -17
  272. data/lib/fog/vsphere/requests/compute/vm_clone.rb +0 -727
  273. data/lib/fog/vsphere/requests/compute/vm_config_vnc.rb +0 -45
  274. data/lib/fog/vsphere/requests/compute/vm_destroy.rb +0 -23
  275. data/lib/fog/vsphere/requests/compute/vm_execute.rb +0 -47
  276. data/lib/fog/vsphere/requests/compute/vm_migrate.rb +0 -33
  277. data/lib/fog/vsphere/requests/compute/vm_power_off.rb +0 -39
  278. data/lib/fog/vsphere/requests/compute/vm_power_on.rb +0 -26
  279. data/lib/fog/vsphere/requests/compute/vm_reboot.rb +0 -31
  280. data/lib/fog/vsphere/requests/compute/vm_reconfig_cpus.rb +0 -23
  281. data/lib/fog/vsphere/requests/compute/vm_reconfig_hardware.rb +0 -24
  282. data/lib/fog/vsphere/requests/compute/vm_reconfig_memory.rb +0 -23
  283. data/lib/fog/vsphere/requests/compute/vm_take_snapshot.rb +0 -37
  284. data/tests/vsphere/compute_tests.rb +0 -53
  285. data/tests/vsphere/models/compute/server_tests.rb +0 -70
  286. data/tests/vsphere/models/compute/servers_tests.rb +0 -15
  287. data/tests/vsphere/requests/compute/current_time_tests.rb +0 -12
  288. data/tests/vsphere/requests/compute/get_network_tests.rb +0 -48
  289. data/tests/vsphere/requests/compute/list_child_snapshots_tests.rb +0 -10
  290. data/tests/vsphere/requests/compute/list_clusters_tests.rb +0 -11
  291. data/tests/vsphere/requests/compute/list_virtual_machines_tests.rb +0 -38
  292. data/tests/vsphere/requests/compute/list_vm_snapshots_tests.rb +0 -10
  293. data/tests/vsphere/requests/compute/revert_to_snapshot_tests.rb +0 -15
  294. data/tests/vsphere/requests/compute/set_vm_customvalue_tests.rb +0 -20
  295. data/tests/vsphere/requests/compute/vm_clone_tests.rb +0 -50
  296. data/tests/vsphere/requests/compute/vm_config_vnc_tests.rb +0 -19
  297. data/tests/vsphere/requests/compute/vm_destroy_tests.rb +0 -17
  298. data/tests/vsphere/requests/compute/vm_migrate_tests.rb +0 -16
  299. data/tests/vsphere/requests/compute/vm_power_off_tests.rb +0 -26
  300. data/tests/vsphere/requests/compute/vm_power_on_tests.rb +0 -17
  301. data/tests/vsphere/requests/compute/vm_reboot_tests.rb +0 -26
  302. data/tests/vsphere/requests/compute/vm_reconfig_cpus_tests.rb +0 -19
  303. data/tests/vsphere/requests/compute/vm_reconfig_hardware_tests.rb +0 -19
  304. data/tests/vsphere/requests/compute/vm_reconfig_memory_tests.rb +0 -19
  305. data/tests/vsphere/requests/compute/vm_take_snapshot_tests.rb +0 -19
@@ -1,28 +0,0 @@
1
- class Vsphere < Fog::Bin
2
- class << self
3
- def class_for(key)
4
- case key
5
- when :compute
6
- Fog::Compute::Vsphere
7
- else
8
- raise ArgumentError, "Unrecognized service: #{key}"
9
- end
10
- end
11
-
12
- def [](service)
13
- @@connections ||= Hash.new do |hash, key|
14
- hash[key] = case key
15
- when :compute
16
- Fog::Compute.new(:provider => 'Vsphere')
17
- else
18
- raise ArgumentError, "Unrecognized service: #{key.inspect}"
19
- end
20
- end
21
- @@connections[service]
22
- end
23
-
24
- def services
25
- Fog::Vsphere.services
26
- end
27
- end
28
- end
data/lib/fog/vsphere.rb DELETED
@@ -1 +0,0 @@
1
- require 'fog/vsphere/compute'
@@ -1,474 +0,0 @@
1
- require 'fog/vsphere/core'
2
- require 'digest/sha2'
3
-
4
- module Fog
5
- module Compute
6
- class Vsphere < Fog::Service
7
- requires :vsphere_username, :vsphere_password, :vsphere_server
8
- recognizes :vsphere_port, :vsphere_path, :vsphere_ns
9
- recognizes :vsphere_rev, :vsphere_ssl, :vsphere_expected_pubkey_hash
10
- recognizes :vsphere_debug
11
-
12
- model_path 'fog/vsphere/models/compute'
13
- model :server
14
- collection :servers
15
- model :servertype
16
- collection :servertypes
17
- model :datacenter
18
- collection :datacenters
19
- model :interface
20
- collection :interfaces
21
- model :interfacetype
22
- collection :interfacetypes
23
- model :volume
24
- collection :volumes
25
- model :snapshot
26
- collection :snapshots
27
- model :template
28
- collection :templates
29
- model :cluster
30
- collection :clusters
31
- model :resource_pool
32
- collection :resource_pools
33
- model :network
34
- collection :networks
35
- model :datastore
36
- collection :datastores
37
- model :folder
38
- collection :folders
39
- model :customvalue
40
- collection :customvalues
41
- model :customfield
42
- collection :customfields
43
- model :scsicontroller
44
- model :process
45
-
46
- request_path 'fog/vsphere/requests/compute'
47
- request :current_time
48
- request :cloudinit_to_customspec
49
- request :list_virtual_machines
50
- request :vm_power_off
51
- request :vm_power_on
52
- request :vm_reboot
53
- request :vm_clone
54
- request :vm_destroy
55
- request :vm_migrate
56
- request :vm_execute
57
- request :list_datacenters
58
- request :get_datacenter
59
- request :list_clusters
60
- request :get_cluster
61
- request :list_resource_pools
62
- request :get_resource_pool
63
- request :list_networks
64
- request :get_network
65
- request :list_datastores
66
- request :get_datastore
67
- request :list_compute_resources
68
- request :get_compute_resource
69
- request :list_templates
70
- request :get_template
71
- request :get_folder
72
- request :list_folders
73
- request :create_vm
74
- request :list_vm_interfaces
75
- request :modify_vm_interface
76
- request :modify_vm_volume
77
- request :list_vm_volumes
78
- request :get_virtual_machine
79
- request :vm_reconfig_hardware
80
- request :vm_reconfig_memory
81
- request :vm_reconfig_cpus
82
- request :vm_config_vnc
83
- request :create_folder
84
- request :list_server_types
85
- request :get_server_type
86
- request :list_interface_types
87
- request :get_interface_type
88
- request :list_vm_customvalues
89
- request :list_customfields
90
- request :get_vm_first_scsi_controller
91
- request :set_vm_customvalue
92
- request :vm_take_snapshot
93
- request :list_vm_snapshots
94
- request :list_child_snapshots
95
- request :revert_to_snapshot
96
- request :list_processes
97
-
98
- module Shared
99
- attr_reader :vsphere_is_vcenter
100
- attr_reader :vsphere_rev
101
- attr_reader :vsphere_server
102
- attr_reader :vsphere_username
103
-
104
- protected
105
-
106
- ATTR_TO_PROP = {
107
- :id => 'config.instanceUuid',
108
- :name => 'name',
109
- :uuid => 'config.uuid',
110
- :template => 'config.template',
111
- :parent => 'parent',
112
- :hostname => 'summary.guest.hostName',
113
- :operatingsystem => 'summary.guest.guestFullName',
114
- :ipaddress => 'guest.ipAddress',
115
- :power_state => 'runtime.powerState',
116
- :connection_state => 'runtime.connectionState',
117
- :hypervisor => 'runtime.host',
118
- :tools_state => 'guest.toolsStatus',
119
- :tools_version => 'guest.toolsVersionStatus',
120
- :memory_mb => 'config.hardware.memoryMB',
121
- :cpus => 'config.hardware.numCPU',
122
- :corespersocket => 'config.hardware.numCoresPerSocket',
123
- :overall_status => 'overallStatus',
124
- :guest_id => 'config.guestId',
125
- :hardware_version => 'config.version',
126
- :cpuHotAddEnabled => 'config.cpuHotAddEnabled',
127
- :memoryHotAddEnabled => 'config.memoryHotAddEnabled',
128
- :firmware => 'config.firmware',
129
- }
130
-
131
- def convert_vm_view_to_attr_hash(vms)
132
- vms = @connection.serviceContent.propertyCollector.collectMultiple(vms,*ATTR_TO_PROP.values.uniq)
133
- vms.map { |vm| props_to_attr_hash(*vm) }
134
- end
135
-
136
- # Utility method to convert a VMware managed object into an attribute hash.
137
- # This should only really be necessary for the real class.
138
- # This method is expected to be called by the request methods
139
- # in order to massage VMware Managed Object References into Attribute Hashes.
140
- def convert_vm_mob_ref_to_attr_hash(vm_mob_ref)
141
- return nil unless vm_mob_ref
142
-
143
- props = vm_mob_ref.collect!(*ATTR_TO_PROP.values.uniq)
144
- props_to_attr_hash vm_mob_ref, props
145
- end
146
-
147
- def props_to_attr_hash vm_mob_ref, props
148
- # NOTE: Object.tap is in 1.8.7 and later.
149
- # Here we create the hash object that this method returns, but first we need
150
- # to add a few more attributes that require additional calls to the vSphere
151
- # API. The hypervisor name and mac_addresses attributes may not be available
152
- # so we need catch any exceptions thrown during lookup and set them to nil.
153
- #
154
- # The use of the "tap" method here is a convenience, it allows us to update the
155
- # hash object without explicitly returning the hash at the end of the method.
156
- Hash[ATTR_TO_PROP.map { |k,v| [k.to_s, props[v]] }].tap do |attrs|
157
- attrs['id'] ||= vm_mob_ref._ref
158
- attrs['mo_ref'] = vm_mob_ref._ref
159
- # The name method "magically" appears after a VM is ready and
160
- # finished cloning.
161
- if attrs['hypervisor'].kind_of?(RbVmomi::VIM::HostSystem)
162
- host = attrs['hypervisor']
163
- attrs['datacenter'] = Proc.new { parent_attribute(host.path, :datacenter)[1] rescue nil }
164
- attrs['cluster'] = Proc.new { parent_attribute(host.path, :cluster)[1] rescue nil }
165
- attrs['hypervisor'] = Proc.new { host.name rescue nil }
166
- attrs['resource_pool'] = Proc.new {(vm_mob_ref.resourcePool || host.resourcePool).name rescue nil}
167
- end
168
- # This inline rescue catches any standard error. While a VM is
169
- # cloning, a call to the macs method will throw and NoMethodError
170
- attrs['mac_addresses'] = Proc.new {vm_mob_ref.macs rescue nil}
171
- # Rescue nil to catch testing while vm_mob_ref isn't reaL??
172
- attrs['path'] = "/"+attrs['parent'].path.map(&:last).join('/') rescue nil
173
- end
174
- end
175
- # returns the parent object based on a type
176
- # provides both real RbVmomi object and its name.
177
- # e.g.
178
- #[Datacenter("datacenter-2"), "dc-name"]
179
- def parent_attribute path, type
180
- element = case type
181
- when :datacenter
182
- RbVmomi::VIM::Datacenter
183
- when :cluster
184
- RbVmomi::VIM::ClusterComputeResource
185
- when :host
186
- RbVmomi::VIM::HostSystem
187
- else
188
- raise "Unknown type"
189
- end
190
- path.select {|x| x[0].is_a? element}.flatten
191
- rescue
192
- nil
193
- end
194
-
195
- # returns vmware managed obj id string
196
- def managed_obj_id obj
197
- obj.to_s.match(/\("([^"]+)"\)/)[1]
198
- end
199
-
200
- def is_uuid?(id)
201
- !(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?
202
- end
203
- end
204
-
205
- class Mock
206
- include Shared
207
-
208
- def self.data
209
- @data ||= Hash.new do |hash, key|
210
- hash[key] = {
211
- :servers => {
212
- "5032c8a5-9c5e-ba7a-3804-832a03e16381" => {
213
- "resource_pool" => "Resources",
214
- "memory_mb" => 2196,
215
- "mac_addresses" => { "Network adapter 1" => "00:50:56:a9:00:28" },
216
- "power_state" => "poweredOn",
217
- "cpus" => 1,
218
- "hostname" => "dhcp75-197.virt.bos.redhat.com",
219
- "mo_ref" => "vm-562",
220
- "connection_state" => "connected",
221
- "overall_status" => "green",
222
- "datacenter" => "Solutions",
223
- "volumes" =>
224
- [{
225
- "id" => "6000C29c-a47d-4cd9-5249-c371de775f06",
226
- "datastore" => "Storage1",
227
- "mode" => "persistent",
228
- "size" => 8388608,
229
- "thin" => true,
230
- "name" => "Hard disk 1",
231
- "filename" => "[Storage1] rhel6-mfojtik/rhel6-mfojtik.vmdk",
232
- "size_gb" => 8
233
- }],
234
- "interfaces" =>
235
- [{"mac" => "00:50:56:a9:00:28",
236
- "network" => "VM Network",
237
- "name" => "Network adapter 1",
238
- "status" => "ok",
239
- "summary" => "VM Network",
240
- }],
241
- "hypervisor" => "gunab.puppetlabs.lan",
242
- "guest_id" => "rhel6_64Guest",
243
- "tools_state" => "toolsOk",
244
- "cluster" => "Solutionscluster",
245
- "name" => "rhel64",
246
- "operatingsystem" => "Red Hat Enterprise Linux 6 (64-bit)",
247
- "path" => "/Datacenters/Solutions/vm",
248
- "uuid" => "4229f0e9-bfdc-d9a7-7bac-12070772e6dc",
249
- "instance_uuid" => "5032c8a5-9c5e-ba7a-3804-832a03e16381",
250
- "id" => "5032c8a5-9c5e-ba7a-3804-832a03e16381",
251
- "tools_version" => "guestToolsUnmanaged",
252
- "ipaddress" => "192.168.100.184",
253
- "template" => false
254
- },
255
- "502916a3-b42e-17c7-43ce-b3206e9524dc" => {
256
- "resource_pool" => "Resources",
257
- "memory_mb" => 512,
258
- "power_state" => "poweredOn",
259
- "mac_addresses" => { "Network adapter 1" => "00:50:56:a9:00:00" },
260
- "hostname" => nil,
261
- "cpus" => 1,
262
- "connection_state" => "connected",
263
- "mo_ref" => "vm-621",
264
- "overall_status" => "green",
265
- "datacenter" => "Solutions",
266
- "volumes" =>
267
- [{"thin" => false,
268
- "size_gb" => 10,
269
- "datastore" => "datastore1",
270
- "filename" => "[datastore1] i-1342439683/i-1342439683.vmdk",
271
- "size" => 10485762,
272
- "name" => "Hard disk 1",
273
- "mode" => "persistent",
274
- "id" => "6000C29b-f364-d073-8316-8e98ac0a0eae" }],
275
- "interfaces" =>
276
- [{ "summary" => "VM Network",
277
- "mac" => "00:50:56:a9:00:00",
278
- "status" => "ok",
279
- "network" => "VM Network",
280
- "name" => "Network adapter 1" }],
281
- "hypervisor" => "gunab.puppetlabs.lan",
282
- "guest_id" => nil,
283
- "cluster" => "Solutionscluster",
284
- "tools_state" => "toolsNotInstalled",
285
- "name" => "i-1342439683",
286
- "operatingsystem" => nil,
287
- "path" => "/",
288
- "tools_version" => "guestToolsNotInstalled",
289
- "uuid" => "4229e0de-30cb-ceb2-21f9-4d8d8beabb52",
290
- "instance_uuid" => "502916a3-b42e-17c7-43ce-b3206e9524dc",
291
- "id" => "502916a3-b42e-17c7-43ce-b3206e9524dc",
292
- "ipaddress" => nil,
293
- "template" => false
294
- },
295
- "5029c440-85ee-c2a1-e9dd-b63e39364603" => {
296
- "resource_pool" => "Resources",
297
- "memory_mb" => 2196,
298
- "power_state" => "poweredOn",
299
- "mac_addresses" => { "Network adapter 1" => "00:50:56:b2:00:af" },
300
- "hostname" => "centos56gm.localdomain",
301
- "cpus" => 1,
302
- "connection_state" => "connected",
303
- "mo_ref" => "vm-715",
304
- "overall_status" => "green",
305
- "datacenter" => "Solutions",
306
- "hypervisor" => "gunab.puppetlabs.lan",
307
- "guest_id" => "rhel6_64Guest",
308
- "cluster" => "Solutionscluster",
309
- "tools_state" => "toolsOk",
310
- "name" => "jefftest",
311
- "operatingsystem" => "Red Hat Enterprise Linux 6 (64-bit)",
312
- "path" => "/",
313
- "tools_version" => "guestToolsUnmanaged",
314
- "ipaddress" => "192.168.100.187",
315
- "uuid" => "42329da7-e8ab-29ec-1892-d6a4a964912a",
316
- "instance_uuid" => "5029c440-85ee-c2a1-e9dd-b63e39364603",
317
- "id" => "5029c440-85ee-c2a1-e9dd-b63e39364603",
318
- "template" => false
319
- }
320
- },
321
- :datacenters => {
322
- "Solutions" => {:name => "Solutions", :status => "grey"}
323
- },
324
- :clusters =>
325
- [{:id => "1d4d9a3f-e4e8-4c40-b7fc-263850068fa4",
326
- :name => "Solutionscluster",
327
- :num_host => "4",
328
- :num_cpu_cores => "16",
329
- :overall_status => "green",
330
- :datacenter => "Solutions",
331
- :klass => "RbVmomi::VIM::ComputeResource"
332
- },
333
- {:id => "e4195973-102b-4096-bbd6-5429ff0b35c9",
334
- :name => "Problemscluster",
335
- :num_host => "4",
336
- :num_cpu_cores => "32",
337
- :overall_status => "green",
338
- :datacenter => "Solutions",
339
- :klass => "RbVmomi::VIM::ComputeResource"
340
- },
341
- {
342
- :klass => "RbVmomi::VIM::Folder",
343
- :clusters => [{:id => "03616b8d-b707-41fd-b3b5-The first",
344
- :name => "Problemscluster",
345
- :num_host => "4",
346
- :num_cpu_cores => "32",
347
- :overall_status => "green",
348
- :datacenter => "Solutions",
349
- :klass => "RbVmomi::VIM::ComputeResource"
350
- },
351
- {:id => "03616b8d-b707-41fd-b3b5-the Second",
352
- :name => "Lastcluster",
353
- :num_host => "8",
354
- :num_cpu_cores => "32",
355
- :overall_status => "green",
356
- :datacenter => "Solutions",
357
- :klass => "RbVmomi::VIM::ComputeResource"}
358
- ]
359
- }
360
- ]
361
- }
362
- end
363
- end
364
-
365
- def initialize(options={})
366
- require 'rbvmomi'
367
- @vsphere_username = options[:vsphere_username]
368
- @vsphere_password = 'REDACTED'
369
- @vsphere_server = options[:vsphere_server]
370
- @vsphere_expected_pubkey_hash = options[:vsphere_expected_pubkey_hash]
371
- @vsphere_is_vcenter = true
372
- @vsphere_rev = '4.0'
373
- end
374
-
375
- def data
376
- self.class.data[@vsphere_username]
377
- end
378
-
379
- def reset_data
380
- self.class.data.delete(@vsphere_username)
381
- end
382
- end
383
-
384
- class Real
385
- include Shared
386
-
387
- def initialize(options={})
388
- require 'rbvmomi'
389
- @vsphere_username = options[:vsphere_username]
390
- @vsphere_password = options[:vsphere_password]
391
- @vsphere_server = options[:vsphere_server]
392
- @vsphere_port = options[:vsphere_port] || 443
393
- @vsphere_path = options[:vsphere_path] || '/sdk'
394
- @vsphere_ns = options[:vsphere_ns] || 'urn:vim25'
395
- @vsphere_rev = options[:vsphere_rev] || '4.0'
396
- @vsphere_ssl = options[:vsphere_ssl] || true
397
- @vsphere_debug = options[:vsphere_debug] || false
398
- @vsphere_expected_pubkey_hash = options[:vsphere_expected_pubkey_hash]
399
- @vsphere_must_reauthenticate = false
400
- @vsphere_is_vcenter = nil
401
- @connection = nil
402
- connect
403
- negotiate_revision(options[:vsphere_rev])
404
- authenticate
405
- end
406
-
407
- def reload
408
- connect
409
- # Check if the negotiation was ever run
410
- if @vsphere_is_vcenter.nil?
411
- negotiate
412
- end
413
- authenticate
414
- end
415
-
416
- private
417
- def negotiate_revision(revision = nil)
418
- # Negotiate the API revision
419
- if not revision
420
- rev = @connection.serviceContent.about.apiVersion
421
- @connection.rev = [ rev, ENV['FOG_VSPHERE_REV'] || '4.1' ].min
422
- end
423
-
424
- @vsphere_is_vcenter = @connection.serviceContent.about.apiType == "VirtualCenter"
425
- @vsphere_rev = @connection.rev
426
- end
427
-
428
- def connect
429
- # This is a state variable to allow digest validation of the SSL cert
430
- bad_cert = false
431
- loop do
432
- begin
433
- @connection = RbVmomi::VIM.new :host => @vsphere_server,
434
- :port => @vsphere_port,
435
- :path => @vsphere_path,
436
- :ns => @vsphere_ns,
437
- :rev => @vsphere_rev,
438
- :ssl => @vsphere_ssl,
439
- :insecure => bad_cert,
440
- :debug => @vsphere_debug
441
- break
442
- rescue OpenSSL::SSL::SSLError
443
- raise if bad_cert
444
- bad_cert = true
445
- end
446
- end
447
-
448
- if bad_cert then
449
- validate_ssl_connection
450
- end
451
- end
452
-
453
- def authenticate
454
- begin
455
- @connection.serviceContent.sessionManager.Login :userName => @vsphere_username,
456
- :password => @vsphere_password
457
- rescue RbVmomi::VIM::InvalidLogin => e
458
- raise Fog::Vsphere::Errors::ServiceError, e.message
459
- end
460
- end
461
-
462
- # Verify a SSL certificate based on the hashed public key
463
- def validate_ssl_connection
464
- pubkey = @connection.http.peer_cert.public_key
465
- pubkey_hash = Digest::SHA2.hexdigest(pubkey.to_s)
466
- expected_pubkey_hash = @vsphere_expected_pubkey_hash
467
- if pubkey_hash != expected_pubkey_hash then
468
- raise Fog::Vsphere::Errors::SecurityError, "The remote system presented a public key with hash #{pubkey_hash} but we're expecting a hash of #{expected_pubkey_hash || '<unset>'}. If you are sure the remote system is authentic set vsphere_expected_pubkey_hash: <the hash printed in this message> in ~/.fog"
469
- end
470
- end
471
- end
472
- end
473
- end
474
- end