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,173 @@
1
+ require 'builder'
2
+
3
+ module Fog
4
+ module Compute
5
+ class VcloudDirector
6
+ class Real
7
+ require 'fog/vcloud_director/generators/compute/instantiate_vapp_template_params'
8
+ # Create a vApp from a vApp template.
9
+ #
10
+ # The response includes a Task element. You can monitor the task to to
11
+ # track the creation of the vApp.
12
+ #
13
+ # @param [String] vapp_name
14
+ # @param [String] template_id
15
+ # @param [Hash] options
16
+ # @return [Excon::Response]
17
+ # * body<~Hash>:
18
+ #
19
+ # @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/POST-InstantiateVAppTemplate.html
20
+ # @since vCloud API version 0.9
21
+ def instantiate_vapp_template(vapp_name, template_id, options={})
22
+ params = populate_uris(options.merge(:vapp_name => vapp_name, :template_id => template_id))
23
+
24
+ # @todo Move all the logic to a generator.
25
+ data = generate_instantiate_vapp_template_request(params)
26
+
27
+ request(
28
+ :body => data,
29
+ :expects => 201,
30
+ :headers => {'Content-Type' => 'application/vnd.vmware.vcloud.instantiateVAppTemplateParams+xml'},
31
+ :method => 'POST',
32
+ :parser => Fog::ToHashDocument.new,
33
+ :path => "vdc/#{params[:vdc_id]}/action/instantiateVAppTemplate"
34
+ )
35
+ end
36
+
37
+ private
38
+
39
+ def populate_uris(options = {})
40
+ options[:vdc_id] || raise("vdc_id option is required")
41
+ options[:vdc_uri] = vdc_end_point(options[:vdc_id])
42
+ options[:network_uri] = network_end_point(options[:network_id]) if options[:network_id]
43
+ options[:template_uri] = vapp_template_end_point(options[:template_id]) || raise("template_id option is required")
44
+ options
45
+ end
46
+
47
+ def generate_instantiate_vapp_template_request(options ={})
48
+
49
+ #overriding some params so they work with new standardised generator
50
+ options[:InstantiationParams] =
51
+ {
52
+ :NetworkConfig =>
53
+ [{
54
+ :networkName => options[:network_name],
55
+ :networkHref => options[:network_uri],
56
+ :fenceMode => 'bridged'
57
+ }]
58
+ } unless options[:InstantiationParams]
59
+ options[:name] = options.delete(:vapp_name) if options[:vapp_name]
60
+ options[:Description] = options.delete(:description) unless options[:Description]
61
+ if options[:vms_config] then
62
+ options[:source_vms] = options.delete(:vms_config)
63
+ options[:source_vms].each_with_index {|vm, i|options[:source_vms][i][:StorageProfileHref] = options[:source_vms][i].delete(:storage_profile_href) }
64
+ end
65
+ options[:Source] = options.delete(:template_uri) if options[:template_uri]
66
+
67
+
68
+
69
+
70
+ Fog::Generators::Compute::VcloudDirector::InstantiateVappTemplateParams.new(options).generate_xml
71
+
72
+
73
+
74
+ end
75
+
76
+ def xmlns
77
+ {
78
+ 'xmlns' => "http://www.vmware.com/vcloud/v1.5",
79
+ "xmlns:ovf" => "http://schemas.dmtf.org/ovf/envelope/1",
80
+ "xmlns:xsi" => "http://www.w3.org/2001/XMLSchema-instance",
81
+ "xmlns:xsd" => "http://www.w3.org/2001/XMLSchema"
82
+ }
83
+ end
84
+
85
+ def vdc_end_point(vdc_id = nil)
86
+ end_point + ( vdc_id ? "vdc/#{vdc_id}" : "vdc" )
87
+ end
88
+
89
+ def network_end_point(network_id = nil)
90
+ end_point + ( network_id ? "network/#{network_id}" : "network" )
91
+ end
92
+
93
+ def vapp_template_end_point(vapp_template_id = nil)
94
+ end_point + ( vapp_template_id ? "vAppTemplate/#{vapp_template_id}" : "vAppTemplate" )
95
+ end
96
+
97
+ def endpoint
98
+ end_point
99
+ end
100
+ end
101
+
102
+ class Mock
103
+ # Assume the template is a single VM with one network interface and one disk.
104
+ def instantiate_vapp_template(vapp_name, template_id, options={})
105
+ unless data[:catalog_items].values.find {|i| i[:template_id] == template_id}
106
+ raise Fog::Compute::VcloudDirector::Forbidden.new(
107
+ 'No such template.'
108
+ )
109
+ end
110
+ unless vdc = data[:vdcs][options[:vdc_id]]
111
+ raise Fog::Compute::VcloudDirector::Forbidden.new(
112
+ 'No such VDC.'
113
+ )
114
+ end
115
+
116
+ vapp_uuid = uuid
117
+ vapp_id = "vapp-#{vapp_uuid}"
118
+ owner = {
119
+ :href => make_href("vApp/#{vapp_id}"),
120
+ :type => 'application/vnd.vmware.vcloud.vm+xml'
121
+ }
122
+ task_id = enqueue_task(
123
+ "Creating Virtual Application #{vapp_name}(#{vapp_uuid})", 'vdcInstantiateVapp', owner,
124
+ :on_success => lambda do
125
+ # Add to the VDC
126
+ data[:vapps][vapp_id] = {
127
+ :name => vapp_name,
128
+ :vdc_id => options[:vdc_id],
129
+ :description => 'From Template',
130
+ :networks => [
131
+ {:parent_id => default_network_uuid }
132
+ ]
133
+ }
134
+ vm_id = "vm-#{uuid}"
135
+ data[:vms][vm_id] = {
136
+ :name => vapp_name,
137
+ :parent_vapp => vapp_id,
138
+ :nics => [
139
+ {
140
+ :network_name => 'Default Network',
141
+ :mac_address => '7d:68:a2:a0:a4:f8',
142
+ :ip_address => nil
143
+ }
144
+ ]
145
+ }
146
+ data[:disks][uuid] = {
147
+ :name => 'Hard Disk 1',
148
+ :capacity => 10240,
149
+ :parent_vm => vm_id
150
+ }
151
+ end
152
+ )
153
+ body = {
154
+ :href => make_href("vApp/#{vapp_id}"),
155
+ :Tasks => {
156
+ :Task => {
157
+ :xmlns => xmlns,
158
+ :xmlns_xsi => xmlns_xsi,
159
+ :xsi_schemaLocation => xsi_schema_location,
160
+ }.merge(task_body(task_id))
161
+ }
162
+ }
163
+
164
+ Excon::Response.new(
165
+ :status => 202,
166
+ :headers => {'Content-Type' => "#{body[:type]};version=#{api_version}"},
167
+ :body => body
168
+ )
169
+ end
170
+ end
171
+ end
172
+ end
173
+ end
@@ -0,0 +1,27 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+ # Retrieve a screen ticket that you can use with the VMRC browser
6
+ # plug-in to gain access to the console of a running VM.
7
+ #
8
+ # @param [String] id Object identifier of the VM.
9
+ # @return [Excon::Response]
10
+ # * body<~Hash>:
11
+ #
12
+ # @raise [Fog::Compute::VcloudDirector::Conflict]
13
+ #
14
+ # @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/POST-AcquireTicket.html
15
+ # @since vCloud API version 0.9
16
+ def post_acquire_ticket(id)
17
+ request(
18
+ :expects => 200,
19
+ :method => 'POST',
20
+ :parser => Fog::ToHashDocument.new,
21
+ :path => "vApp/#{id}/screen/action/acquireTicket"
22
+ )
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,36 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+ # Answer a question being asked by a VM.
6
+ #
7
+ # @param [String] id Object identifier of the VM.
8
+ # @param [Integer] choice_id Choice ID of this answer.
9
+ # @param [String] question_id Question ID of the question.
10
+ # @return [Excon::Response]
11
+ #
12
+ # @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/POST-AnswerVmPendingQuestion.html
13
+ # @since vCloud API version 0.9
14
+ def post_answer_pending_vm_question(id, choice_id, question_id)
15
+ body = Nokogiri::XML::Builder.new do
16
+ attrs = {
17
+ :xmlns => 'http://www.vmware.com/vcloud/v1.5'
18
+ }
19
+ VmAnswerQuestion(attrs) {
20
+ ChoiceId choice_id
21
+ QuestionId question_id
22
+ }
23
+ end.to_xml
24
+
25
+ request(
26
+ :body => body,
27
+ :expects => 204, # this might be wrong
28
+ :headers => {'Content-Type' => 'application/vnd.vmware.vcloud.vmPendingAnswer+xml'},
29
+ :method => 'POST',
30
+ :path => "vApp/#{id}/quesiton/action/answer"
31
+ )
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,51 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+ # Attach a disk to 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
+ # @param [Hash] options
13
+ # @option options [Integer] :BusNumber Bus number on which to place the
14
+ # disk controller. If empty or missing, the system assigns a bus
15
+ # number and a unit number on that bus.
16
+ # @option options [Integer] :BusNumber Unit number (slot) on the bus
17
+ # specified by :BusNumber. Ignored if :BusNumber is empty or missing.
18
+ # @return [Excon::Response]
19
+ # * body<~Hash>:
20
+ #
21
+ # @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/POST-AttachDisk.html
22
+ # @since vCloud API version 5.1
23
+ def post_attach_disk(id, disk_id, options={})
24
+ body = Nokogiri::XML::Builder.new do
25
+ attrs = {
26
+ :xmlns => 'http://www.vmware.com/vcloud/v1.5'
27
+ }
28
+ DiskAttachOrDetachParams(attrs) {
29
+ Disk(:href => "#{end_point}disk/#{disk_id}")
30
+ if options.key?(:BusNumber)
31
+ BusNumber options[:BusNumber]
32
+ end
33
+ if options.key?(:UnitNumber)
34
+ BusNumber options[:UnitNumber]
35
+ end
36
+ }
37
+ end.to_xml
38
+
39
+ request(
40
+ :body => body,
41
+ :expects => 202,
42
+ :headers => {'Content-Type' => 'application/vnd.vmware.vcloud.diskAttachOrDetachParams+xml'},
43
+ :method => 'POST',
44
+ :parser => Fog::ToHashDocument.new,
45
+ :path => "vApp/#{id}/disk/action/attach"
46
+ )
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,43 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+ extend Fog::Deprecation
6
+ deprecate :post_task_cancel, :post_cancel_task
7
+
8
+ # Cancel a task.
9
+ #
10
+ # @param [String] id Object identifier of the task.
11
+ # @return [Excon::Response]
12
+ #
13
+ # @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/POST-CancelTask.html
14
+ # @since vCloud API version 1.5
15
+ def post_cancel_task(id)
16
+ request(
17
+ :expects => 204,
18
+ :method => 'POST',
19
+ :path => "task/#{id}/action/cancel"
20
+ )
21
+ end
22
+ end
23
+
24
+ class Mock
25
+ def post_cancel_task(id)
26
+ unless task = data[:tasks][id]
27
+ raise Fog::Compute::VcloudDirector::Forbidden.new(
28
+ 'No access to entity "com.vmware.vcloud.entity.task:%s"' % id
29
+ )
30
+ end
31
+
32
+ # @note Tasks don't actually get cancelled (confirmed VCloud Director
33
+ # bug) so we'll emulate that. Set the flag and we're done!
34
+ task[:cancel_requested] = true
35
+
36
+ Excon::Response.new(
37
+ :status => 204
38
+ )
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,70 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+ # Create a vApp template from a vApp.
6
+ #
7
+ # The response includes a Task element. You can monitor the task to to
8
+ # track the creation of the vApp template.
9
+ #
10
+ # @param [String] vdc_id Object identifier of the vDC.
11
+ # @param [String] name Name of the vApp template.
12
+ # @param [String] source_id Object identifier of the vApp to capture.
13
+ # @param [Hash] options
14
+ # @option options [String] :Description Optional description.
15
+ # @option options [Hash] :LeaseSettingsSection
16
+ # * :StorageLeaseInSeconds<~Integer> - Storage lease in seconds.
17
+ # @option options [Hash] :CustomizationSection
18
+ # * :goldMaster<~Boolean> - True if this template is a gold master.
19
+ # * :CustomizeOnInstantiate<~Boolean> - True if instantiating this
20
+ # template applies customization settings. Otherwise, instantiation
21
+ # creates an identical copy.
22
+ # @return [Excon::Response]
23
+ # * body<~Hash>:
24
+ #
25
+ # @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/POST-CaptureVApp.html
26
+ # @since vCloud API version 0.9
27
+ def post_capture_vapp(vdc_id, name, source_id, options={})
28
+ body = Nokogiri::XML::Builder.new do
29
+ attrs = {
30
+ :xmlns => 'http://www.vmware.com/vcloud/v1.5',
31
+ 'xmlns:ovf' => 'http://schemas.dmtf.org/ovf/envelope/1',
32
+ :name => name
33
+ }
34
+ CaptureVAppParams(attrs) {
35
+ if options.key?(:Description)
36
+ Description options[:Description]
37
+ end
38
+ Source(:href => "#{end_point}vApp/#{source_id}")
39
+ if section = options[:LeaseSettingsSection]
40
+ LeaseSettingsSection {
41
+ self['ovf'].Info 'Lease settings section'
42
+ if section.key?(:StorageLeaseInSeconds)
43
+ StorageLeaseInSeconds section[:StorageLeaseInSeconds]
44
+ end
45
+ }
46
+ end
47
+ if section = options[:CustomizationSection]
48
+ attrs = {}
49
+ attrs[:goldMaster] = section[:goldMaster] if section.key?(:goldMaster)
50
+ CustomizationSection(attrs) {
51
+ self['ovf'].Info 'VApp template customization section'
52
+ CustomizeOnInstantiate section[:CustomizeOnInstantiate]
53
+ }
54
+ end
55
+ }
56
+ end.to_xml
57
+
58
+ request(
59
+ :body => body,
60
+ :expects => 201,
61
+ :headers => {'Content-Type' => 'application/vnd.vmware.vcloud.captureVAppParams+xml'},
62
+ :method => 'POST',
63
+ :parser => Fog::ToHashDocument.new,
64
+ :path => "vdc/#{vdc_id}/action/captureVApp"
65
+ )
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,28 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+ # Perform storage profile compliance check on a VM.
6
+ #
7
+ # This operation is asynchronous and return a task. When the task
8
+ # completes, the compliance check on the VM has been completed and the
9
+ # results can be retrieved.
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-CheckVmCompliance.html
16
+ # @since vCloud API version 5.1
17
+ def post_check_vm_compliance(id)
18
+ request(
19
+ :expects => 202,
20
+ :method => 'POST',
21
+ :parser => Fog::ToHashDocument.new,
22
+ :path => "vApp/#{id}/action/checkCompliance"
23
+ )
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,102 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+ # Create a copy of a media object.
6
+ #
7
+ # The response includes a Task element. You can monitor the task to to
8
+ # track the creation of the vApp template.
9
+ #
10
+ # @param [String] vdc_id Object identifier of the vDC.
11
+ # @param [String] source_id Object identifier of the source media
12
+ # object.
13
+ # @param [Hash] options
14
+ # @option options [String] :Description Optional description.
15
+ # @option options [Boolean] :IsSourceDelete A value of true deletes the
16
+ # Source object after successful completion of the copy operation.
17
+ # Defaults to false if empty or missing.
18
+ # @return [Excon::Response]
19
+ # * body<~Hash>:
20
+ #
21
+ # @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/POST-CloneMedia.html
22
+ # @since vCloud API version 0.9
23
+ def post_clone_media(vdc_id, source_id, options={})
24
+ body = Nokogiri::XML::Builder.new do
25
+ attrs = {
26
+ :xmlns => 'http://www.vmware.com/vcloud/v1.5'
27
+ }
28
+ CloneMediaParams(attrs) {
29
+ if options.key?(:Description)
30
+ Description options[:Description]
31
+ end
32
+ Source(:href => "#{end_point}media/#{source_id}")
33
+ if options.key?(:IsSourceDelete)
34
+ IsSourceDelete options[:IsSourceDelete]
35
+ end
36
+ }
37
+ end.to_xml
38
+
39
+ response = request(
40
+ :body => body,
41
+ :expects => 201,
42
+ :headers => {'Content-Type' => 'application/vnd.vmware.vcloud.cloneMediaParams+xml'},
43
+ :method => 'POST',
44
+ :parser => Fog::ToHashDocument.new,
45
+ :path => "vdc/#{vdc_id}/action/cloneMedia"
46
+ )
47
+ ensure_list! response.body, :Files, :File
48
+ response
49
+ end
50
+ end
51
+
52
+ class Mock
53
+ def post_clone_media(vdc_id, source_id, options={})
54
+ # TODO: check this happens.
55
+ unless source_media = data[:medias][source_id]
56
+ raise Fog::Compute::VcloudDirector::Forbidden.new(
57
+ "No access to entity \"(com.vmware.vcloud.entity.media:#{source_id})\"."
58
+ )
59
+ end
60
+ unless data[:vdcs][vdc_id]
61
+ raise Fog::Compute::VcloudDirector::Forbidden.new(
62
+ "No access to entity \"(com.vmware.vcloud.entity.vdc:#{vdc_id})\"."
63
+ )
64
+ end
65
+
66
+ media_id = uuid
67
+ media_name = "#{source_media[:name]}-copy-#{uuid}"
68
+
69
+ owner = {
70
+ :href => make_href("media/#{media_id}"),
71
+ :type => 'application/vnd.vmware.vcloud.media+xml'
72
+ }
73
+ task_id = enqueue_task(
74
+ "Copy Media File #{media_name}(#{media_id})", 'vdcCopyMedia', owner,
75
+ :on_success => lambda do
76
+ data[:medias][media_id][:status] = 1
77
+ end
78
+ )
79
+
80
+ media = source_media.dup.merge(
81
+ :name => media_name,
82
+ :status => 0,
83
+ :tasks => [task_id]
84
+ )
85
+ data[:medias][media_id] = media
86
+
87
+ body = {
88
+ :xmlns => xmlns,
89
+ :xmlns_xsi => xmlns_xsi,
90
+ :xsi_schemaLocation => xsi_schema_location
91
+ }.merge(media_body(media_id))
92
+
93
+ Excon::Response.new(
94
+ :status => 201,
95
+ :headers => {'Content-Type' => "#{body[:type]};version=#{api_version}"},
96
+ :body => body
97
+ )
98
+ end
99
+ end
100
+ end
101
+ end
102
+ end