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,21 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+ require 'fog/vcloud_director/generators/compute/create_snapshot'
6
+ def post_create_snapshot(id, options={})
7
+ body = Fog::Generators::Compute::VcloudDirector::CreateSnapshot.new(options).generate_xml
8
+
9
+ request(
10
+ :body => body,
11
+ :expects => 202,
12
+ :headers => { 'Content-Type' => 'application/vnd.vmware.vcloud.createSnapshotParams+xml' },
13
+ :method => 'POST',
14
+ :parser => Fog::ToHashDocument.new,
15
+ :path => "vApp/#{id}/action/createSnapshot"
16
+ )
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,51 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+ # Deploy a vApp or VM.
6
+ #
7
+ # Deployment allocates all resources for the vApp and the virtual
8
+ # machines 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 [Integer] :deploymentLeaseSeconds Lease in seconds
16
+ # for deployment. A value of 0 is replaced by the organization
17
+ # default deploymentLeaseSeconds value.
18
+ # @option options [Boolean] :forceCustomization Used to specify whether
19
+ # to force customization on deployment, if not set default value is
20
+ # false.
21
+ # @option options [Boolean] :powerOn Used to specify whether to power
22
+ # on vApp on deployment, if not set default value is true.
23
+ # @return [Excon::Response]
24
+ # * body<~Hash>:
25
+ #
26
+ # @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/POST-DeployVApp.html
27
+ # @since vCloud API version 0.9
28
+ def post_deploy_vapp(id, options={})
29
+ body = Nokogiri::XML::Builder.new do
30
+ attrs = {
31
+ :xmlns => 'http://www.vmware.com/vcloud/v1.5'
32
+ }
33
+ attrs[:deploymentLeaseSeconds] = options[:deploymentLeaseSeconds] if options.key?(:deploymentLeaseSeconds)
34
+ attrs[:forceCustomization] = options[:forceCustomization] if options.key?(:forceCustomization)
35
+ attrs[:powerOn] = options[:powerOn] if options.key?(:powerOn)
36
+ DeployVAppParams(attrs)
37
+ end.to_xml
38
+
39
+ request(
40
+ :body => body,
41
+ :expects => 202,
42
+ :headers => {'Content-Type' => 'application/vnd.vmware.vcloud.deployVAppParams+xml'},
43
+ :method => 'POST',
44
+ :parser => Fog::ToHashDocument.new,
45
+ :path => "vApp/#{id}/action/deploy"
46
+ )
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,39 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+ # Detach a disk from a VM.
6
+ #
7
+ # This operation is asynchronous and returns a task that you can
8
+ # monitor to track the progress of the request.
9
+ #
10
+ # @param [String] id Object identifier of the VM.
11
+ # @param [String] disk_id Object identifier of the disk.
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-DetachDisk.html
16
+ # @since vCloud API version 5.1
17
+ def post_detach_disk(id, disk_id)
18
+ body = Nokogiri::XML::Builder.new do
19
+ attrs = {
20
+ :xmlns => 'http://www.vmware.com/vcloud/v1.5'
21
+ }
22
+ DiskAttachOrDetachParams(attrs) {
23
+ Disk(:href => "#{end_point}disk/#{disk_id}")
24
+ }
25
+ end.to_xml
26
+
27
+ request(
28
+ :body => body,
29
+ :expects => 202,
30
+ :headers => {'Content-Type' => 'application/vnd.vmware.vcloud.diskAttachOrDetachParams+xml'},
31
+ :method => 'POST',
32
+ :parser => Fog::ToHashDocument.new,
33
+ :path => "vApp/#{id}/disk/action/detach"
34
+ )
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,27 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+ # Hide hardware-assisted CPU virtualization from guest OS.
6
+ #
7
+ # This operation is asynchronous and returns a task that you can
8
+ # monitor to track the progress of the request.
9
+ #
10
+ # @param [String] id Object identifier of the VM.
11
+ # @return [Excon::Response]
12
+ # * body<~Hash>:
13
+ #
14
+ # @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/POST-DisableNestedHv.html
15
+ # @since vCloud API version 5.1
16
+ def post_disable_nested_hv(id)
17
+ request(
18
+ :expects => 202,
19
+ :method => 'POST',
20
+ :parser => Fog::ToHashDocument.new,
21
+ :path => "vApp/#{id}/action/disableNestedHypervisor"
22
+ )
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,24 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+ # Disable a vApp template for download.
6
+ #
7
+ # @param [String] id Object identifier of the VM.
8
+ # @return [Excon::Response]
9
+ # * body<~Hash>:
10
+ #
11
+ # @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/POST-DisableVAppTemplateDownload.html
12
+ # @since vCloud API version 0.9
13
+ def post_disable_vapp_template_download(id)
14
+ request(
15
+ :expects => 202,
16
+ :method => 'POST',
17
+ :parser => Fog::ToHashDocument.new,
18
+ :path => "vAppTemplate/#{id}/action/disableDownload"
19
+ )
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,30 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+ # Discard suspended state of a vApp or VM.
6
+ #
7
+ # Discarding the suspended state of a vApp discards the suspended state
8
+ # of all VMs 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 or VM.
14
+ # @return [Excon::Response]
15
+ # * body<~Hash>:
16
+ #
17
+ # @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/POST-DiscardVAppState.html
18
+ # @since vCloud API version 0.9
19
+ def post_discard_vapp_state(id)
20
+ request(
21
+ :expects => 202,
22
+ :method => 'POST',
23
+ :parser => Fog::ToHashDocument.new,
24
+ :path => "vApp/#{id}/action/discardSuspendedState"
25
+ )
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,39 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+ # Eject virtual media.
6
+ #
7
+ # This operation is asynchronous and returns a task that you can
8
+ # monitor to track the progress of the request.
9
+ #
10
+ # @param [String] id Object identifier of the VM.
11
+ # @param [String] media_id Object identifier of the media object.
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-EjectCdRom.html
16
+ # @since vCloud API version 0.9
17
+ def post_eject_cd_rom(id, media_id)
18
+ body = Nokogiri::XML::Builder.new do
19
+ attrs = {
20
+ :xmlns => 'http://www.vmware.com/vcloud/v1.5'
21
+ }
22
+ MediaInsertOrEjectParams(attrs) {
23
+ Media(:href => "#{end_point}media/#{media_id}")
24
+ }
25
+ end.to_xml
26
+
27
+ request(
28
+ :body => body,
29
+ :expects => 202,
30
+ :headers => {'Content-Type' => 'application/vnd.vmware.vcloud.mediaInsertOrEjectParams+xml'},
31
+ :method => 'POST',
32
+ :parser => Fog::ToHashDocument.new,
33
+ :path => "vApp/#{id}/media/action/ejectMedia"
34
+ )
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,27 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+ # Expose hardware-assisted CPU virtualization to guest OS.
6
+ #
7
+ # This operation is asynchronous and returns a task that you can
8
+ # monitor to track the progress of the request.
9
+ #
10
+ # @param [String] id Object identifier of the VM.
11
+ # @return [Excon::Response]
12
+ # * body<~Hash>:
13
+ #
14
+ # @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/POST-EnableNestedHv.html
15
+ # @since vCloud API version 5.1
16
+ def post_enable_nested_hv(id)
17
+ request(
18
+ :expects => 202,
19
+ :method => 'POST',
20
+ :parser => Fog::ToHashDocument.new,
21
+ :path => "vApp/#{id}/action/enableNestedHypervisor"
22
+ )
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,24 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+ # Enable a vApp template for download.
6
+ #
7
+ # @param [String] id Object identifier of the VM.
8
+ # @return [Excon::Response]
9
+ # * body<~Hash>:
10
+ #
11
+ # @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/POST-EnableVAppTemplateDownload.html
12
+ # @since vCloud API version 0.9
13
+ def post_enable_vapp_template_download(id)
14
+ request(
15
+ :expects => 202,
16
+ :method => 'POST',
17
+ :parser => Fog::ToHashDocument.new,
18
+ :path => "vAppTemplate/#{id}/action/enableDownload"
19
+ )
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,26 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+ # Place the vApp in maintenance mode.
6
+ #
7
+ # When a vApp is in maintenance mode, it is read-only to users. Only a
8
+ # system administrator can modify it. User-initiated tasks that are
9
+ # running when the vApp enters maintenance mode continue to run.
10
+ #
11
+ # @param [String] id Object identifier of the vApp.
12
+ # @return [Excon::Response]
13
+ #
14
+ # @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/POST-EnterMaintenanceMode.html
15
+ # @since vCloud API version 1.5
16
+ def post_enter_maintenance_mode(id)
17
+ request(
18
+ :expects => 204,
19
+ :method => 'POST',
20
+ :path => "vApp/#{id}/action/enterMaintenanceMode"
21
+ )
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,22 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+ # Take the vApp out of maintenance mode.
6
+ #
7
+ # @param [String] id Object identifier of the vApp.
8
+ # @return [Excon::Response]
9
+ #
10
+ # @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/POST-ExitMaintenanceMode.html
11
+ # @since vCloud API version 1.5
12
+ def post_exit_maintenance_mode(id)
13
+ request(
14
+ :expects => 204,
15
+ :method => 'POST',
16
+ :path => "vApp/#{id}/action/exitMaintenanceMode"
17
+ )
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,39 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+ # Insert virtual media.
6
+ #
7
+ # This operation is asynchronous and returns a task that you can
8
+ # monitor to track the progress of the request.
9
+ #
10
+ # @param [String] id Object identifier of the VM.
11
+ # @param [String] media_id Object identifier of the media object.
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-InsertCdRom.html
16
+ # @since vCloud API version 0.9
17
+ def post_insert_cd_rom(id, media_id)
18
+ body = Nokogiri::XML::Builder.new do
19
+ attrs = {
20
+ :xmlns => 'http://www.vmware.com/vcloud/v1.5'
21
+ }
22
+ MediaInsertOrEjectParams(attrs) {
23
+ Media(:href => "#{end_point}media/#{media_id}")
24
+ }
25
+ end.to_xml
26
+
27
+ request(
28
+ :body => body,
29
+ :expects => 202,
30
+ :headers => {'Content-Type' => 'application/vnd.vmware.vcloud.mediaInsertOrEjectParams+xml'},
31
+ :method => 'POST',
32
+ :parser => Fog::ToHashDocument.new,
33
+ :path => "vApp/#{id}/media/action/insertMedia"
34
+ )
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,27 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+ # Install VMware Tools on a running VM.
6
+ #
7
+ # This operation is asynchronous and returns a task that you can
8
+ # monitor to track the progress of the request.
9
+ #
10
+ # @param [String] id Object identifier of the VM.
11
+ # @return [Excon::Response]
12
+ # * body<~Hash>:
13
+ #
14
+ # @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/POST-InstallVMwareTools.html
15
+ # @since vCloud API version 1.5
16
+ def post_install_vmware_tools(id)
17
+ request(
18
+ :expects => 202,
19
+ :method => 'POST',
20
+ :parser => Fog::ToHashDocument.new,
21
+ :path => "vApp/#{id}/action/installVMwareTools"
22
+ )
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,196 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+ # Create a vApp from a vApp template.
6
+ #
7
+ # The response includes a Task element. You can monitor the task to to
8
+ # track the creation of the vApp.
9
+ #
10
+ # @note This may not work at all or may work only under certain
11
+ # circumstances.
12
+ #
13
+ # @param [String] id Object identifier of the vDC.
14
+ # @param [String] vapp_template_id Object identifier of the vApp
15
+ # template.
16
+ # @param [String] name
17
+ # @param [Hash] options
18
+ # @option options [Boolean] :deploy True if the vApp should be deployed
19
+ # at instantiation. Defaults to true.
20
+ # @option options [Boolean] :powerOn True if the vApp should be
21
+ # powered-on at instantiation. Defaults to true.
22
+ # @option options [String] :Description Optional description.
23
+ # @option options [Hash] :InstantiationParams Instantiation parameters
24
+ # for the composed vApp.
25
+ # * :LeaseSettingsSection<~Hasn>:
26
+ # * :DeploymentLeaseTimeInSeconds<~Integer> - Deployment lease in
27
+ # seconds.
28
+ # * :StorageLeaseTimeInSeconds<~Integer> - Storage lease in
29
+ # seconds.
30
+ # * :DeploymentLeaseExpiration<~Integer> - Expiration date/time of
31
+ # deployment lease.
32
+ # * :StorageLeaseExpiration<~Integer> - Expiration date/time of
33
+ # storage lease.
34
+ # * :NetworkConfigSection<~Hash>:
35
+ # * :NetworkConfig<~Hash>:
36
+ # * :networkName<~String> - The name of the vApp network.
37
+ # * :Configuration<~Hash>:
38
+ # * :ParentNetwork<~Hash>:
39
+ # * :href<~String> -
40
+ # * :FenceMode<~String> - Isolation type of the network.
41
+ # @option options [Boolean] :IsSourceDelete Set to true to delete the
42
+ # source object after the operation completes.
43
+ # @option options [Boolean] :AllEULAsAccepted True confirms acceptance
44
+ # of all EULAs in a vApp template.
45
+ # @return [Excon::Response]
46
+ # * body<~Hash>:
47
+ #
48
+ # @raise Fog::Compute::VcloudDirector::DuplicateName
49
+ #
50
+ # @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/POST-InstantiateVAppTemplate.html
51
+ # @since vCloud API version 0.9
52
+ def post_instantiate_vapp_template(id, vapp_template_id, name, options={})
53
+ body = Nokogiri::XML::Builder.new do
54
+ attrs = {
55
+ 'xmlns' => 'http://www.vmware.com/vcloud/v1.5',
56
+ 'xmlns:ovf' => 'http://schemas.dmtf.org/ovf/envelope/1',
57
+ :name => name
58
+ }
59
+ attrs[:deploy] = options[:deploy] if options.key?(:deploy)
60
+ attrs[:powerOn] = options[:powerOn] if options.key?(:powerOn)
61
+ InstantiateVAppTemplateParams(attrs) {
62
+ if options.key?(:Description)
63
+ Description options[:Description]
64
+ end
65
+ if instantiation_params = options[:InstantiationParams]
66
+ InstantiationParams {
67
+ if section = instantiation_params[:LeaseSettingsSection]
68
+ LeaseSettingsSection {
69
+ self['ovf'].Info 'Lease settings section'
70
+ if section.key?(:DeploymentLeaseInSeconds)
71
+ DeploymentLeaseInSeconds section[:DeploymentLeaseInSeconds]
72
+ end
73
+ if section.key?(:StorageLeaseInSeconds)
74
+ StorageLeaseInSeconds section[:StorageLeaseInSeconds]
75
+ end
76
+ if section.key?(:DeploymentLeaseExpiration)
77
+ DeploymentLeaseExpiration section[:DeploymentLeaseExpiration].strftime('%Y-%m-%dT%H:%M:%S%z')
78
+ end
79
+ if section.key?(:StorageLeaseExpiration)
80
+ StorageLeaseExpiration section[:StorageLeaseExpiration].strftime('%Y-%m-%dT%H:%M:%S%z')
81
+ end
82
+ }
83
+ end
84
+ if section = instantiation_params[:NetworkConfigSection]
85
+ NetworkConfigSection {
86
+ self['ovf'].Info 'Configuration parameters for logical networks'
87
+ if network_configs = section[:NetworkConfig]
88
+ network_configs = [network_configs] if network_configs.is_a?(Hash)
89
+ network_configs.each do |network_config|
90
+ NetworkConfig(:networkName => network_config[:networkName]) {
91
+ if configuration = network_config[:Configuration]
92
+ Configuration {
93
+ ParentNetwork(configuration[:ParentNetwork])
94
+ FenceMode configuration[:FenceMode]
95
+ }
96
+ end
97
+ }
98
+ end
99
+ end
100
+ }
101
+ end
102
+ }
103
+ end
104
+ Source(:href => "#{end_point}vAppTemplate/#{vapp_template_id}")
105
+ if options.key?(:IsSourceDelete)
106
+ IsSourceDelete options[:IsSourceDelete]
107
+ end
108
+ if options.key?(:AllEULAsAccepted)
109
+ AllEULAsAccepted options[:AllEULAsAccepted]
110
+ end
111
+ }
112
+ end.to_xml
113
+
114
+ begin
115
+ request(
116
+ :body => body,
117
+ :expects => 201,
118
+ :headers => {'Content-Type' => 'application/vnd.vmware.vcloud.instantiateVAppTemplateParams+xml'},
119
+ :method => 'POST',
120
+ :parser => Fog::ToHashDocument.new,
121
+ :path => "vdc/#{id}/action/instantiateVAppTemplate"
122
+ )
123
+ rescue Fog::Compute::VcloudDirector::BadRequest => e
124
+ if e.minor_error_code == 'DUPLICATE_NAME'
125
+ raise Fog::Compute::VcloudDirector::DuplicateName.new(e.message)
126
+ end
127
+ raise
128
+ end
129
+ end
130
+ end
131
+
132
+ class Mock
133
+
134
+ def post_instantiate_vapp_template(vdc_id, vapp_template_id, name, options={})
135
+ unless data[:vdcs][vdc_id]
136
+ raise Fog::Compute::VcloudDirector::Forbidden.new(
137
+ "No access to entity \"(com.vmware.vcloud.entity.vdc:#{vdc_id})\"."
138
+ )
139
+ end
140
+
141
+ type = 'vApp'
142
+ vapp_id = "vapp-#{uuid}"
143
+ vm_id = "vm-#{uuid}"
144
+
145
+ data[:vapps][vapp_id] = {
146
+ :name => name,
147
+ :vdc_id => vdc_id,
148
+ :description => options.fetch(:description, "vApp created from #{vapp_template_id}"),
149
+ :networks => [],
150
+ :metadata => {:'vapp_key' => 'vapp_value'},
151
+ :status => "0",
152
+ }
153
+
154
+ data[:vms][vm_id] = {
155
+ :name => 'vm-template-name',
156
+ :parent_vapp => vapp_id,
157
+ :memory_in_mb => "1024",
158
+ :cpu_count => "2",
159
+ :metadata => {:'vm_key' => 'vm_value'},
160
+ :nics => [
161
+ {
162
+ :network_name => 'Default Network',
163
+ :mac_address => "00:50:56:00:00:00",
164
+ :ip_address => "192.168.0.1",
165
+ }
166
+ ],
167
+ }
168
+
169
+ owner = {
170
+ :href => make_href("#{type}/#{vapp_id}"),
171
+ :type => "application/vnd.vmware.vcloud.#{type}+xml"
172
+ }
173
+ task_id = enqueue_task(
174
+ "Creating Virtual Application #{name}(#{vapp_id})", 'vdcInstantiateVapp', owner,
175
+ :on_success => lambda do
176
+ data[:vapps][vapp_id][:status] = "8"
177
+ end
178
+ )
179
+
180
+ body = get_vapp(vapp_id).body
181
+
182
+ body[:Tasks] = {
183
+ :Task => task_body(task_id)
184
+ }
185
+
186
+ Excon::Response.new(
187
+ :status => 201,
188
+ :headers => {'Content-Type' => "#{body[:type]};version=#{api_version}"},
189
+ :body => body
190
+ )
191
+ end
192
+
193
+ end
194
+ end
195
+ end
196
+ end