fog-vcloud-director 0.1.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 (315) hide show
  1. checksums.yaml +7 -0
  2. data/.editorconfig +11 -0
  3. data/.gitignore +17 -0
  4. data/.hound.yml +2 -0
  5. data/.rubocop.yml +240 -0
  6. data/.ruby-gemset +1 -0
  7. data/.travis.yml +15 -0
  8. data/Gemfile +4 -0
  9. data/LICENSE.md +20 -0
  10. data/README.md +962 -0
  11. data/Rakefile +19 -0
  12. data/fog-vcloud-director.gemspec +31 -0
  13. data/lib/fog/vcloud_director.rb +1 -0
  14. data/lib/fog/vcloud_director/compute.rb +916 -0
  15. data/lib/fog/vcloud_director/core.rb +69 -0
  16. data/lib/fog/vcloud_director/generators/compute/compose_common.rb +122 -0
  17. data/lib/fog/vcloud_director/generators/compute/compose_vapp.rb +25 -0
  18. data/lib/fog/vcloud_director/generators/compute/create_snapshot.rb +25 -0
  19. data/lib/fog/vcloud_director/generators/compute/customization.rb +105 -0
  20. data/lib/fog/vcloud_director/generators/compute/disks.rb +186 -0
  21. data/lib/fog/vcloud_director/generators/compute/edge_gateway_service_configuration.rb +243 -0
  22. data/lib/fog/vcloud_director/generators/compute/instantiate_vapp_template_params.rb +30 -0
  23. data/lib/fog/vcloud_director/generators/compute/metadata.rb +104 -0
  24. data/lib/fog/vcloud_director/generators/compute/org_vdc_network.rb +88 -0
  25. data/lib/fog/vcloud_director/generators/compute/recompose_vapp.rb +34 -0
  26. data/lib/fog/vcloud_director/generators/compute/vapp.rb +28 -0
  27. data/lib/fog/vcloud_director/generators/compute/vm.rb +32 -0
  28. data/lib/fog/vcloud_director/generators/compute/vm_network.rb +119 -0
  29. data/lib/fog/vcloud_director/models/compute/catalog.rb +22 -0
  30. data/lib/fog/vcloud_director/models/compute/catalog_item.rb +30 -0
  31. data/lib/fog/vcloud_director/models/compute/catalog_items.rb +33 -0
  32. data/lib/fog/vcloud_director/models/compute/catalogs.rb +30 -0
  33. data/lib/fog/vcloud_director/models/compute/custom_field.rb +18 -0
  34. data/lib/fog/vcloud_director/models/compute/custom_fields.rb +67 -0
  35. data/lib/fog/vcloud_director/models/compute/disk.rb +53 -0
  36. data/lib/fog/vcloud_director/models/compute/disks.rb +44 -0
  37. data/lib/fog/vcloud_director/models/compute/media.rb +26 -0
  38. data/lib/fog/vcloud_director/models/compute/medias.rb +75 -0
  39. data/lib/fog/vcloud_director/models/compute/network.rb +25 -0
  40. data/lib/fog/vcloud_director/models/compute/networks.rb +62 -0
  41. data/lib/fog/vcloud_director/models/compute/organization.rb +37 -0
  42. data/lib/fog/vcloud_director/models/compute/organizations.rb +28 -0
  43. data/lib/fog/vcloud_director/models/compute/tag.rb +31 -0
  44. data/lib/fog/vcloud_director/models/compute/tags.rb +41 -0
  45. data/lib/fog/vcloud_director/models/compute/task.rb +55 -0
  46. data/lib/fog/vcloud_director/models/compute/tasks.rb +36 -0
  47. data/lib/fog/vcloud_director/models/compute/template_vm.rb +52 -0
  48. data/lib/fog/vcloud_director/models/compute/template_vms.rb +41 -0
  49. data/lib/fog/vcloud_director/models/compute/vapp.rb +144 -0
  50. data/lib/fog/vcloud_director/models/compute/vapp_template.rb +26 -0
  51. data/lib/fog/vcloud_director/models/compute/vapp_templates.rb +40 -0
  52. data/lib/fog/vcloud_director/models/compute/vapps.rb +40 -0
  53. data/lib/fog/vcloud_director/models/compute/vdc.rb +45 -0
  54. data/lib/fog/vcloud_director/models/compute/vdcs.rb +37 -0
  55. data/lib/fog/vcloud_director/models/compute/vm.rb +197 -0
  56. data/lib/fog/vcloud_director/models/compute/vm_customization.rb +40 -0
  57. data/lib/fog/vcloud_director/models/compute/vm_customizations.rb +29 -0
  58. data/lib/fog/vcloud_director/models/compute/vm_network.rb +27 -0
  59. data/lib/fog/vcloud_director/models/compute/vm_networks.rb +19 -0
  60. data/lib/fog/vcloud_director/models/compute/vms.rb +46 -0
  61. data/lib/fog/vcloud_director/parsers/compute/disks.rb +53 -0
  62. data/lib/fog/vcloud_director/parsers/compute/metadata.rb +61 -0
  63. data/lib/fog/vcloud_director/parsers/compute/network.rb +104 -0
  64. data/lib/fog/vcloud_director/parsers/compute/vm.rb +86 -0
  65. data/lib/fog/vcloud_director/parsers/compute/vm_customization.rb +55 -0
  66. data/lib/fog/vcloud_director/parsers/compute/vm_network.rb +107 -0
  67. data/lib/fog/vcloud_director/parsers/compute/vm_parser_helper.rb +62 -0
  68. data/lib/fog/vcloud_director/parsers/compute/vms.rb +68 -0
  69. data/lib/fog/vcloud_director/parsers/compute/vms_by_metadata.rb +37 -0
  70. data/lib/fog/vcloud_director/query.rb +59 -0
  71. data/lib/fog/vcloud_director/requests/compute/delete_catalog_item.rb +22 -0
  72. data/lib/fog/vcloud_director/requests/compute/delete_catalog_item_metadata_item_metadata.rb +25 -0
  73. data/lib/fog/vcloud_director/requests/compute/delete_disk.rb +60 -0
  74. data/lib/fog/vcloud_director/requests/compute/delete_disk_metadata_item_metadata.rb +25 -0
  75. data/lib/fog/vcloud_director/requests/compute/delete_logout.rb +18 -0
  76. data/lib/fog/vcloud_director/requests/compute/delete_media.rb +122 -0
  77. data/lib/fog/vcloud_director/requests/compute/delete_media_metadata_item_metadata.rb +25 -0
  78. data/lib/fog/vcloud_director/requests/compute/delete_network.rb +62 -0
  79. data/lib/fog/vcloud_director/requests/compute/delete_shadow_vm.rb +30 -0
  80. data/lib/fog/vcloud_director/requests/compute/delete_vapp.rb +59 -0
  81. data/lib/fog/vcloud_director/requests/compute/delete_vapp_metadata_item_metadata.rb +30 -0
  82. data/lib/fog/vcloud_director/requests/compute/delete_vapp_template.rb +27 -0
  83. data/lib/fog/vcloud_director/requests/compute/delete_vapp_template_metadata_item_metadata.rb +26 -0
  84. data/lib/fog/vcloud_director/requests/compute/get_allocated_ip_addresses.rb +25 -0
  85. data/lib/fog/vcloud_director/requests/compute/get_catalog.rb +63 -0
  86. data/lib/fog/vcloud_director/requests/compute/get_catalog_item.rb +48 -0
  87. data/lib/fog/vcloud_director/requests/compute/get_catalog_item_metadata.rb +25 -0
  88. data/lib/fog/vcloud_director/requests/compute/get_catalog_item_metadata_item_metadata.rb +26 -0
  89. data/lib/fog/vcloud_director/requests/compute/get_catalog_metadata.rb +25 -0
  90. data/lib/fog/vcloud_director/requests/compute/get_catalog_metadata_item_metadata.rb +26 -0
  91. data/lib/fog/vcloud_director/requests/compute/get_catalogs_from_query.rb +94 -0
  92. data/lib/fog/vcloud_director/requests/compute/get_control_access_params_catalog.rb +26 -0
  93. data/lib/fog/vcloud_director/requests/compute/get_control_access_params_vapp.rb +25 -0
  94. data/lib/fog/vcloud_director/requests/compute/get_cpu_rasd_item.rb +65 -0
  95. data/lib/fog/vcloud_director/requests/compute/get_current_session.rb +83 -0
  96. data/lib/fog/vcloud_director/requests/compute/get_disk.rb +123 -0
  97. data/lib/fog/vcloud_director/requests/compute/get_disk_metadata.rb +25 -0
  98. data/lib/fog/vcloud_director/requests/compute/get_disk_metadata_item_metadata.rb +26 -0
  99. data/lib/fog/vcloud_director/requests/compute/get_disk_owner.rb +70 -0
  100. data/lib/fog/vcloud_director/requests/compute/get_disks_from_query.rb +94 -0
  101. data/lib/fog/vcloud_director/requests/compute/get_disks_rasd_items_list.rb +90 -0
  102. data/lib/fog/vcloud_director/requests/compute/get_edge_gateway.rb +109 -0
  103. data/lib/fog/vcloud_director/requests/compute/get_entity.rb +38 -0
  104. data/lib/fog/vcloud_director/requests/compute/get_execute_query.rb +736 -0
  105. data/lib/fog/vcloud_director/requests/compute/get_groups_from_query.rb +95 -0
  106. data/lib/fog/vcloud_director/requests/compute/get_guest_customization_system_section_vapp.rb +69 -0
  107. data/lib/fog/vcloud_director/requests/compute/get_guest_customization_system_section_vapp_template.rb +25 -0
  108. data/lib/fog/vcloud_director/requests/compute/get_href.rb +21 -0
  109. data/lib/fog/vcloud_director/requests/compute/get_lease_settings_section_vapp.rb +59 -0
  110. data/lib/fog/vcloud_director/requests/compute/get_lease_settings_section_vapp_template.rb +25 -0
  111. data/lib/fog/vcloud_director/requests/compute/get_media.rb +111 -0
  112. data/lib/fog/vcloud_director/requests/compute/get_media_drives_rasd_items_list.rb +92 -0
  113. data/lib/fog/vcloud_director/requests/compute/get_media_metadata.rb +25 -0
  114. data/lib/fog/vcloud_director/requests/compute/get_media_metadata_item_metadata.rb +26 -0
  115. data/lib/fog/vcloud_director/requests/compute/get_media_owner.rb +70 -0
  116. data/lib/fog/vcloud_director/requests/compute/get_medias_from_query.rb +94 -0
  117. data/lib/fog/vcloud_director/requests/compute/get_memory_rasd_item.rb +64 -0
  118. data/lib/fog/vcloud_director/requests/compute/get_metadata.rb +41 -0
  119. data/lib/fog/vcloud_director/requests/compute/get_network.rb +67 -0
  120. data/lib/fog/vcloud_director/requests/compute/get_network_cards_items_list.rb +70 -0
  121. data/lib/fog/vcloud_director/requests/compute/get_network_complete.rb +78 -0
  122. data/lib/fog/vcloud_director/requests/compute/get_network_config_section_vapp.rb +61 -0
  123. data/lib/fog/vcloud_director/requests/compute/get_network_config_section_vapp_template.rb +25 -0
  124. data/lib/fog/vcloud_director/requests/compute/get_network_connection_system_section_vapp.rb +68 -0
  125. data/lib/fog/vcloud_director/requests/compute/get_network_connection_system_section_vapp_template.rb +25 -0
  126. data/lib/fog/vcloud_director/requests/compute/get_network_metadata.rb +25 -0
  127. data/lib/fog/vcloud_director/requests/compute/get_network_metadata_item_metadata.rb +26 -0
  128. data/lib/fog/vcloud_director/requests/compute/get_network_section_vapp.rb +25 -0
  129. data/lib/fog/vcloud_director/requests/compute/get_network_section_vapp_template.rb +25 -0
  130. data/lib/fog/vcloud_director/requests/compute/get_operating_system_section.rb +59 -0
  131. data/lib/fog/vcloud_director/requests/compute/get_org_settings.rb +38 -0
  132. data/lib/fog/vcloud_director/requests/compute/get_org_vdc_gateways.rb +83 -0
  133. data/lib/fog/vcloud_director/requests/compute/get_organization.rb +100 -0
  134. data/lib/fog/vcloud_director/requests/compute/get_organization_metadata.rb +25 -0
  135. data/lib/fog/vcloud_director/requests/compute/get_organization_metadata_item_metadata.rb +28 -0
  136. data/lib/fog/vcloud_director/requests/compute/get_organizations.rb +52 -0
  137. data/lib/fog/vcloud_director/requests/compute/get_organizations_from_query.rb +95 -0
  138. data/lib/fog/vcloud_director/requests/compute/get_product_sections_vapp.rb +25 -0
  139. data/lib/fog/vcloud_director/requests/compute/get_product_sections_vapp_template.rb +26 -0
  140. data/lib/fog/vcloud_director/requests/compute/get_request.rb +19 -0
  141. data/lib/fog/vcloud_director/requests/compute/get_runtime_info_section_type.rb +57 -0
  142. data/lib/fog/vcloud_director/requests/compute/get_serial_ports_items_list.rb +25 -0
  143. data/lib/fog/vcloud_director/requests/compute/get_shadow_vm.rb +24 -0
  144. data/lib/fog/vcloud_director/requests/compute/get_snapshot_section.rb +55 -0
  145. data/lib/fog/vcloud_director/requests/compute/get_startup_section.rb +64 -0
  146. data/lib/fog/vcloud_director/requests/compute/get_supported_systems_info.rb +239 -0
  147. data/lib/fog/vcloud_director/requests/compute/get_supported_versions.rb +1159 -0
  148. data/lib/fog/vcloud_director/requests/compute/get_task.rb +168 -0
  149. data/lib/fog/vcloud_director/requests/compute/get_task_list.rb +130 -0
  150. data/lib/fog/vcloud_director/requests/compute/get_template_vm.rb +74 -0
  151. data/lib/fog/vcloud_director/requests/compute/get_template_vms.rb +41 -0
  152. data/lib/fog/vcloud_director/requests/compute/get_thumbnail.rb +28 -0
  153. data/lib/fog/vcloud_director/requests/compute/get_users_from_query.rb +95 -0
  154. data/lib/fog/vcloud_director/requests/compute/get_vapp.rb +176 -0
  155. data/lib/fog/vcloud_director/requests/compute/get_vapp_metadata.rb +84 -0
  156. data/lib/fog/vcloud_director/requests/compute/get_vapp_metadata_item_metadata.rb +26 -0
  157. data/lib/fog/vcloud_director/requests/compute/get_vapp_ovf_descriptor.rb +24 -0
  158. data/lib/fog/vcloud_director/requests/compute/get_vapp_owner.rb +58 -0
  159. data/lib/fog/vcloud_director/requests/compute/get_vapp_template.rb +25 -0
  160. data/lib/fog/vcloud_director/requests/compute/get_vapp_template_customization_system_section.rb +25 -0
  161. data/lib/fog/vcloud_director/requests/compute/get_vapp_template_metadata.rb +25 -0
  162. data/lib/fog/vcloud_director/requests/compute/get_vapp_template_metadata_item_metadata.rb +27 -0
  163. data/lib/fog/vcloud_director/requests/compute/get_vapp_template_ovf_descriptor.rb +24 -0
  164. data/lib/fog/vcloud_director/requests/compute/get_vapp_template_owner.rb +25 -0
  165. data/lib/fog/vcloud_director/requests/compute/get_vapp_templates_from_query.rb +95 -0
  166. data/lib/fog/vcloud_director/requests/compute/get_vapps_in_lease_from_query.rb +94 -0
  167. data/lib/fog/vcloud_director/requests/compute/get_vcloud.rb +76 -0
  168. data/lib/fog/vcloud_director/requests/compute/get_vdc.rb +174 -0
  169. data/lib/fog/vcloud_director/requests/compute/get_vdc_metadata.rb +25 -0
  170. data/lib/fog/vcloud_director/requests/compute/get_vdc_metadata_item_metadata.rb +28 -0
  171. data/lib/fog/vcloud_director/requests/compute/get_vdc_storage_class.rb +83 -0
  172. data/lib/fog/vcloud_director/requests/compute/get_vdc_storage_class_metadata.rb +27 -0
  173. data/lib/fog/vcloud_director/requests/compute/get_vdc_storage_class_metadata_item_metadata.rb +25 -0
  174. data/lib/fog/vcloud_director/requests/compute/get_vdcs_from_query.rb +94 -0
  175. data/lib/fog/vcloud_director/requests/compute/get_virtual_hardware_section.rb +29 -0
  176. data/lib/fog/vcloud_director/requests/compute/get_vm.rb +74 -0
  177. data/lib/fog/vcloud_director/requests/compute/get_vm_capabilities.rb +61 -0
  178. data/lib/fog/vcloud_director/requests/compute/get_vm_compliance_results.rb +24 -0
  179. data/lib/fog/vcloud_director/requests/compute/get_vm_customization.rb +31 -0
  180. data/lib/fog/vcloud_director/requests/compute/get_vm_disks.rb +51 -0
  181. data/lib/fog/vcloud_director/requests/compute/get_vm_network.rb +56 -0
  182. data/lib/fog/vcloud_director/requests/compute/get_vm_pending_question.rb +34 -0
  183. data/lib/fog/vcloud_director/requests/compute/get_vms.rb +41 -0
  184. data/lib/fog/vcloud_director/requests/compute/get_vms_by_metadata.rb +20 -0
  185. data/lib/fog/vcloud_director/requests/compute/get_vms_disk_attached_to.rb +39 -0
  186. data/lib/fog/vcloud_director/requests/compute/get_vms_in_lease_from_query.rb +150 -0
  187. data/lib/fog/vcloud_director/requests/compute/instantiate_vapp_template.rb +173 -0
  188. data/lib/fog/vcloud_director/requests/compute/post_acquire_ticket.rb +27 -0
  189. data/lib/fog/vcloud_director/requests/compute/post_answer_vm_pending_question.rb +36 -0
  190. data/lib/fog/vcloud_director/requests/compute/post_attach_disk.rb +51 -0
  191. data/lib/fog/vcloud_director/requests/compute/post_cancel_task.rb +43 -0
  192. data/lib/fog/vcloud_director/requests/compute/post_capture_vapp.rb +70 -0
  193. data/lib/fog/vcloud_director/requests/compute/post_check_vm_compliance.rb +28 -0
  194. data/lib/fog/vcloud_director/requests/compute/post_clone_media.rb +102 -0
  195. data/lib/fog/vcloud_director/requests/compute/post_clone_vapp.rb +62 -0
  196. data/lib/fog/vcloud_director/requests/compute/post_clone_vapp_template.rb +52 -0
  197. data/lib/fog/vcloud_director/requests/compute/post_compose_vapp.rb +45 -0
  198. data/lib/fog/vcloud_director/requests/compute/post_configure_edge_gateway_services.rb +73 -0
  199. data/lib/fog/vcloud_director/requests/compute/post_consolidate_vm_vapp.rb +27 -0
  200. data/lib/fog/vcloud_director/requests/compute/post_consolidate_vm_vapp_template.rb +27 -0
  201. data/lib/fog/vcloud_director/requests/compute/post_create_catalog_item.rb +56 -0
  202. data/lib/fog/vcloud_director/requests/compute/post_create_org_vdc_network.rb +171 -0
  203. data/lib/fog/vcloud_director/requests/compute/post_create_snapshot.rb +21 -0
  204. data/lib/fog/vcloud_director/requests/compute/post_deploy_vapp.rb +51 -0
  205. data/lib/fog/vcloud_director/requests/compute/post_detach_disk.rb +39 -0
  206. data/lib/fog/vcloud_director/requests/compute/post_disable_nested_hv.rb +27 -0
  207. data/lib/fog/vcloud_director/requests/compute/post_disable_vapp_template_download.rb +24 -0
  208. data/lib/fog/vcloud_director/requests/compute/post_discard_vapp_state.rb +30 -0
  209. data/lib/fog/vcloud_director/requests/compute/post_eject_cd_rom.rb +39 -0
  210. data/lib/fog/vcloud_director/requests/compute/post_enable_nested_hv.rb +27 -0
  211. data/lib/fog/vcloud_director/requests/compute/post_enable_vapp_template_download.rb +24 -0
  212. data/lib/fog/vcloud_director/requests/compute/post_enter_maintenance_mode.rb +26 -0
  213. data/lib/fog/vcloud_director/requests/compute/post_exit_maintenance_mode.rb +22 -0
  214. data/lib/fog/vcloud_director/requests/compute/post_insert_cd_rom.rb +39 -0
  215. data/lib/fog/vcloud_director/requests/compute/post_install_vmware_tools.rb +27 -0
  216. data/lib/fog/vcloud_director/requests/compute/post_instantiate_vapp_template.rb +196 -0
  217. data/lib/fog/vcloud_director/requests/compute/post_login_session.rb +39 -0
  218. data/lib/fog/vcloud_director/requests/compute/post_power_off_vapp.rb +36 -0
  219. data/lib/fog/vcloud_director/requests/compute/post_power_on_vapp.rb +71 -0
  220. data/lib/fog/vcloud_director/requests/compute/post_reboot_vapp.rb +33 -0
  221. data/lib/fog/vcloud_director/requests/compute/post_recompose_vapp.rb +21 -0
  222. data/lib/fog/vcloud_director/requests/compute/post_reconfigure_vm.rb +118 -0
  223. data/lib/fog/vcloud_director/requests/compute/post_remove_all_snapshots.rb +27 -0
  224. data/lib/fog/vcloud_director/requests/compute/post_reset_vapp.rb +33 -0
  225. data/lib/fog/vcloud_director/requests/compute/post_revert_snapshot.rb +27 -0
  226. data/lib/fog/vcloud_director/requests/compute/post_shutdown_vapp.rb +33 -0
  227. data/lib/fog/vcloud_director/requests/compute/post_suspend_vapp.rb +33 -0
  228. data/lib/fog/vcloud_director/requests/compute/post_undeploy_vapp.rb +66 -0
  229. data/lib/fog/vcloud_director/requests/compute/post_update_catalog_item_metadata.rb +52 -0
  230. data/lib/fog/vcloud_director/requests/compute/post_update_disk_metadata.rb +52 -0
  231. data/lib/fog/vcloud_director/requests/compute/post_update_media_metadata.rb +52 -0
  232. data/lib/fog/vcloud_director/requests/compute/post_update_vapp_metadata.rb +86 -0
  233. data/lib/fog/vcloud_director/requests/compute/post_update_vapp_template_metadata.rb +52 -0
  234. data/lib/fog/vcloud_director/requests/compute/post_upgrade_hw_version.rb +28 -0
  235. data/lib/fog/vcloud_director/requests/compute/post_upload_disk.rb +133 -0
  236. data/lib/fog/vcloud_director/requests/compute/post_upload_media.rb +120 -0
  237. data/lib/fog/vcloud_director/requests/compute/post_upload_vapp_template.rb +46 -0
  238. data/lib/fog/vcloud_director/requests/compute/put_catalog_item_metadata_item_metadata.rb +50 -0
  239. data/lib/fog/vcloud_director/requests/compute/put_cpu.rb +88 -0
  240. data/lib/fog/vcloud_director/requests/compute/put_disk_metadata_item_metadata.rb +46 -0
  241. data/lib/fog/vcloud_director/requests/compute/put_disks.rb +39 -0
  242. data/lib/fog/vcloud_director/requests/compute/put_guest_customization_section_vapp.rb +141 -0
  243. data/lib/fog/vcloud_director/requests/compute/put_media_metadata_item_metadata.rb +50 -0
  244. data/lib/fog/vcloud_director/requests/compute/put_memory.rb +89 -0
  245. data/lib/fog/vcloud_director/requests/compute/put_metadata_value.rb +26 -0
  246. data/lib/fog/vcloud_director/requests/compute/put_network.rb +162 -0
  247. data/lib/fog/vcloud_director/requests/compute/put_network_connection_system_section_vapp.rb +152 -0
  248. data/lib/fog/vcloud_director/requests/compute/put_product_sections.rb +46 -0
  249. data/lib/fog/vcloud_director/requests/compute/put_vapp_metadata_item_metadata.rb +85 -0
  250. data/lib/fog/vcloud_director/requests/compute/put_vapp_name_and_description.rb +36 -0
  251. data/lib/fog/vcloud_director/requests/compute/put_vapp_template_metadata_item_metadata.rb +50 -0
  252. data/lib/fog/vcloud_director/requests/compute/put_vm.rb +72 -0
  253. data/lib/fog/vcloud_director/requests/compute/put_vm_capabilities.rb +44 -0
  254. data/lib/fog/vcloud_director/version.rb +5 -0
  255. data/spec/spec_helper.rb +15 -0
  256. data/spec/vcloud_director/generators/compute/instantiate_vapp_template_params_spec.rb +68 -0
  257. data/spec/vcloud_director/requests/compute/instantiate_vapp_template_spec.rb +78 -0
  258. data/spec/vcloud_director/spec_helper.rb +11 -0
  259. data/tasks/bundler.rake +3 -0
  260. data/tasks/console.rake +12 -0
  261. data/tasks/lint.rake +3 -0
  262. data/tasks/test.rake +13 -0
  263. data/tests/helper.rb +32 -0
  264. data/tests/helpers/collection_helper.rb +97 -0
  265. data/tests/helpers/compute/flavors_helper.rb +32 -0
  266. data/tests/helpers/compute/server_helper.rb +25 -0
  267. data/tests/helpers/compute/servers_helper.rb +10 -0
  268. data/tests/helpers/formats_helper.rb +98 -0
  269. data/tests/helpers/formats_helper_tests.rb +110 -0
  270. data/tests/helpers/mock_helper.rb +95 -0
  271. data/tests/helpers/model_helper.rb +31 -0
  272. data/tests/helpers/responds_to_helper.rb +11 -0
  273. data/tests/helpers/schema_validator_tests.rb +107 -0
  274. data/tests/helpers/succeeds_helper.rb +9 -0
  275. data/tests/lorem.txt +1 -0
  276. data/tests/vcloud_director/ensure_list_tests.rb +84 -0
  277. data/tests/vcloud_director/fixtures/test.iso +1 -0
  278. data/tests/vcloud_director/fixtures/vapp.xml +532 -0
  279. data/tests/vcloud_director/fixtures/vm.xml +213 -0
  280. data/tests/vcloud_director/generators/compute/compose_vapp_tests.rb +108 -0
  281. data/tests/vcloud_director/models/compute/catalog_items_tests.rb +42 -0
  282. data/tests/vcloud_director/models/compute/catalogs_tests.rb +40 -0
  283. data/tests/vcloud_director/models/compute/helper.rb +60 -0
  284. data/tests/vcloud_director/models/compute/media_tests.rb +58 -0
  285. data/tests/vcloud_director/models/compute/network_tests.rb +108 -0
  286. data/tests/vcloud_director/models/compute/organizations_tests.rb +18 -0
  287. data/tests/vcloud_director/models/compute/tasks_tests.rb +56 -0
  288. data/tests/vcloud_director/models/compute/vapp_life_cycle_tests.rb +93 -0
  289. data/tests/vcloud_director/models/compute/vapp_template_tests.rb +29 -0
  290. data/tests/vcloud_director/models/compute/vapp_tests.rb +61 -0
  291. data/tests/vcloud_director/models/compute/vdcs_tests.rb +54 -0
  292. data/tests/vcloud_director/models/compute/vms_tests.rb +101 -0
  293. data/tests/vcloud_director/requests/compute/admin_tests.rb +16 -0
  294. data/tests/vcloud_director/requests/compute/catalog_tests.rb +42 -0
  295. data/tests/vcloud_director/requests/compute/disk_tests.rb +178 -0
  296. data/tests/vcloud_director/requests/compute/edge_gateway_tests.rb +217 -0
  297. data/tests/vcloud_director/requests/compute/groups_tests.rb +18 -0
  298. data/tests/vcloud_director/requests/compute/helper.rb +32 -0
  299. data/tests/vcloud_director/requests/compute/media_tests.rb +195 -0
  300. data/tests/vcloud_director/requests/compute/network_tests.rb +186 -0
  301. data/tests/vcloud_director/requests/compute/organization_tests.rb +37 -0
  302. data/tests/vcloud_director/requests/compute/ovf_descriptor_tests.rb +36 -0
  303. data/tests/vcloud_director/requests/compute/query_tests.rb +99 -0
  304. data/tests/vcloud_director/requests/compute/schema_helper.rb +663 -0
  305. data/tests/vcloud_director/requests/compute/session_tests.rb +14 -0
  306. data/tests/vcloud_director/requests/compute/supported_systems_tests.rb +11 -0
  307. data/tests/vcloud_director/requests/compute/task_tests.rb +35 -0
  308. data/tests/vcloud_director/requests/compute/users_tests.rb +18 -0
  309. data/tests/vcloud_director/requests/compute/vapp_tests.rb +123 -0
  310. data/tests/vcloud_director/requests/compute/vdc_storage_profile_tests.rb +27 -0
  311. data/tests/vcloud_director/requests/compute/vdc_tests.rb +36 -0
  312. data/tests/vcloud_director/requests/compute/versions_tests.rb +13 -0
  313. data/tests/vcloud_director/requests/compute/vm_tests.rb +185 -0
  314. data/tests/watchr.rb +22 -0
  315. metadata +461 -0
