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,33 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+ # Suspend a vApp or VM.
6
+ #
7
+ # If used on a vApp, suspends all VMs in the vApp. If used on a VM,
8
+ # suspends the VM. This operation is available only for a vApp or VM
9
+ # that is powered on.
10
+ #
11
+ # This operation is asynchronous and returns a task that you can
12
+ # monitor to track the progress of the request.
13
+ #
14
+ # @param [String] id Object identifier of the vApp or VM.
15
+ # @return [Excon::Response]
16
+ # * body<~Hash>:
17
+ #
18
+ # @raise [Fog::Compute::VcloudDirector::BadRequest]
19
+ #
20
+ # @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/POST-SuspendVApp.html
21
+ # @since vCloud API version 0.9
22
+ def post_suspend_vapp(id)
23
+ request(
24
+ :expects => 202,
25
+ :method => 'POST',
26
+ :parser => Fog::ToHashDocument.new,
27
+ :path => "vApp/#{id}/power/action/suspend"
28
+ )
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,66 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+ # Undeploy a vApp/VM.
6
+ #
7
+ # Undeployment deallocates all resources used by the vApp and the VMs
8
+ # it contains.
9
+ #
10
+ # This operation is asynchronous and returns a task that you can
11
+ # monitor to track the progress of the request.
12
+ #
13
+ # @param [String] id Object identifier of the vApp.
14
+ # @param [Hash] options
15
+ # @option options [String] :UndeployPowerAction The specified action is
16
+ # applied to all virtual machines in the vApp. All values other than
17
+ # default ignore actions, order, and delay specified in the
18
+ # StartupSection. One of:
19
+ # - powerOff (Power off the virtual machines. This is the default
20
+ # action if this attribute is missing or empty)
21
+ # - suspend (Suspend the virtual machines)
22
+ # - shutdown (Shut down the virtual machines)
23
+ # - force (Attempt to power off the virtual machines. Failures in
24
+ # undeploying the virtual machine or associated networks are
25
+ # ignored. All references to the vApp and its virtual machines are
26
+ # removed from the database)
27
+ # - default (Use the actions, order, and delay specified in the
28
+ # StartupSection).
29
+ # @return [Excon::Response]
30
+ # * body<~Hash>:
31
+ #
32
+ # @raise [Fog::Compute::VcloudDirector::BadRequest]
33
+ #
34
+ # @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/POST-UndeployVApp.html
35
+ # @since vCloud API version 0.9
36
+ def post_undeploy_vapp(id, options={})
37
+ body = Nokogiri::XML::Builder.new do
38
+ attrs = {
39
+ :xmlns => 'http://www.vmware.com/vcloud/v1.5'
40
+ }
41
+ UndeployVAppParams(attrs) {
42
+ if options[:UndeployPowerAction]
43
+ UndeployPowerAction options[:UndeployPowerAction]
44
+ end
45
+ }
46
+ end.to_xml
47
+
48
+ request(
49
+ :body => body,
50
+ :expects => 202,
51
+ :headers => {'Content-Type' => 'application/vnd.vmware.vcloud.undeployVAppParams+xml'},
52
+ :method => 'POST',
53
+ :parser => Fog::ToHashDocument.new,
54
+ :path => "vApp/#{id}/action/undeploy"
55
+ )
56
+ end
57
+
58
+ # @deprecated Use {#post_undeploy_vapp} instead.
59
+ def undeploy(id)
60
+ Fog::Logger.deprecation("#{self} => ##{undeploy} is deprecated, use ##{post_undeploy_vapp} instead [light_black](#{caller.first})[/]")
61
+ post_undeploy_vapp(id, :UndeployPowerAction => 'shutdown')
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,52 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+ # Merge the metadata provided in the request with existing catalog item metadata.
6
+ #
7
+ # @param [String] id Object identifier of the catalog item.
8
+ # @param [Hash{String=>Boolean,DateTime,Fixnum,String}] metadata
9
+ # @return [Excon::Response]
10
+ # * body<~Hash>:
11
+ #
12
+ # @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/POST-UpdateCatalogItemMetadata.html
13
+ # @since vCloud API version 1.5
14
+ def post_update_catalog_item_metadata(id, metadata={})
15
+ body = Nokogiri::XML::Builder.new do
16
+ attrs = {
17
+ :xmlns => 'http://www.vmware.com/vcloud/v1.5',
18
+ 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance'
19
+ }
20
+ Metadata(attrs) {
21
+ metadata.each do |key, value|
22
+ MetadataEntry {
23
+ Key key
24
+ if api_version.to_f < 5.1
25
+ Value value
26
+ else
27
+ type = case value
28
+ when TrueClass, FalseClass then 'MetadataBooleanValue';
29
+ when DateTime then 'MetadataDateTimeValue';
30
+ when Fixnum then 'MetadataNumberValue';
31
+ else 'MetadataStringValue'
32
+ end
33
+ TypedValue('xsi:type' => type) { Value value }
34
+ end
35
+ }
36
+ end
37
+ }
38
+ end.to_xml
39
+
40
+ request(
41
+ :body => body,
42
+ :expects => 202,
43
+ :headers => {'Content-Type' => 'application/vnd.vmware.vcloud.metadata+xml'},
44
+ :method => 'POST',
45
+ :parser => Fog::ToHashDocument.new,
46
+ :path => "catalogItem/#{id}/metadata/"
47
+ )
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,52 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+ # Merge the metadata provided in the request with existing metadata.
6
+ #
7
+ # @param [String] id Object identifier of the disk.
8
+ # @param [Hash{String=>Boolean,DateTime,Fixnum,String}] metadata
9
+ # @return [Excon::Response]
10
+ # * body<~Hash>:
11
+ #
12
+ # @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/POST-UpdateDiskMetadata.html
13
+ # @since vCloud API version 5.1
14
+ def post_update_disk_metadata(id, metadata={})
15
+ body = Nokogiri::XML::Builder.new do
16
+ attrs = {
17
+ :xmlns => 'http://www.vmware.com/vcloud/v1.5',
18
+ 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance'
19
+ }
20
+ Metadata(attrs) {
21
+ metadata.each do |key, value|
22
+ MetadataEntry {
23
+ Key key
24
+ if api_version.to_f < 5.1
25
+ Value value
26
+ else
27
+ type = case value
28
+ when TrueClass, FalseClass then 'MetadataBooleanValue';
29
+ when DateTime then 'MetadataDateTimeValue';
30
+ when Fixnum then 'MetadataNumberValue';
31
+ else 'MetadataStringValue'
32
+ end
33
+ TypedValue('xsi:type' => type) { Value value }
34
+ end
35
+ }
36
+ end
37
+ }
38
+ end.to_xml
39
+
40
+ request(
41
+ :body => body,
42
+ :expects => 202,
43
+ :headers => {'Content-Type' => 'application/vnd.vmware.vcloud.metadata+xml'},
44
+ :method => 'POST',
45
+ :parser => Fog::ToHashDocument.new,
46
+ :path => "disk/#{id}/metadata/"
47
+ )
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,52 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+ # Merge the metadata provided in the request with existing metadata.
6
+ #
7
+ # @param [String] id Object identifier of the media object.
8
+ # @param [Hash{String=>Boolean,DateTime,Fixnum,String}] metadata
9
+ # @return [Excon::Response]
10
+ # * body<~Hash>:
11
+ #
12
+ # @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/POST-UpdateMediaMetadata.html
13
+ # @since vCloud API version 1.5
14
+ def post_update_media_metadata(id, metadata={})
15
+ body = Nokogiri::XML::Builder.new do
16
+ attrs = {
17
+ :xmlns => 'http://www.vmware.com/vcloud/v1.5',
18
+ 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance'
19
+ }
20
+ Metadata(attrs) {
21
+ metadata.each do |key, value|
22
+ MetadataEntry {
23
+ Key key
24
+ if api_version.to_f < 5.1
25
+ Value value
26
+ else
27
+ type = case value
28
+ when TrueClass, FalseClass then 'MetadataBooleanValue';
29
+ when DateTime then 'MetadataDateTimeValue';
30
+ when Fixnum then 'MetadataNumberValue';
31
+ else 'MetadataStringValue'
32
+ end
33
+ TypedValue('xsi:type' => type) { Value value }
34
+ end
35
+ }
36
+ end
37
+ }
38
+ end.to_xml
39
+
40
+ request(
41
+ :body => body,
42
+ :expects => 202,
43
+ :headers => {'Content-Type' => 'application/vnd.vmware.vcloud.metadata+xml'},
44
+ :method => 'POST',
45
+ :parser => Fog::ToHashDocument.new,
46
+ :path => "media/#{id}/metadata/"
47
+ )
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,86 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+ # Merge the metadata provided in the request with existing metadata.
6
+ #
7
+ # @param [String] id Object identifier of the vApp or VM.
8
+ # @param [Hash{String=>Boolean,DateTime,Fixnum,String}] metadata
9
+ # @return [Excon::Response]
10
+ # * body<~Hash>:
11
+ #
12
+ # @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/POST-UpdateVAppMetadata.html
13
+ # @since vCloud API version 1.5
14
+ def post_update_vapp_metadata(id, metadata={})
15
+ body = Nokogiri::XML::Builder.new do
16
+ attrs = {
17
+ :xmlns => 'http://www.vmware.com/vcloud/v1.5',
18
+ 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance'
19
+ }
20
+ Metadata(attrs) {
21
+ metadata.each do |key, value|
22
+ MetadataEntry {
23
+ Key key
24
+ if api_version.to_f < 5.1
25
+ Value value
26
+ else
27
+ type = case value
28
+ when TrueClass, FalseClass then 'MetadataBooleanValue';
29
+ when DateTime then 'MetadataDateTimeValue';
30
+ when Fixnum then 'MetadataNumberValue';
31
+ else 'MetadataStringValue'
32
+ end
33
+ TypedValue('xsi:type' => type) { Value value }
34
+ end
35
+ }
36
+ end
37
+ }
38
+ end.to_xml
39
+
40
+ request(
41
+ :body => body,
42
+ :expects => 202,
43
+ :headers => {'Content-Type' => 'application/vnd.vmware.vcloud.metadata+xml'},
44
+ :method => 'POST',
45
+ :parser => Fog::ToHashDocument.new,
46
+ :path => "vApp/#{id}/metadata/"
47
+ )
48
+ end
49
+ end
50
+ class Mock
51
+ def post_update_vapp_metadata(id, metadata={})
52
+ unless vm = data[:vms][id]
53
+ raise Fog::Compute::VcloudDirector::Forbidden.new(
54
+ 'This operation is denied.'
55
+ )
56
+ end
57
+
58
+ owner = {
59
+ :href => make_href("vApp/#{id}"),
60
+ :type => 'application/vnd.vmware.vcloud.vApp+xml'
61
+ }
62
+ task_id = enqueue_task(
63
+ "Updating Virtual Machine #{data[:vms][id][:name]}(#{id})", 'vappUpdateVm', owner,
64
+ :on_success => lambda do
65
+ metadata.each do |k,v|
66
+ data[:tags][id] ||= {}
67
+ data[:tags][id][k] = v
68
+ end
69
+ end
70
+ )
71
+ body = {
72
+ :xmlns => xmlns,
73
+ :xmlns_xsi => xmlns_xsi,
74
+ :xsi_schemaLocation => xsi_schema_location,
75
+ }.merge(task_body(task_id))
76
+
77
+ Excon::Response.new(
78
+ :status => 202,
79
+ :headers => {'Content-Type' => "#{body[:type]};version=#{api_version}"},
80
+ :body => body
81
+ )
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,52 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+ # Merge the metadata provided in the request with existing metadata.
6
+ #
7
+ # @param [String] id Object identifier of the vApp template.
8
+ # @param [Hash{String=>Boolean,DateTime,Fixnum,String}] metadata
9
+ # @return [Excon::Response]
10
+ # * body<~Hash>:
11
+ #
12
+ # @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/POST-UpdateVAppTemplateMetadata.html
13
+ # @since vCloud API version 1.5
14
+ def post_update_vapp_template_metadata(id, metadata={})
15
+ body = Nokogiri::XML::Builder.new do
16
+ attrs = {
17
+ :xmlns => 'http://www.vmware.com/vcloud/v1.5',
18
+ 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance'
19
+ }
20
+ Metadata(attrs) {
21
+ metadata.each do |key, value|
22
+ MetadataEntry {
23
+ Key key
24
+ if api_version.to_f < 5.1
25
+ Value value
26
+ else
27
+ type = case value
28
+ when TrueClass, FalseClass then 'MetadataBooleanValue';
29
+ when DateTime then 'MetadataDateTimeValue';
30
+ when Fixnum then 'MetadataNumberValue';
31
+ else 'MetadataStringValue'
32
+ end
33
+ TypedValue('xsi:type' => type) { Value value }
34
+ end
35
+ }
36
+ end
37
+ }
38
+ end.to_xml
39
+
40
+ request(
41
+ :body => body,
42
+ :expects => 202,
43
+ :headers => {'Content-Type' => 'application/vnd.vmware.vcloud.metadata+xml'},
44
+ :method => 'POST',
45
+ :parser => Fog::ToHashDocument.new,
46
+ :path => "vAppTemplate/#{id}/metadata/"
47
+ )
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,28 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+ # Upgrade the virtual hardware version of a VM to the highest supported
6
+ # virtual hardware version of the vDC that contains it.
7
+ #
8
+ # This operation is asynchronous and returns a task that you can
9
+ # monitor to track the progress of the request.
10
+ #
11
+ # @param [String] id Object identifier of the VM.
12
+ # @return [Excon::Response]
13
+ # * body<~Hash>:
14
+ #
15
+ # @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/POST-UpgradeHwVersion.html
16
+ # @since vCloud API version 5.1
17
+ def post_upgrade_hw_version(id)
18
+ request(
19
+ :expects => 202,
20
+ :method => 'POST',
21
+ :parser => Fog::ToHashDocument.new,
22
+ :path => "vApp/#{id}/action/upgradeHardwareVersion"
23
+ )
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,133 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+ # Create a disk.
6
+ #
7
+ # @param [String] id Object identifier of the vDC.
8
+ # @param [String] name The name of the disk.
9
+ # @param [Integer] size Size of the disk. For modify operation this is
10
+ # required only for the XSD validation it could not be changed.
11
+ # @param [Hash] options
12
+ # @option options [String] :operationKey Optional unique identifier to
13
+ # support idempotent semantics for create and delete operations.
14
+ # @option options [Integer] :busSubType Disk bus sub type.
15
+ # @option options [Integer] :busType Disk bus type.
16
+ # @option options [String] :Description Optional description.
17
+ # @return [Excon::Response]
18
+ # * body<~Hash>:
19
+ # * :href<~String> - The URI of the disk.
20
+ # * :type<~String> - The MIME type of the disk.
21
+ # * :id<~String> - The disk identifier, expressed in URN format.
22
+ # * :operationKey<~String> - Optional unique identifier to support
23
+ # idempotent semantics for create and delete operations.
24
+ # * :name<~String> - The name of the disk.
25
+ # * :status<~String> - Creation status of the disk.
26
+ # * :busSubType<~String> - Disk bus sub type.
27
+ # * :busType<~String> - Disk bus type.
28
+ # * :size<~String> - Size of the disk.
29
+ # * :Link:
30
+ # * :Description<~String> - Optional description.
31
+ # * :Tasks<~Hash>:
32
+ # * :StorageProfile<~Hash> - Storage profile of the disk.
33
+ # * :href<~String> - Contains the URI to the entity.
34
+ # * :name<~String> - Contains the name of the entity.
35
+ # * :type<~String> - Contains the type of the entity.
36
+ # * :Owner<~Hash> - Disk owner.
37
+ # * :type<~String> - The MIME type of the entity.
38
+ # * :User<~Hash> - Reference to the user who is the owner of this
39
+ # disk.
40
+ # * :href<~String> - Contains the URI to the entity.
41
+ # * :name<~String> - Contains the name of the entity.
42
+ # * :type<~String> - Contains the type of the entity.
43
+ #
44
+ # @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/POST-CreateDisk.html
45
+ # @since vCloud API version 5.1
46
+ def post_upload_disk(id, name, size, options={})
47
+ body = Nokogiri::XML::Builder.new do
48
+ DiskCreateParams(:xmlns => 'http://www.vmware.com/vcloud/v1.5') {
49
+ attrs = {
50
+ :name => name,
51
+ :size => size
52
+ }
53
+ attrs[:operationKey] = options[:operationKey] if options.key?(:operationKey)
54
+ attrs[:busSubType] = options[:busSubType] if options.key?(:busSubType)
55
+ attrs[:busType] = options[:busType] if options.key?(:busType)
56
+ Disk(attrs) {
57
+ if options.key?(:Description)
58
+ Description options[:Description]
59
+ end
60
+ if options.key?(:StorageProfile)
61
+ attrs = {
62
+ :href => options[:StorageProfile][:href]
63
+ }
64
+ StorageProfile(attrs)
65
+ end
66
+ }
67
+ }
68
+ end.to_xml
69
+
70
+ request(
71
+ :body => body,
72
+ :expects => 201,
73
+ :headers => {'Content-Type' => 'application/vnd.vmware.vcloud.diskCreateParams+xml'},
74
+ :method => 'POST',
75
+ :parser => Fog::ToHashDocument.new,
76
+ :path => "vdc/#{id}/disk"
77
+ )
78
+ end
79
+ end
80
+
81
+ class Mock
82
+ def post_upload_disk(id, name, size, options={})
83
+ unless size.to_s =~ /^\d+$/
84
+ raise Fog::Compute::VcloudDirector::BadRequest.new(
85
+ "validation error on field 'diskSpec.sizeBytes': must be greater than or equal to 0"
86
+ )
87
+ end
88
+ unless data[:vdcs][id]
89
+ raise Fog::Compute::VcloudDirector::Forbidden.new(
90
+ 'No access to entity "(com.vmware.vcloud.entity.vdc:%s)".' % id
91
+ )
92
+ end
93
+
94
+ disk_id = uuid
95
+
96
+ owner = {
97
+ :href => make_href("disk/#{disk_id}"),
98
+ :type => 'application/vnd.vmware.vcloud.disk+xml'
99
+ }
100
+ task_id = enqueue_task(
101
+ "Creating Disk #{name}(#{disk_id})", 'vdcCreateDisk', owner,
102
+ :on_success => lambda do
103
+ data[:disks][disk_id][:status] = 1
104
+ end
105
+ )
106
+
107
+ disk = {
108
+ :description => options[:Description],
109
+ :name => name,
110
+ :size => size.to_i,
111
+ :status => 0,
112
+ :tasks => [task_id],
113
+ :vdc_id => id,
114
+ :vdc_storage_class => data[:vdc_storage_classes].find {|k,v| v[:default]}.first
115
+ }
116
+ data[:disks][disk_id] = disk
117
+
118
+ body = {
119
+ :xmlns => xmlns,
120
+ :xmlns_xsi => xmlns_xsi,
121
+ :xsi_schemaLocation => xsi_schema_location
122
+ }.merge(disk_body(disk_id))
123
+
124
+ Excon::Response.new(
125
+ :status => 201,
126
+ :headers => {'Content-Type' => "#{body[:type]};version=#{api_version}"},
127
+ :body => body
128
+ )
129
+ end
130
+ end
131
+ end
132
+ end
133
+ end