@@ -0,0 +1,168 @@
1
+ require 'date'
2
+
3
+ module Fog
4
+ module Compute
5
+ class VcloudDirector
6
+ class Real
7
+ # Retrieve a task.
8
+ #
9
+ # @param [String] id The object identifier of the task.
10
+ # @return [Excon::Response]
11
+ # * body<~Hash>:
12
+ # * :href<~String> - The URI of the entity.
13
+ # * :type<~String> - The MIME type of the entity.
14
+ # * :id<~String> - The entity identifier, expressed in URN format.
15
+ # The value of this attribute uniquely identifies the entity,
16
+ # persists for the life of the entity, and is never reused.
17
+ # * :operationKey<~String> - Optional unique identifier to support
18
+ # idempotent semantics for create and delete operations.
19
+ # * :name<~String> - The name of the entity.
20
+ # * :cancelRequested<~String> - Whether user has requested this
21
+ # processing to be canceled.
22
+ # * :endTime<~String> - The date and time that processing of the
23
+ # task was completed. May not be present if the task is still
24
+ # being executed.
25
+ # * :expiryTime<~String> - The date and time at which the task
26
+ # resource will be destroyed and no longer available for
27
+ # retrieval. May not be present if the task has not been executed
28
+ # or is still being executed.
29
+ # * :operation<~String> - A message describing the operation that
30
+ # is tracked by this task.
31
+ # * :operationName<~String> - The short name of the operation that
32
+ # is tracked by this task.
33
+ # * :serviceNamespace<~String> - Identifier of the service that
34
+ # created the task.
35
+ # * :startTime<~String> - The date and time the system started
36
+ # executing the task. May not be present if the task has not been
37
+ # executed yet.
38
+ # * :status<~String> - The execution status of the task.
39
+ # * :Link<~Array<Hash>>:
40
+ # * :Description<~String> - Optional description.
41
+ # * :Owner<~Hash> - Reference to the owner of the task. This is
42
+ # typically the object that the task is creating or updating.
43
+ # * :href<~String> - Contains the URI to the entity.
44
+ # * :name<~String> - Contains the name of the entity.
45
+ # * :type<~String> - Contains the type of the entity.
46
+ # * :Error<~Hash> - Represents error information from a failed
47
+ # task.
48
+ # * :majorErrorCode<~String> - The class of the error. Matches
49
+ # the HTTP status code.
50
+ # * :message<~String> - An one line, human-readable message
51
+ # describing the error that occurred.
52
+ # * :minorErrorCode<~String> - Resource-specific error code.
53
+ # * :stackTrace<~String> - The stack trace of the exception.
54
+ # * :vendorSpecificErrorCode<~String> - A vendor- or
55
+ # implementation-specific error code that can reference
56
+ # specific modules or source lines for diagnostic purposes.
57
+ # * :User<~Hash> - The user who started the task.
58
+ # * :href<~String> - Contains the URI to the entity.
59
+ # * :name<~String> - Contains the name of the entity.
60
+ # * :type<~String> - Contains the type of the entity.
61
+ # * :Organization<~Hash> - The organization to which the :User
62
+ # belongs.
63
+ # * :href<~String> - Contains the URI to the entity.
64
+ # * :name<~String> - Contains the name of the entity.
65
+ # * :type<~String> - Contains the type of the entity.
66
+ # * :Progress<~String> - Read-only indicator of task progress as an
67
+ # approximate percentage between 0 and 100. Not available for all
68
+ # tasks.
69
+ # * :Params
70
+ # * :Details<~String> - Detailed message about the task. Also
71
+ # contained by the :Owner entity when task status is preRunning.
72
+ #
73
+ # @raise [Fog::Compute::VcloudDirector::Forbidden]
74
+ #
75
+ # @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/GET-Task.html
76
+ # @since vCloud API version 0.9
77
+ def get_task(id)
78
+ response = request(
79
+ :expects => 200,
80
+ :idempotent => true,
81
+ :method => 'GET',
82
+ :parser => Fog::ToHashDocument.new,
83
+ :path => "task/#{id}"
84
+ )
85
+
86
+ # vCloud Director bug: Owner may be absent for some tasks, fix
87
+ # targeted for 5.1.3 (due out at the beginning Q1 2014).
88
+ #
89
+ # We'd prefer that Owner is always present; if nothing else, this
90
+ # let's the tests pass.
91
+ response.body[:Owner] ||= {:href => '', :name => nil, :type => nil}
92
+
93
+ response
94
+ end
95
+ end
96
+
97
+ class Mock
98
+ def get_task(id)
99
+ unless data[:tasks][id]
100
+ raise Fog::Compute::VcloudDirector::Forbidden.new(
101
+ 'This operation is denied.'
102
+ )
103
+ end
104
+
105
+ body = {
106
+ :xmlns => xmlns,
107
+ :xmlns_xsi => xmlns_xsi,
108
+ :xsi_schemaLocation => xsi_schema_location
109
+ }.merge(task_body(id))
110
+
111
+ Excon::Response.new(
112
+ :status => 200,
113
+ :headers => {'Type' => "application/#{body[:type]};version=#{api_version}"},
114
+ :body => body
115
+ )
116
+ end
117
+
118
+ private
119
+
120
+ # @param [String] id Object identifier of the task.
121
+ # @return [Hash]
122
+ def task_body(id)
123
+ task = data[:tasks][id]
124
+
125
+ body = {
126
+ :href => make_href("tasks/#{id}"),
127
+ :type => 'application/vnd.vmware.vcloud.task+xml',
128
+ :id => "urn:vcloud:tasl:#{id}",
129
+ :name => task[:name],
130
+ :cancelRequested => task[:cancel_requested].to_s,
131
+ :expiryTime => task[:expiry_time].strftime('%Y-%m-%dT%H:%M:%S%z'),
132
+ :operation => task[:operation],
133
+ :operationName => task[:operation_name],
134
+ :serviceNamespace => task[:service_namespace],
135
+ :status => task[:status],
136
+ :Link => [],
137
+ :Owner => task[:owner],
138
+ :User => { # for now, always the current user
139
+ :href => make_href("admin/user/#{user_uuid}"),
140
+ :name => user_name,
141
+ :type => 'application/vnd.vmware.admin.user+xml',
142
+ },
143
+ :Organization => { # for now, always the current org
144
+ :href => make_href("org/#{data[:org][:uuid]}"),
145
+ :name => data[:org][:name],
146
+ :type => 'application/vnd.vmware.vcloud.org+xml',
147
+ },
148
+ :Progress => task[:progress].to_s,
149
+ :Details => task[:details] || '',
150
+ }
151
+ body[:endTime] = task[:end_time].strftime('%Y-%m-%dT%H:%M:%S%z') if task[:end_time]
152
+ body[:startTime] = task[:start_time].strftime('%Y-%m-%dT%H:%M:%S%z') if task[:start_time]
153
+ body[:Description] = task[:description] if task[:description]
154
+
155
+ if task[:status] == 'running'
156
+ body[:Link] << {
157
+ :href => make_href("task/#{id}/action/cancel"),
158
+ :type => 'application/vnd.vmware.vcloud.task+xml',
159
+ :rel => 'cancel',
160
+ }
161
+ end
162
+
163
+ body
164
+ end
165
+ end
166
+ end
167
+ end
168
+ end
@@ -0,0 +1,130 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+ extend Fog::Deprecation
6
+ deprecate :get_tasks_list, :get_task_list
7
+
8
+ # Retrieve a list of this organization's queued, running, or recently
9
+ # completed tasks.
10
+ #
11
+ # @param [String] id Object identifier of the organization.
12
+ # @return [Excon::Response]
13
+ # * body<~Hash>:
14
+ # * :href<~String> - The URI of the entity.
15
+ # * :type<~String> - The MIME type of the entity.
16
+ # * :id<~String> - The entity identifier, expressed in URN format.
17
+ # The value of this attribute uniquely identifies the entity,
18
+ # persists for the life of the entity, and is never reused.
19
+ # * :name<~String> - The name of the entity.
20
+ # * :Task<~Array<Hash>>:
21
+ # * :href<~String> - The URI of the entity.
22
+ # * :type<~String> - The MIME type of the entity.
23
+ # * :id<~String> - The entity identifier, expressed in URN
24
+ # format. The value of this attribute uniquely identifies the
25
+ # entity, persists for the life of the entity, and is never
26
+ # reused.
27
+ # * :operationKey<~String> - Optional unique identifier to
28
+ # support idempotent semantics for create and delete
29
+ # operations.
30
+ # * :name<~String> - The name of the entity.
31
+ # * :cancelRequested<~String> - Whether user has requested this
32
+ # processing to be canceled.
33
+ # * :endTime<~String> - The date and time that processing of the
34
+ # task was completed. May not be present if the task is still
35
+ # being executed.
36
+ # * :expiryTime<~String> - The date and time at which the task
37
+ # resource will be destroyed and no longer available for
38
+ # retrieval. May not be present if the task has not been
39
+ # executed or is still being executed.
40
+ # * :operation<~String> - A message describing the operation that
41
+ # is tracked by this task.
42
+ # * :operationName<~String> - The short name of the operation
43
+ # that is tracked by this task.
44
+ # * :serviceNamespace<~String> - Identifier of the service that
45
+ # created the task.
46
+ # * :startTime<~String> - The date and time the system started
47
+ # executing the task. May not be present if the task has not
48
+ # been executed yet.
49
+ # * :status<~String> - The execution status of the task.
50
+ # * :Link<~Array<Hash>>:
51
+ # * :Description<~String> - Optional description.
52
+ # * :Owner<~Hash> - Reference to the owner of the task. This is
53
+ # typically the object that the task is creating or updating.
54
+ # * :href<~String> - Contains the URI to the entity.
55
+ # * :name<~String> - Contains the name of the entity.
56
+ # * :type<~String> - Contains the type of the entity.
57
+ # * :Error<~Hash> - Represents error information from a failed
58
+ # task.
59
+ # * :majorErrorCode<~String> - The class of the error. Matches
60
+ # the HTTP status code.
61
+ # * :message<~String> - An one line, human-readable message
62
+ # describing the error that occurred.
63
+ # * :minorErrorCode<~String> - Resource-specific error code.
64
+ # * :stackTrace<~String> - The stack trace of the exception.
65
+ # * :vendorSpecificErrorCode<~String> - A vendor- or
66
+ # implementation-specific error code that can reference
67
+ # specific modules or source lines for diagnostic purposes.
68
+ # * :User<~Hash> - The user who started the task.
69
+ # * :href<~String> - Contains the URI to the entity.
70
+ # * :name<~String> - Contains the name of the entity.
71
+ # * :type<~String> - Contains the type of the entity.
72
+ # * :Organization<~Hash> - The organization to which the :User
73
+ # belongs.
74
+ # * :href<~String> - Contains the URI to the entity.
75
+ # * :name<~String> - Contains the name of the entity.
76
+ # * :type<~String> - Contains the type of the entity.
77
+ # * :Progress<~String> - Read-only indicator of task progress as
78
+ # an approximate percentage between 0 and 100. Not available
79
+ # for all tasks.
80
+ # * :Params
81
+ # * :Details<~String> - Detailed message about the task. Also
82
+ # contained by the :Owner entity when task status is
83
+ # preRunning.
84
+ #
85
+ # @raise [Fog::Compute::VcloudDirector::BadRequest]
86
+ # @raise [Fog::Compute::VcloudDirector::Forbidden]
87
+ #
88
+ # @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/GET-TaskList.html
89
+ # @since vCloud API version 0.9
90
+ def get_task_list(id)
91
+ response = request(
92
+ :expects => 200,
93
+ :idempotent => true,
94
+ :method => 'GET',
95
+ :parser => Fog::ToHashDocument.new,
96
+ :path => "tasksList/#{id}"
97
+ )
98
+ ensure_list! response.body, :Task
99
+ response
100
+ end
101
+ end
102
+
103
+ class Mock
104
+ def get_task_list(id)
105
+ unless id == data[:org][:uuid]
106
+ raise Fog::Compute::VcloudDirector::Forbidden.new(
107
+ "No access to entity \"com.vmware.vcloud.entity.org:#{id}\"."
108
+ )
109
+ end
110
+
111
+ body = {
112
+ :xmlns => xmlns,
113
+ :xmlns_xsi => xmlns_xsi,
114
+ :xsi_schemaLocation => xsi_schema_location,
115
+ :href => make_href("tasksList/#{id}"),
116
+ :type => "application/vnd.vmware.vcloud.tasksList+xml",
117
+ :name => "Tasks Lists",
118
+ :Task => data[:tasks].keys.map {|task_id| task_body(task_id)}
119
+ }
120
+
121
+ Excon::Response.new(
122
+ :status => 200,
123
+ :headers => {'Content-Type' => "#{body[:type]};version=#{api_version}"},
124
+ :body => body
125
+ )
126
+ end
127
+ end
128
+ end
129
+ end
130
+ end
@@ -0,0 +1,74 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+ require 'fog/vcloud_director/parsers/compute/vm'
6
+
7
+ # Retrieve a vApp or VM.
8
+ #
9
+ # @note This should probably be deprecated.
10
+ #
11
+ # @param [String] id Object identifier of the vApp or VM.
12
+ # @return [Excon::Response]
13
+ # * body<~Hash>:
14
+ #
15
+ # @see #get_vapp
16
+ def get_vm(id)
17
+ request(
18
+ :expects => 200,
19
+ :idempotent => true,
20
+ :method => 'GET',
21
+ :parser => Fog::Parsers::Compute::VcloudDirector::Vm.new,
22
+ :path => "vAppTemplate/#{id}"
23
+ )
24
+ end
25
+ end
26
+ class Mock
27
+ def get_vm(id)
28
+ vapp = get_vapp(id).body
29
+ vm = parse_vapp_to_vm(vapp)
30
+ body = {:type => vapp[:type], :vm => vm}
31
+ Excon::Response.new(
32
+ :status => 200,
33
+ :headers => {'Content-Type' => "#{body[:type]};version=#{api_version}"},
34
+ :body => body
35
+ )
36
+ end
37
+
38
+ # Mock equivalent of Fog::Parsers::Compute::VcloudDirector::Vm
39
+ def parse_vapp_to_vm(vapp)
40
+ parser = Fog::Parsers::Compute::VcloudDirector::Vm.new
41
+ vm = vapp.select {|k| [:href, :name, :status, :type].include? k}
42
+ network = vapp[:NetworkConnectionSection]
43
+ vm.merge({
44
+ :id => vapp[:href].split('/').last,
45
+ :status => parser.human_status(vapp[:status]),
46
+ :ip_address => network[:NetworkConnection][:IpAddress],
47
+ :description => vapp[:Description],
48
+ :cpu => get_hardware(vapp, 3),
49
+ :memory => get_hardware(vapp, 4),
50
+ :disks => get_disks(vapp),
51
+ :links => [vapp[:GuestCustomizationSection][:Link]],
52
+ })
53
+ end
54
+
55
+ def get_hardware(vapp, resource_type)
56
+ hardware = vapp[:"ovf:VirtualHardwareSection"][:"ovf:Item"]
57
+ item = hardware.find {|h| h[:"rasd:ResourceType"].to_i == resource_type}
58
+ if item and item.key? :"rasd:VirtualQuantity"
59
+ item[:"rasd:VirtualQuantity"].to_i
60
+ else
61
+ nil
62
+ end
63
+ end
64
+
65
+ def get_disks(vapp)
66
+ hardware = vapp[:"ovf:VirtualHardwareSection"][:"ovf:Item"]
67
+ disks = hardware.select {|h| h[:"rasd:ResourceType"].to_i == 17}
68
+ disks.map {|d| {d[:"rasd:ElementName"] => d[:"rasd:HostResource"][:ns12_capacity].to_i}}
69
+ end
70
+
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,41 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+ require 'fog/vcloud_director/parsers/compute/vms'
6
+
7
+ # Retrieve a vApp or VM.
8
+ #
9
+ # @note This should probably be deprecated.
10
+ #
11
+ # @param [String] id Object identifier of the vApp or VM.
12
+ # @return [Excon::Response]
13
+ # * body<~Hash>:
14
+ #
15
+ # @see #get_vapp
16
+ def get_template_vms(id)
17
+ request(
18
+ :expects => 200,
19
+ :idempotent => true,
20
+ :method => 'GET',
21
+ :parser => Fog::Parsers::Compute::VcloudDirector::Vms.new,
22
+ :path => "vAppTemplate/#{id}"
23
+ )
24
+ end
25
+ end
26
+ class Mock
27
+ def get_vms(id)
28
+ vapptemplate = get_vapp(id).body
29
+ parser = Fog::Parsers::Compute::VcloudDirector::Vms.new
30
+ vms = vapp[:Children][:Vm].map {|child| parse_vapp_to_vm(child) }
31
+ body = {:type => vapp[:type], :vms => vms}
32
+ Excon::Response.new(
33
+ :status => 200,
34
+ :headers => {'Content-Type' => "#{body[:type]};version=#{api_version}"},
35
+ :body => body
36
+ )
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,28 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+ # Retrieves a thumbnail image of a VM console.
6
+ #
7
+ # The content type of the response can be any of `image/png`,
8
+ # `image/gif`.
9
+ #
10
+ # @param [String] id Object identifier of the VM.
11
+ # @return [Excon::Response]
12
+ # * body<~String> - the thumbnail image.
13
+ #
14
+ # @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/GET-Thumbnail.html
15
+ # @since vCloud API version 0.9
16
+ def get_thumbnail(id)
17
+ request(
18
+ :expects => 200,
19
+ :headers => {'Accept' => "image/*;version=#{@api_version}"},
20
+ :idempotent => true,
21
+ :method => 'GET',
22
+ :path => "vApp/#{id}/screen"
23
+ )
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,95 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+ # Retrieves a list of users for organization the org admin belongs to
6
+ # by using REST API general QueryHandler.
7
+ #
8
+ # @param [Hash] options
9
+ # @option options [String] :sortAsc (Sorted by database ID) Sort
10
+ # results by attribute-name in ascending order. attribute-name cannot
11
+ # include metadata.
12
+ # @option options [String] :sortDesc (Sorted by database ID) Sort
13
+ # results by attribute-name in descending order. attribute-name
14
+ # cannot include metadata.
15
+ # @option options [Integer] :page (1) If the query results span
16
+ # multiple pages, return this page.
17
+ # @option options [Integer] :pageSize (25) Number of results per page,
18
+ # to a maximum of 128.
19
+ # @option options [String] :format (records) One of the following
20
+ # types:
21
+ # - *references* Returns a reference to each object, including its
22
+ # :name, :type, and :href attributes.
23
+ # - *records* Returns all database records for each object, with each
24
+ # record as an attribute.
25
+ # - *idrecords* Identical to the records format, except that object
26
+ # references are returned in :id format rather than :href format.
27
+ # @option options [Array<String>] :fields (all static attribute names)
28
+ # List of attribute names or metadata key names to return.
29
+ # @option options [Integer] :offset (0) Integer value specifying the
30
+ # first record to return. Record numbers < offset are not returned.
31
+ # @option options [String] :filter (none) Filter expression.
32
+ # @return [Excon::Response]
33
+ # * hash<~Hash>:
34
+ # * :href<~String> - The URI of the entity.
35
+ # * :type<~String> - The MIME type of the entity.
36
+ # * :name<~String> - Query name that generated this result set.
37
+ # * :page<~String> - Page of the result set that this container
38
+ # holds. The first page is page number 1.
39
+ # * :pageSize<~String> - Page size, as a number of records or
40
+ # references.
41
+ # * :total<~String> - Total number of records or references in the
42
+ # container.
43
+ # * :Link<~Array<Hash>>:
44
+ # * :href<~String> - Contains the URI to the entity.
45
+ # * :type<~String> - Contains the type of the entity.
46
+ # * :rel<~String> - Defines the relationship of the link to the
47
+ # object that contains it.
48
+ # * :UserRecord<~Array<Hash>>:
49
+ # * TODO
50
+ # * :firstPage<~Integer> - First page in the result set.
51
+ # * :previousPage<~Integer> - Previous page in the result set.
52
+ # * :nextPage<~Integer> - Next page in the result set.
53
+ # * :lastPage<~Integer> - Last page in the result set.
54
+ #
55
+ # @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/GET-UsersFromQuery-query.html
56
+ # @since vCloud API version 1.5
57
+ def get_users_from_query(options={})
58
+ query = []
59
+ query << "sortAsc=#{options[:sortAsc]}" if options[:sortAsc]
60
+ query << "sortDesc=#{options[:sortDesc]}" if options[:sortDesc]
61
+ query << "page=#{options[:page]}" if options[:page]
62
+ query << "pageSize=#{options[:pageSize]}" if options[:pageSize]
63
+ query << "format=#{options[:format]}" if options[:format]
64
+ query << "fields=#{Array(options[:fields]).join(',')}" if options[:fields]
65
+ query << "offset=#{options[:offset]}" if options[:offset]
66
+ query << "filter=#{options[:filter]}" if options[:filter]
67
+
68
+ response = request(
69
+ :expects => 200,
70
+ :idempotent => true,
71
+ :method => 'GET',
72
+ :parser => Fog::ToHashDocument.new,
73
+ :path => 'admin/users/query',
74
+ :query => query.map {|q| URI.escape(q)}.join('&')
75
+ )
76
+ ensure_list! response.body, :Link
77
+ ensure_list! response.body,
78
+ response.body[:type] == 'application/vnd.vmware.vcloud.query.references+xml' ?
79
+ :UserReference : :UserRecord
80
+
81
+ %w[firstPage previousPage nextPage lastPage].each do |rel|
82
+ if link = response.body[:Link].find {|l| l[:rel] == rel}
83
+ href = Nokogiri::XML.fragment(link[:href])
84
+ query = CGI.parse(URI.parse(href.text).query)
85
+ response.body[rel.to_sym] = query['page'].first.to_i
86
+ response.body[:pageSize] ||= query['pageSize'].first.to_i
87
+ end
88
+ end
89
+
90
+ response
91
+ end
92
+ end
93
+ end
94
+ end
95
+ end