fog-vcloud-director 0.1.10 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (331) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +2 -0
  3. data/.rubocop.yml +4 -240
  4. data/.rubocop_local.yml +1 -0
  5. data/.travis.yml +6 -10
  6. data/README.md +54 -51
  7. data/docs/examples-vapp-instantiate.md +2 -2
  8. data/docs/examples-vm-reconfigure.md +122 -0
  9. data/docs/vm-to-reconfigure.xml +373 -0
  10. data/fog-vcloud-director.gemspec +6 -3
  11. data/lib/fog/vcloud_director.rb +14 -1
  12. data/lib/fog/vcloud_director/compute.rb +45 -19
  13. data/lib/fog/vcloud_director/core.rb +3 -3
  14. data/lib/fog/vcloud_director/generators/compute/compose_common.rb +16 -3
  15. data/lib/fog/vcloud_director/generators/compute/compose_vapp.rb +3 -3
  16. data/lib/fog/vcloud_director/generators/compute/create_snapshot.rb +3 -3
  17. data/lib/fog/vcloud_director/generators/compute/customization.rb +3 -3
  18. data/lib/fog/vcloud_director/generators/compute/disks.rb +3 -3
  19. data/lib/fog/vcloud_director/generators/compute/edge_gateway_service_configuration.rb +3 -3
  20. data/lib/fog/vcloud_director/generators/compute/instantiate_vapp_template_params.rb +3 -3
  21. data/lib/fog/vcloud_director/generators/compute/metadata.rb +3 -3
  22. data/lib/fog/vcloud_director/generators/compute/org_vdc_network.rb +4 -4
  23. data/lib/fog/vcloud_director/generators/compute/recompose_vapp.rb +3 -3
  24. data/lib/fog/vcloud_director/generators/compute/reconfigure_vm.rb +189 -0
  25. data/lib/fog/vcloud_director/generators/compute/vapp.rb +3 -4
  26. data/lib/fog/vcloud_director/generators/compute/vm.rb +3 -3
  27. data/lib/fog/vcloud_director/generators/compute/vm_network.rb +3 -3
  28. data/lib/fog/vcloud_director/models/compute/catalog.rb +2 -4
  29. data/lib/fog/vcloud_director/models/compute/catalog_item.rb +2 -4
  30. data/lib/fog/vcloud_director/models/compute/catalog_items.rb +3 -4
  31. data/lib/fog/vcloud_director/models/compute/catalogs.rb +4 -5
  32. data/lib/fog/vcloud_director/models/compute/custom_field.rb +2 -4
  33. data/lib/fog/vcloud_director/models/compute/custom_fields.rb +3 -3
  34. data/lib/fog/vcloud_director/models/compute/disk.rb +5 -6
  35. data/lib/fog/vcloud_director/models/compute/disks.rb +4 -5
  36. data/lib/fog/vcloud_director/models/compute/media.rb +2 -4
  37. data/lib/fog/vcloud_director/models/compute/medias.rb +3 -4
  38. data/lib/fog/vcloud_director/models/compute/network.rb +2 -4
  39. data/lib/fog/vcloud_director/models/compute/networks.rb +3 -4
  40. data/lib/fog/vcloud_director/models/compute/organization.rb +2 -4
  41. data/lib/fog/vcloud_director/models/compute/organizations.rb +3 -4
  42. data/lib/fog/vcloud_director/models/compute/tag.rb +3 -4
  43. data/lib/fog/vcloud_director/models/compute/tags.rb +3 -4
  44. data/lib/fog/vcloud_director/models/compute/task.rb +2 -4
  45. data/lib/fog/vcloud_director/models/compute/tasks.rb +3 -4
  46. data/lib/fog/vcloud_director/models/compute/template_vm.rb +2 -3
  47. data/lib/fog/vcloud_director/models/compute/template_vms.rb +5 -6
  48. data/lib/fog/vcloud_director/models/compute/vapp.rb +36 -18
  49. data/lib/fog/vcloud_director/models/compute/vapp_template.rb +2 -4
  50. data/lib/fog/vcloud_director/models/compute/vapp_templates.rb +4 -5
  51. data/lib/fog/vcloud_director/models/compute/vapps.rb +3 -4
  52. data/lib/fog/vcloud_director/models/compute/vdc.rb +2 -4
  53. data/lib/fog/vcloud_director/models/compute/vdcs.rb +3 -4
  54. data/lib/fog/vcloud_director/models/compute/vm.rb +19 -39
  55. data/lib/fog/vcloud_director/models/compute/vm_customization.rb +2 -4
  56. data/lib/fog/vcloud_director/models/compute/vm_customizations.rb +3 -4
  57. data/lib/fog/vcloud_director/models/compute/vm_network.rb +2 -4
  58. data/lib/fog/vcloud_director/models/compute/vm_networks.rb +3 -4
  59. data/lib/fog/vcloud_director/models/compute/vms.rb +4 -5
  60. data/lib/fog/vcloud_director/parsers/compute/disks.rb +3 -3
  61. data/lib/fog/vcloud_director/parsers/compute/metadata.rb +3 -3
  62. data/lib/fog/vcloud_director/parsers/compute/network.rb +3 -3
  63. data/lib/fog/vcloud_director/parsers/compute/vapp.rb +93 -0
  64. data/lib/fog/vcloud_director/parsers/compute/vm.rb +6 -65
  65. data/lib/fog/vcloud_director/parsers/compute/vm_customization.rb +3 -3
  66. data/lib/fog/vcloud_director/parsers/compute/vm_network.rb +3 -3
  67. data/lib/fog/vcloud_director/parsers/compute/vm_parser_helper.rb +55 -3
  68. data/lib/fog/vcloud_director/parsers/compute/vms.rb +5 -26
  69. data/lib/fog/vcloud_director/parsers/compute/vms_by_metadata.rb +3 -3
  70. data/lib/fog/vcloud_director/query.rb +0 -1
  71. data/lib/fog/vcloud_director/requests/compute/delete_catalog_item.rb +2 -2
  72. data/lib/fog/vcloud_director/requests/compute/delete_catalog_item_metadata_item_metadata.rb +3 -3
  73. data/lib/fog/vcloud_director/requests/compute/delete_disk.rb +3 -3
  74. data/lib/fog/vcloud_director/requests/compute/delete_disk_metadata_item_metadata.rb +3 -3
  75. data/lib/fog/vcloud_director/requests/compute/delete_logout.rb +2 -2
  76. data/lib/fog/vcloud_director/requests/compute/delete_media.rb +4 -4
  77. data/lib/fog/vcloud_director/requests/compute/delete_media_metadata_item_metadata.rb +3 -3
  78. data/lib/fog/vcloud_director/requests/compute/delete_network.rb +4 -4
  79. data/lib/fog/vcloud_director/requests/compute/delete_shadow_vm.rb +2 -2
  80. data/lib/fog/vcloud_director/requests/compute/delete_vapp.rb +5 -5
  81. data/lib/fog/vcloud_director/requests/compute/delete_vapp_metadata_item_metadata.rb +3 -3
  82. data/lib/fog/vcloud_director/requests/compute/delete_vapp_template.rb +2 -2
  83. data/lib/fog/vcloud_director/requests/compute/delete_vapp_template_metadata_item_metadata.rb +3 -3
  84. data/lib/fog/vcloud_director/requests/compute/get_allocated_ip_addresses.rb +2 -2
  85. data/lib/fog/vcloud_director/requests/compute/get_catalog.rb +4 -4
  86. data/lib/fog/vcloud_director/requests/compute/get_catalog_item.rb +3 -3
  87. data/lib/fog/vcloud_director/requests/compute/get_catalog_item_metadata.rb +2 -2
  88. data/lib/fog/vcloud_director/requests/compute/get_catalog_item_metadata_item_metadata.rb +3 -3
  89. data/lib/fog/vcloud_director/requests/compute/get_catalog_metadata.rb +2 -2
  90. data/lib/fog/vcloud_director/requests/compute/get_catalog_metadata_item_metadata.rb +3 -3
  91. data/lib/fog/vcloud_director/requests/compute/get_catalogs_from_query.rb +3 -3
  92. data/lib/fog/vcloud_director/requests/compute/get_control_access_params_catalog.rb +2 -2
  93. data/lib/fog/vcloud_director/requests/compute/get_control_access_params_vapp.rb +2 -2
  94. data/lib/fog/vcloud_director/requests/compute/get_cpu_rasd_item.rb +3 -3
  95. data/lib/fog/vcloud_director/requests/compute/get_current_session.rb +2 -2
  96. data/lib/fog/vcloud_director/requests/compute/get_disk.rb +4 -4
  97. data/lib/fog/vcloud_director/requests/compute/get_disk_metadata.rb +2 -2
  98. data/lib/fog/vcloud_director/requests/compute/get_disk_metadata_item_metadata.rb +3 -3
  99. data/lib/fog/vcloud_director/requests/compute/get_disk_owner.rb +4 -4
  100. data/lib/fog/vcloud_director/requests/compute/get_disks_from_query.rb +3 -3
  101. data/lib/fog/vcloud_director/requests/compute/get_disks_rasd_items_list.rb +3 -3
  102. data/lib/fog/vcloud_director/requests/compute/get_edge_gateway.rb +4 -4
  103. data/lib/fog/vcloud_director/requests/compute/get_entity.rb +2 -2
  104. data/lib/fog/vcloud_director/requests/compute/get_execute_query.rb +2 -2
  105. data/lib/fog/vcloud_director/requests/compute/get_groups_from_query.rb +3 -3
  106. data/lib/fog/vcloud_director/requests/compute/get_guest_customization_system_section_vapp.rb +3 -3
  107. data/lib/fog/vcloud_director/requests/compute/get_guest_customization_system_section_vapp_template.rb +2 -2
  108. data/lib/fog/vcloud_director/requests/compute/get_href.rb +2 -2
  109. data/lib/fog/vcloud_director/requests/compute/get_lease_settings_section_vapp.rb +4 -4
  110. data/lib/fog/vcloud_director/requests/compute/get_lease_settings_section_vapp_template.rb +2 -2
  111. data/lib/fog/vcloud_director/requests/compute/get_media.rb +4 -4
  112. data/lib/fog/vcloud_director/requests/compute/get_media_drives_rasd_items_list.rb +3 -3
  113. data/lib/fog/vcloud_director/requests/compute/get_media_metadata.rb +2 -2
  114. data/lib/fog/vcloud_director/requests/compute/get_media_metadata_item_metadata.rb +3 -3
  115. data/lib/fog/vcloud_director/requests/compute/get_media_owner.rb +4 -4
  116. data/lib/fog/vcloud_director/requests/compute/get_medias_from_query.rb +3 -3
  117. data/lib/fog/vcloud_director/requests/compute/get_memory_rasd_item.rb +3 -3
  118. data/lib/fog/vcloud_director/requests/compute/get_metadata.rb +3 -3
  119. data/lib/fog/vcloud_director/requests/compute/get_network.rb +5 -5
  120. data/lib/fog/vcloud_director/requests/compute/get_network_cards_items_list.rb +3 -3
  121. data/lib/fog/vcloud_director/requests/compute/get_network_complete.rb +4 -4
  122. data/lib/fog/vcloud_director/requests/compute/get_network_config_section_vapp.rb +3 -3
  123. data/lib/fog/vcloud_director/requests/compute/get_network_config_section_vapp_template.rb +2 -2
  124. data/lib/fog/vcloud_director/requests/compute/get_network_connection_system_section_vapp.rb +3 -3
  125. data/lib/fog/vcloud_director/requests/compute/get_network_connection_system_section_vapp_template.rb +2 -2
  126. data/lib/fog/vcloud_director/requests/compute/get_network_metadata.rb +2 -2
  127. data/lib/fog/vcloud_director/requests/compute/get_network_metadata_item_metadata.rb +3 -3
  128. data/lib/fog/vcloud_director/requests/compute/get_network_section_vapp.rb +2 -2
  129. data/lib/fog/vcloud_director/requests/compute/get_network_section_vapp_template.rb +2 -2
  130. data/lib/fog/vcloud_director/requests/compute/get_operating_system_section.rb +3 -3
  131. data/lib/fog/vcloud_director/requests/compute/get_org_settings.rb +2 -2
  132. data/lib/fog/vcloud_director/requests/compute/get_org_vdc_gateways.rb +4 -4
  133. data/lib/fog/vcloud_director/requests/compute/get_organization.rb +4 -4
  134. data/lib/fog/vcloud_director/requests/compute/get_organization_metadata.rb +2 -2
  135. data/lib/fog/vcloud_director/requests/compute/get_organization_metadata_item_metadata.rb +3 -3
  136. data/lib/fog/vcloud_director/requests/compute/get_organizations.rb +2 -2
  137. data/lib/fog/vcloud_director/requests/compute/get_organizations_from_query.rb +3 -3
  138. data/lib/fog/vcloud_director/requests/compute/get_product_sections_vapp.rb +2 -2
  139. data/lib/fog/vcloud_director/requests/compute/get_product_sections_vapp_template.rb +2 -2
  140. data/lib/fog/vcloud_director/requests/compute/get_request.rb +2 -2
  141. data/lib/fog/vcloud_director/requests/compute/get_runtime_info_section_type.rb +3 -3
  142. data/lib/fog/vcloud_director/requests/compute/get_serial_ports_items_list.rb +2 -2
  143. data/lib/fog/vcloud_director/requests/compute/get_shadow_vm.rb +2 -2
  144. data/lib/fog/vcloud_director/requests/compute/get_snapshot_section.rb +3 -3
  145. data/lib/fog/vcloud_director/requests/compute/get_startup_section.rb +3 -3
  146. data/lib/fog/vcloud_director/requests/compute/get_supported_systems_info.rb +2 -2
  147. data/lib/fog/vcloud_director/requests/compute/get_supported_versions.rb +2 -2
  148. data/lib/fog/vcloud_director/requests/compute/get_task.rb +4 -4
  149. data/lib/fog/vcloud_director/requests/compute/get_task_list.rb +5 -5
  150. data/lib/fog/vcloud_director/requests/compute/get_template_vm.rb +4 -50
  151. data/lib/fog/vcloud_director/requests/compute/get_template_vms.rb +3 -16
  152. data/lib/fog/vcloud_director/requests/compute/get_thumbnail.rb +2 -2
  153. data/lib/fog/vcloud_director/requests/compute/get_users_from_query.rb +3 -3
  154. data/lib/fog/vcloud_director/requests/compute/get_vapp.rb +9 -8
  155. data/lib/fog/vcloud_director/requests/compute/get_vapp_metadata.rb +4 -4
  156. data/lib/fog/vcloud_director/requests/compute/get_vapp_metadata_item_metadata.rb +3 -3
  157. data/lib/fog/vcloud_director/requests/compute/get_vapp_ovf_descriptor.rb +2 -2
  158. data/lib/fog/vcloud_director/requests/compute/get_vapp_owner.rb +4 -4
  159. data/lib/fog/vcloud_director/requests/compute/get_vapp_template.rb +2 -2
  160. data/lib/fog/vcloud_director/requests/compute/get_vapp_template_customization_system_section.rb +2 -2
  161. data/lib/fog/vcloud_director/requests/compute/get_vapp_template_metadata.rb +2 -2
  162. data/lib/fog/vcloud_director/requests/compute/get_vapp_template_metadata_item_metadata.rb +3 -3
  163. data/lib/fog/vcloud_director/requests/compute/get_vapp_template_ovf_descriptor.rb +2 -2
  164. data/lib/fog/vcloud_director/requests/compute/get_vapp_template_owner.rb +2 -2
  165. data/lib/fog/vcloud_director/requests/compute/get_vapp_templates_from_query.rb +3 -3
  166. data/lib/fog/vcloud_director/requests/compute/get_vapps_in_lease_from_query.rb +3 -3
  167. data/lib/fog/vcloud_director/requests/compute/get_vcloud.rb +2 -2
  168. data/lib/fog/vcloud_director/requests/compute/get_vdc.rb +4 -4
  169. data/lib/fog/vcloud_director/requests/compute/get_vdc_metadata.rb +2 -2
  170. data/lib/fog/vcloud_director/requests/compute/get_vdc_metadata_item_metadata.rb +3 -3
  171. data/lib/fog/vcloud_director/requests/compute/get_vdc_storage_class.rb +4 -4
  172. data/lib/fog/vcloud_director/requests/compute/get_vdc_storage_class_metadata.rb +2 -2
  173. data/lib/fog/vcloud_director/requests/compute/get_vdc_storage_class_metadata_item_metadata.rb +3 -3
  174. data/lib/fog/vcloud_director/requests/compute/get_vdcs_from_query.rb +3 -3
  175. data/lib/fog/vcloud_director/requests/compute/get_virtual_hardware_section.rb +2 -2
  176. data/lib/fog/vcloud_director/requests/compute/get_vm.rb +3 -49
  177. data/lib/fog/vcloud_director/requests/compute/get_vm_capabilities.rb +3 -3
  178. data/lib/fog/vcloud_director/requests/compute/get_vm_compliance_results.rb +2 -2
  179. data/lib/fog/vcloud_director/requests/compute/get_vm_customization.rb +3 -3
  180. data/lib/fog/vcloud_director/requests/compute/get_vm_disks.rb +3 -3
  181. data/lib/fog/vcloud_director/requests/compute/get_vm_network.rb +3 -3
  182. data/lib/fog/vcloud_director/requests/compute/get_vm_pending_question.rb +2 -2
  183. data/lib/fog/vcloud_director/requests/compute/get_vms_by_metadata.rb +3 -3
  184. data/lib/fog/vcloud_director/requests/compute/get_vms_disk_attached_to.rb +3 -3
  185. data/lib/fog/vcloud_director/requests/compute/get_vms_in_lease_from_query.rb +3 -3
  186. data/lib/fog/vcloud_director/requests/compute/instantiate_vapp_template.rb +6 -6
  187. data/lib/fog/vcloud_director/requests/compute/post_acquire_mks_ticket.rb +3 -3
  188. data/lib/fog/vcloud_director/requests/compute/post_acquire_ticket.rb +3 -3
  189. data/lib/fog/vcloud_director/requests/compute/post_answer_vm_pending_question.rb +2 -2
  190. data/lib/fog/vcloud_director/requests/compute/post_attach_disk.rb +2 -2
  191. data/lib/fog/vcloud_director/requests/compute/post_cancel_task.rb +3 -3
  192. data/lib/fog/vcloud_director/requests/compute/post_capture_vapp.rb +2 -2
  193. data/lib/fog/vcloud_director/requests/compute/post_check_vm_compliance.rb +2 -2
  194. data/lib/fog/vcloud_director/requests/compute/post_clone_media.rb +4 -4
  195. data/lib/fog/vcloud_director/requests/compute/post_clone_vapp.rb +2 -2
  196. data/lib/fog/vcloud_director/requests/compute/post_clone_vapp_template.rb +2 -2
  197. data/lib/fog/vcloud_director/requests/compute/post_compose_vapp.rb +3 -3
  198. data/lib/fog/vcloud_director/requests/compute/post_configure_edge_gateway_services.rb +4 -4
  199. data/lib/fog/vcloud_director/requests/compute/post_consolidate_vm_vapp.rb +2 -2
  200. data/lib/fog/vcloud_director/requests/compute/post_consolidate_vm_vapp_template.rb +2 -2
  201. data/lib/fog/vcloud_director/requests/compute/post_create_catalog_item.rb +5 -5
  202. data/lib/fog/vcloud_director/requests/compute/post_create_org_vdc_network.rb +4 -4
  203. data/lib/fog/vcloud_director/requests/compute/post_create_snapshot.rb +3 -3
  204. data/lib/fog/vcloud_director/requests/compute/post_deploy_vapp.rb +2 -2
  205. data/lib/fog/vcloud_director/requests/compute/post_detach_disk.rb +2 -2
  206. data/lib/fog/vcloud_director/requests/compute/post_disable_nested_hv.rb +2 -2
  207. data/lib/fog/vcloud_director/requests/compute/post_disable_vapp_template_download.rb +2 -2
  208. data/lib/fog/vcloud_director/requests/compute/post_discard_vapp_state.rb +2 -2
  209. data/lib/fog/vcloud_director/requests/compute/post_eject_cd_rom.rb +2 -2
  210. data/lib/fog/vcloud_director/requests/compute/post_enable_nested_hv.rb +2 -2
  211. data/lib/fog/vcloud_director/requests/compute/post_enable_vapp_template_download.rb +2 -2
  212. data/lib/fog/vcloud_director/requests/compute/post_enter_maintenance_mode.rb +2 -2
  213. data/lib/fog/vcloud_director/requests/compute/post_exit_maintenance_mode.rb +2 -2
  214. data/lib/fog/vcloud_director/requests/compute/post_insert_cd_rom.rb +2 -2
  215. data/lib/fog/vcloud_director/requests/compute/post_install_vmware_tools.rb +2 -2
  216. data/lib/fog/vcloud_director/requests/compute/post_instantiate_vapp_template.rb +6 -6
  217. data/lib/fog/vcloud_director/requests/compute/post_login_session.rb +2 -2
  218. data/lib/fog/vcloud_director/requests/compute/post_power_off_vapp.rb +3 -3
  219. data/lib/fog/vcloud_director/requests/compute/post_power_on_vapp.rb +6 -6
  220. data/lib/fog/vcloud_director/requests/compute/post_reboot_vapp.rb +3 -3
  221. data/lib/fog/vcloud_director/requests/compute/post_recompose_vapp.rb +3 -3
  222. data/lib/fog/vcloud_director/requests/compute/post_reconfigure_vm.rb +6 -86
  223. data/lib/fog/vcloud_director/requests/compute/post_remove_all_snapshots.rb +2 -2
  224. data/lib/fog/vcloud_director/requests/compute/post_reset_vapp.rb +3 -3
  225. data/lib/fog/vcloud_director/requests/compute/post_revert_snapshot.rb +2 -2
  226. data/lib/fog/vcloud_director/requests/compute/post_shutdown_vapp.rb +3 -3
  227. data/lib/fog/vcloud_director/requests/compute/post_suspend_vapp.rb +3 -3
  228. data/lib/fog/vcloud_director/requests/compute/post_undeploy_vapp.rb +3 -3
  229. data/lib/fog/vcloud_director/requests/compute/post_update_catalog_item_metadata.rb +2 -2
  230. data/lib/fog/vcloud_director/requests/compute/post_update_disk_metadata.rb +2 -2
  231. data/lib/fog/vcloud_director/requests/compute/post_update_media_metadata.rb +2 -2
  232. data/lib/fog/vcloud_director/requests/compute/post_update_vapp_metadata.rb +4 -4
  233. data/lib/fog/vcloud_director/requests/compute/post_update_vapp_template_metadata.rb +2 -2
  234. data/lib/fog/vcloud_director/requests/compute/post_upgrade_hw_version.rb +2 -2
  235. data/lib/fog/vcloud_director/requests/compute/post_upload_disk.rb +4 -4
  236. data/lib/fog/vcloud_director/requests/compute/post_upload_media.rb +7 -7
  237. data/lib/fog/vcloud_director/requests/compute/post_upload_vapp_template.rb +2 -2
  238. data/lib/fog/vcloud_director/requests/compute/put_catalog_item_metadata_item_metadata.rb +3 -3
  239. data/lib/fog/vcloud_director/requests/compute/put_cpu.rb +4 -4
  240. data/lib/fog/vcloud_director/requests/compute/put_disk_metadata_item_metadata.rb +3 -3
  241. data/lib/fog/vcloud_director/requests/compute/put_disks.rb +3 -3
  242. data/lib/fog/vcloud_director/requests/compute/put_guest_customization_section_vapp.rb +2 -2
  243. data/lib/fog/vcloud_director/requests/compute/put_media_metadata_item_metadata.rb +3 -3
  244. data/lib/fog/vcloud_director/requests/compute/put_memory.rb +4 -4
  245. data/lib/fog/vcloud_director/requests/compute/put_metadata_value.rb +4 -4
  246. data/lib/fog/vcloud_director/requests/compute/put_network.rb +4 -4
  247. data/lib/fog/vcloud_director/requests/compute/put_network_connection_system_section_vapp.rb +4 -4
  248. data/lib/fog/vcloud_director/requests/compute/put_product_sections.rb +2 -2
  249. data/lib/fog/vcloud_director/requests/compute/put_vapp_metadata_item_metadata.rb +4 -4
  250. data/lib/fog/vcloud_director/requests/compute/put_vapp_name_and_description.rb +3 -3
  251. data/lib/fog/vcloud_director/requests/compute/put_vapp_template_metadata_item_metadata.rb +3 -3
  252. data/lib/fog/vcloud_director/requests/compute/put_vm.rb +5 -5
  253. data/lib/fog/vcloud_director/requests/compute/put_vm_capabilities.rb +2 -2
  254. data/lib/fog/vcloud_director/version.rb +1 -1
  255. data/spec/common_assertions.rb +42 -0
  256. data/spec/fixtures/empty_vm.xml +244 -0
  257. data/spec/fixtures/vm.xml +419 -0
  258. data/spec/secrets.yaml.templ +3 -0
  259. data/spec/spec_helper.rb +6 -6
  260. data/spec/vcloud_director/generators/compute/compose_common_spec.rb +3 -8
  261. data/spec/vcloud_director/generators/compute/compose_vapp_spec.rb +67 -0
  262. data/spec/vcloud_director/generators/compute/create_snapshot_spec.rb +4 -0
  263. data/spec/vcloud_director/generators/compute/customization_spec.rb +4 -0
  264. data/spec/vcloud_director/generators/compute/disks_spec.rb +4 -0
  265. data/spec/vcloud_director/generators/compute/edge_gateway_service_configuration_spec.rb +4 -0
  266. data/spec/vcloud_director/generators/compute/instantiate_vapp_template_params_spec.rb +7 -10
  267. data/spec/vcloud_director/generators/compute/metadata_spec.rb +4 -0
  268. data/spec/vcloud_director/generators/compute/org_vdc_network_spec.rb +4 -0
  269. data/spec/vcloud_director/generators/compute/recompose_vapp_spec.rb +4 -0
  270. data/spec/vcloud_director/generators/compute/reconfigure_vm_spec.rb +390 -0
  271. data/spec/vcloud_director/generators/compute/vapp_spec.rb +4 -0
  272. data/spec/vcloud_director/generators/compute/vm_network_spec.rb +4 -0
  273. data/spec/vcloud_director/generators/compute/vm_spec.rb +4 -0
  274. data/spec/vcloud_director/models/compute/basic_spec.rb +44 -0
  275. data/spec/vcloud_director/models/compute/vapps_spec.rb +104 -0
  276. data/spec/vcloud_director/models/compute/vms_spec.rb +80 -0
  277. data/spec/vcloud_director/parsers/compute/disks_spec.rb +4 -0
  278. data/spec/vcloud_director/parsers/compute/metadata_spec.rb +4 -0
  279. data/spec/vcloud_director/parsers/compute/network_spec.rb +4 -0
  280. data/spec/vcloud_director/parsers/compute/vm_customization_spec.rb +4 -0
  281. data/spec/vcloud_director/parsers/compute/vm_network_spec.rb +4 -0
  282. data/spec/vcloud_director/parsers/compute/vm_parser_helper_spec.rb +4 -0
  283. data/spec/vcloud_director/parsers/compute/vm_spec.rb +4 -0
  284. data/spec/vcloud_director/parsers/compute/vms_by_metadata_spec.rb +4 -0
  285. data/spec/vcloud_director/parsers/compute/vms_spec.rb +4 -0
  286. data/spec/vcloud_director/requests/compute/basic_spec.rb +212 -0
  287. data/spec/vcloud_director/requests/compute/get_vapp_spec.rb +11 -0
  288. data/spec/vcloud_director/requests/compute/get_vdc_spec.rb +10 -0
  289. data/spec/vcloud_director/requests/compute/instantiate_vapp_template_spec.rb +3 -5
  290. data/spec/vcloud_director/requests/compute/post_reconfigure_vm_spec.rb +26 -0
  291. data/spec/vcr_cassettes/authentication.yml +48 -0
  292. data/spec/vcr_cassettes/get_vapp-emptyvm.yml +806 -0
  293. data/spec/vcr_cassettes/get_vapp.yml +937 -0
  294. data/spec/vcr_cassettes/get_vapps-expired.yml +918 -0
  295. data/spec/vcr_cassettes/get_vapps-novms.yml +215 -0
  296. data/spec/vcr_cassettes/get_vapps.yml +118 -0
  297. data/spec/vcr_cassettes/get_vdc.yml +118 -0
  298. data/spec/vcr_cassettes/get_vm.yml +398 -0
  299. data/spec/vcr_cassettes/post_reconfigure_vm-virtual_hardware.yml +445 -0
  300. data/spec/vcr_spec_helper.rb +34 -0
  301. data/tasks/test.rake +3 -10
  302. data/tests/vcloud_director/ensure_list_tests.rb +1 -1
  303. data/tests/vcloud_director/generators/compute/compose_vapp_tests.rb +1 -1
  304. data/tests/vcloud_director/models/compute/helper.rb +1 -1
  305. data/tests/vcloud_director/models/compute/media_tests.rb +1 -1
  306. data/tests/vcloud_director/models/compute/network_tests.rb +1 -1
  307. data/tests/vcloud_director/models/compute/tasks_tests.rb +1 -1
  308. data/tests/vcloud_director/models/compute/vapp_template_tests.rb +1 -1
  309. data/tests/vcloud_director/models/compute/vms_tests.rb +6 -6
  310. data/tests/vcloud_director/requests/compute/admin_tests.rb +1 -1
  311. data/tests/vcloud_director/requests/compute/catalog_tests.rb +2 -2
  312. data/tests/vcloud_director/requests/compute/disk_tests.rb +11 -11
  313. data/tests/vcloud_director/requests/compute/edge_gateway_tests.rb +8 -8
  314. data/tests/vcloud_director/requests/compute/groups_tests.rb +1 -1
  315. data/tests/vcloud_director/requests/compute/media_tests.rb +11 -11
  316. data/tests/vcloud_director/requests/compute/network_tests.rb +6 -6
  317. data/tests/vcloud_director/requests/compute/organization_tests.rb +2 -2
  318. data/tests/vcloud_director/requests/compute/ovf_descriptor_tests.rb +1 -1
  319. data/tests/vcloud_director/requests/compute/query_tests.rb +1 -1
  320. data/tests/vcloud_director/requests/compute/session_tests.rb +1 -1
  321. data/tests/vcloud_director/requests/compute/supported_systems_tests.rb +1 -1
  322. data/tests/vcloud_director/requests/compute/task_tests.rb +4 -4
  323. data/tests/vcloud_director/requests/compute/users_tests.rb +1 -1
  324. data/tests/vcloud_director/requests/compute/vapp_tests.rb +4 -4
  325. data/tests/vcloud_director/requests/compute/vdc_storage_profile_tests.rb +2 -2
  326. data/tests/vcloud_director/requests/compute/vdc_tests.rb +2 -2
  327. data/tests/vcloud_director/requests/compute/versions_tests.rb +1 -1
  328. data/tests/vcloud_director/requests/compute/vm_tests.rb +4 -4
  329. metadata +140 -13
  330. data/lib/fog/vcloud_director/requests/compute/get_vms.rb +0 -41
  331. data/spec/vcloud_director/spec_helper.rb +0 -13
@@ -0,0 +1,67 @@
1
+ require './spec/spec_helper.rb'
2
+
3
+ describe Fog::VcloudDirector::Generators::Compute::ComposeVapp do
4
+ describe '.calculate_fence_mode' do
5
+ [
6
+ {
7
+ :case => 'default',
8
+ :mode => nil,
9
+ :parent => nil,
10
+ :parent_name => nil,
11
+ :expected => 'isolated'
12
+ },
13
+ {
14
+ :case => 'prevent isolated when parent',
15
+ :mode => 'isolated',
16
+ :parent => 'parent-id',
17
+ :parent_name => nil,
18
+ :expected => 'bridged'
19
+ },
20
+ {
21
+ :case => 'keep natRouted when parent',
22
+ :mode => 'natRouted',
23
+ :parent => 'parent-id',
24
+ :parent_name => nil,
25
+ :expected => 'natRouted'
26
+ },
27
+ {
28
+ :case => 'keep bridged when parent',
29
+ :mode => 'bridged',
30
+ :parent => 'parent-id',
31
+ :parent_name => nil,
32
+ :expected => 'bridged'
33
+ },
34
+ {
35
+ :case => 'prevent bridged when no parent',
36
+ :mode => 'bridged',
37
+ :parent => nil,
38
+ :parent_name => nil,
39
+ :expected => 'isolated'
40
+ },
41
+ {
42
+ :case => 'prevent natRouted when no parent',
43
+ :mode => 'natRouted',
44
+ :parent => nil,
45
+ :parent_name => nil,
46
+ :expected => 'isolated'
47
+ },
48
+ {
49
+ :case => 'prevent isolated when parent_name',
50
+ :mode => 'isolated',
51
+ :parent => nil,
52
+ :parent_name => 'parent-name',
53
+ :expected => 'bridged'
54
+ },
55
+ ].each do |args|
56
+ it args[:case].to_s do
57
+ mode = Fog::VcloudDirector::Generators::Compute::ComposeCommon.send(
58
+ :calculate_fence_mode,
59
+ args[:mode],
60
+ args[:parent],
61
+ args[:parent_name]
62
+ )
63
+ mode.must_equal(args[:expected])
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,4 @@
1
+ require './spec/spec_helper.rb'
2
+
3
+ describe Fog::VcloudDirector::Generators::Compute::CreateSnapshot do
4
+ end
@@ -0,0 +1,4 @@
1
+ require './spec/spec_helper.rb'
2
+
3
+ describe Fog::VcloudDirector::Generators::Compute::Customization do
4
+ end
@@ -0,0 +1,4 @@
1
+ require './spec/spec_helper.rb'
2
+
3
+ describe Fog::VcloudDirector::Generators::Compute::Disks do
4
+ end
@@ -0,0 +1,4 @@
1
+ require './spec/spec_helper.rb'
2
+
3
+ describe Fog::VcloudDirector::Generators::Compute::EdgeGatewayServiceConfiguration do
4
+ end
@@ -1,9 +1,6 @@
1
- require './spec/vcloud_director/spec_helper.rb'
2
- require 'minitest/autorun'
3
- require 'nokogiri'
4
- require './lib/fog/vcloud_director/generators/compute/instantiate_vapp_template_params.rb'
1
+ require './spec/spec_helper.rb'
5
2
 
6
- describe Fog::Generators::Compute::VcloudDirector::InstantiateVappTemplateParams do
3
+ describe Fog::VcloudDirector::Generators::Compute::InstantiateVappTemplateParams do
7
4
  describe 'Complete xml' do
8
5
  let(:xml) do
9
6
  params = {
@@ -42,7 +39,7 @@ describe Fog::Generators::Compute::VcloudDirector::InstantiateVappTemplateParams
42
39
 
43
40
  }
44
41
 
45
- output = Fog::Generators::Compute::VcloudDirector::InstantiateVappTemplateParams.new(params).generate_xml
42
+ output = Fog::VcloudDirector::Generators::Compute::InstantiateVappTemplateParams.new(params).generate_xml
46
43
  Nokogiri::XML(output)
47
44
  end
48
45
 
@@ -225,7 +222,7 @@ describe Fog::Generators::Compute::VcloudDirector::InstantiateVappTemplateParams
225
222
  }
226
223
  ]
227
224
  }
228
- output = Fog::Generators::Compute::VcloudDirector::InstantiateVappTemplateParams.new(input).generate_xml
225
+ output = Fog::VcloudDirector::Generators::Compute::InstantiateVappTemplateParams.new(input).generate_xml
229
226
  args[:expect].call(Nokogiri::XML(output))
230
227
  end
231
228
  end
@@ -374,7 +371,7 @@ describe Fog::Generators::Compute::VcloudDirector::InstantiateVappTemplateParams
374
371
  :vapp_networks => args[:vapp_networks],
375
372
  :endpoint => 'ENDPOINT'
376
373
  }
377
- output = Fog::Generators::Compute::VcloudDirector::InstantiateVappTemplateParams.new(input).generate_xml
374
+ output = Fog::VcloudDirector::Generators::Compute::InstantiateVappTemplateParams.new(input).generate_xml
378
375
  args[:expect].call(vapp_network_config(Nokogiri::XML(output)))
379
376
  end
380
377
  end
@@ -414,7 +411,7 @@ describe Fog::Generators::Compute::VcloudDirector::InstantiateVappTemplateParams
414
411
  }
415
412
  ]
416
413
  }
417
- output = Fog::Generators::Compute::VcloudDirector::InstantiateVappTemplateParams.new(input).generate_xml
414
+ output = Fog::VcloudDirector::Generators::Compute::InstantiateVappTemplateParams.new(input).generate_xml
418
415
  args[:expect].call(guest_customization(Nokogiri::XML(output)))
419
416
  end
420
417
  end
@@ -530,7 +527,7 @@ describe Fog::Generators::Compute::VcloudDirector::InstantiateVappTemplateParams
530
527
  }
531
528
  ]
532
529
  }
533
- output = Fog::Generators::Compute::VcloudDirector::InstantiateVappTemplateParams.new(input).generate_xml
530
+ output = Fog::VcloudDirector::Generators::Compute::InstantiateVappTemplateParams.new(input).generate_xml
534
531
  args[:expect].call(networks(Nokogiri::XML(output)))
535
532
  end
536
533
  end
@@ -0,0 +1,4 @@
1
+ require './spec/spec_helper.rb'
2
+
3
+ describe Fog::VcloudDirector::Generators::Compute::MetadataBase do
4
+ end
@@ -0,0 +1,4 @@
1
+ require './spec/spec_helper.rb'
2
+
3
+ describe Fog::VcloudDirector::Generators::Compute::OrgVdcNetwork do
4
+ end
@@ -0,0 +1,4 @@
1
+ require './spec/spec_helper.rb'
2
+
3
+ describe Fog::VcloudDirector::Generators::Compute::RecomposeVapp do
4
+ end
@@ -0,0 +1,390 @@
1
+ require './spec/spec_helper.rb'
2
+
3
+ describe Fog::VcloudDirector::Generators::Compute::ReconfigureVm do
4
+ let(:current) { Nokogiri::XML(File.read('./spec/fixtures/vm.xml')) }
5
+ let(:hardware) { {} }
6
+ let(:networks) { nic_conf.empty? ? [] : [nic_conf] }
7
+ let(:nic_conf) { {} }
8
+ let(:output) { Nokogiri::XML(Fog::VcloudDirector::Generators::Compute::ReconfigureVm.generate_xml(current, input)) }
9
+ let(:input) do
10
+ input = {}
11
+ input[:hardware] = hardware unless hardware.empty?
12
+ input[:networks] = networks unless networks.empty?
13
+ input
14
+ end
15
+
16
+ describe 'reconfigure hardware' do
17
+ describe 'name' do
18
+ let(:input) { { :name => 'new name' } }
19
+
20
+ it 'name' do
21
+ output.xpath('/*/@name').first.value.must_equal 'new name'
22
+ end
23
+ end
24
+
25
+ describe 'description' do
26
+ let(:input) { { :description => 'new description' } }
27
+
28
+ it 'description' do
29
+ output.at('Description').content.must_equal 'new description'
30
+ end
31
+ end
32
+
33
+ describe 'memory' do
34
+ let(:hardware) { { :memory => { :quantity_mb => 123 } } }
35
+
36
+ it 'memory' do
37
+ mem = output.xpath("//ovf:VirtualHardwareSection/ovf:Item[./rasd:ResourceType = '4']")
38
+ mem.xpath('./rasd:VirtualQuantity').text.must_equal '123'
39
+ end
40
+ end
41
+
42
+ describe 'cpu' do
43
+ let(:hardware) { { :cpu => { :num_cores => 8, :cores_per_socket => 4 } } }
44
+
45
+ it 'cpu' do
46
+ cpu = output.xpath("//ovf:VirtualHardwareSection/ovf:Item[./rasd:ResourceType = '3']")
47
+ cpu.xpath('./rasd:VirtualQuantity').text.must_equal '8'
48
+ cpu.xpath('./vmw:CoresPerSocket').text.must_equal '4'
49
+ end
50
+ end
51
+
52
+ describe 'disk' do
53
+ let(:hardware) { { :disk => disks } }
54
+
55
+ describe 'resize' do
56
+ let(:disks) { { :id => '2000', :capacity_mb => 123 } }
57
+
58
+ it 'resize' do
59
+ all_disks(output).count.must_equal 3
60
+ disk_by_id(output, '2000').at('./rasd:HostResource')['ns13:capacity'].must_equal '123'
61
+ end
62
+ end
63
+
64
+ describe 'resize nonexisting' do
65
+ let(:disks) { { :id => 'nonexisting', :capacity_mb => 123 } }
66
+
67
+ it 'resize nonexisting' do
68
+ -> { output }.must_raise Fog::VcloudDirector::Compute::PreProcessingError
69
+ end
70
+ end
71
+
72
+ describe 'remove' do
73
+ let(:disks) { { :id => '2000', :capacity_mb => -1 } }
74
+
75
+ it 'remove' do
76
+ all_disks(output).count.must_equal 2
77
+ disk_by_id(output, '2000').must_be_empty
78
+ end
79
+ end
80
+
81
+ describe 'remove nonexisting' do
82
+ let(:disks) { { :id => 'nonexisting', :capacity_mb => -1 } }
83
+
84
+ it 'remove nonexisting' do
85
+ all_disks(output).count.must_equal 3
86
+ end
87
+ end
88
+
89
+ describe 'add' do
90
+ let(:disks) { { :capacity_mb => 123 } }
91
+
92
+ it 'add' do
93
+ all_disks(output).count.must_equal 4
94
+ all_disks(output).last.at('./rasd:HostResource')['ns13:capacity'].must_equal '123'
95
+ end
96
+ end
97
+
98
+ describe 'resize, remove and add' do
99
+ let(:disks) do
100
+ [
101
+ { :id => '2000', :capacity_mb => 123 },
102
+ { :id => '2001', :capacity_mb => -1 },
103
+ { :capacity_mb => 321 }
104
+ ]
105
+ end
106
+
107
+ it 'resize, remove and add' do
108
+ all_disks(output).count.must_equal 3
109
+ disk_by_id(output, '2000').at('./rasd:HostResource')['ns13:capacity'].must_equal '123'
110
+ disk_by_id(output, '2001').must_be_empty
111
+ all_disks(output).last.at('./rasd:HostResource')['ns13:capacity'].must_equal '321'
112
+ end
113
+ end
114
+
115
+ def all_disks(xml)
116
+ xml.xpath("//ovf:VirtualHardwareSection/ovf:Item[./rasd:ResourceType = '17']")
117
+ end
118
+
119
+ def disk_by_id(xml, id)
120
+ all_disks(xml).xpath("//ovf:Item[./rasd:InstanceID = '#{id}']")
121
+ end
122
+ end
123
+ end
124
+
125
+ describe 'reconfigure NICs' do
126
+ describe 'update NIC' do
127
+ describe 'update NIC - truthful values' do
128
+ let(:nic_conf) do
129
+ {
130
+ :idx => 0,
131
+ :name => 'vApp net name',
132
+ :mac => '11:22:33:44:55:66',
133
+ :needs => true,
134
+ :ip => '1.2.3.4',
135
+ :connected => true,
136
+ :mode => 'MANUAL',
137
+ :type => 'adapter type'
138
+ }
139
+ end
140
+
141
+ it 'update NIC' do
142
+ assert_nic_count(output, 2)
143
+ assert_nic(
144
+ output,
145
+ 0,
146
+ :name => 'vApp net name',
147
+ :mac => '11:22:33:44:55:66',
148
+ :needs => true,
149
+ :ip => '1.2.3.4',
150
+ :connected => true,
151
+ :mode => 'MANUAL',
152
+ :type => 'adapter type'
153
+ )
154
+ end
155
+ end
156
+
157
+ describe 'update NIC - falseful values' do
158
+ let(:nic_conf) do
159
+ {
160
+ :idx => 0,
161
+ :name => 'vApp net name',
162
+ :mac => '11:22:33:44:55:66',
163
+ :needs => false,
164
+ :ip => '',
165
+ :connected => false,
166
+ :mode => 'MANUAL',
167
+ :type => 'adapter type'
168
+ }
169
+ end
170
+
171
+ it 'update NIC - falseful values' do
172
+ assert_nic_count(output, 2)
173
+ assert_nic(
174
+ output,
175
+ 0,
176
+ :name => 'vApp net name',
177
+ :mac => '11:22:33:44:55:66',
178
+ :needs => false,
179
+ :ip => '',
180
+ :connected => false,
181
+ :mode => 'MANUAL',
182
+ :type => 'adapter type'
183
+ )
184
+ end
185
+ end
186
+ end
187
+
188
+ describe 'remove NIC' do
189
+ let(:nic_conf) { { :idx => 1, :new_idx => -1 } }
190
+
191
+ it 'remove NIC' do
192
+ assert_nic_count(output, 1)
193
+ output.xpath("//xmlns:NetworkConnection[xmlns:NetworkConnectionIndex = '1']").must_be_empty
194
+ end
195
+ end
196
+
197
+ describe 'add NIC' do
198
+ describe 'add NIC - truthful values' do
199
+ let(:nic_conf) do
200
+ {
201
+ :idx => nil,
202
+ :new_idx => '5',
203
+ :name => 'vApp net name',
204
+ :mac => '11:22:33:44:55:66',
205
+ :needs => true,
206
+ :ip => '1.2.3.4',
207
+ :connected => true,
208
+ :mode => 'MANUAL',
209
+ :type => 'adapter type'
210
+ }
211
+ end
212
+
213
+ it 'add NIC' do
214
+ assert_nic_count(output, 3)
215
+ assert_nic(
216
+ output,
217
+ 5,
218
+ :name => 'vApp net name',
219
+ :mac => '11:22:33:44:55:66',
220
+ :needs => true,
221
+ :ip => '1.2.3.4',
222
+ :connected => true,
223
+ :mode => 'MANUAL',
224
+ :type => 'adapter type'
225
+ )
226
+ end
227
+ end
228
+
229
+ describe 'add NIC - falseful values' do
230
+ let(:nic_conf) do
231
+ {
232
+ :idx => nil,
233
+ :new_idx => '5',
234
+ :name => 'vApp net name',
235
+ :mac => '11:22:33:44:55:66',
236
+ :needs => false,
237
+ :ip => '',
238
+ :connected => false,
239
+ :mode => 'MANUAL',
240
+ :type => 'adapter type'
241
+ }
242
+ end
243
+
244
+ it 'add NIC - falseful values' do
245
+ assert_nic_count(output, 3)
246
+ assert_nic(
247
+ output,
248
+ 5,
249
+ :name => 'vApp net name',
250
+ :mac => '11:22:33:44:55:66',
251
+ :needs => false,
252
+ :ip => '',
253
+ :connected => false,
254
+ :mode => 'MANUAL',
255
+ :type => 'adapter type'
256
+ )
257
+ end
258
+ end
259
+
260
+ describe 'add first NIC' do
261
+ let(:networks) do
262
+ [
263
+ {
264
+ :idx => 0,
265
+ :new_idx => -1
266
+ },
267
+ {
268
+ :idx => 1,
269
+ :new_idx => -1
270
+ },
271
+ {
272
+ :idx => nil,
273
+ :new_idx => 2
274
+ }
275
+ ]
276
+ end
277
+
278
+ it 'add first NIC' do
279
+ assert_nic_count(output, 1)
280
+ end
281
+ end
282
+ end
283
+
284
+ describe 'set primary NIC' do
285
+ describe 'regular' do
286
+ let(:nic_conf) { { :idx => 1, :primary => true } }
287
+
288
+ it 'set primary NIC - regular' do
289
+ output.xpath("//xmlns:NetworkConnectionSection/xmlns:PrimaryNetworkConnectionIndex").text.must_equal '1'
290
+ end
291
+ end
292
+
293
+ describe 'when updating idx' do
294
+ let(:nic_conf) { { :idx => 1, :new_idx => 5, :primary => true } }
295
+
296
+ it 'set primary NIC - when updating idx' do
297
+ assert_nic_count(output, 2)
298
+ output.xpath("//xmlns:NetworkConnectionSection/xmlns:PrimaryNetworkConnectionIndex").text.must_equal '5'
299
+ end
300
+ end
301
+
302
+ describe 'new NIC' do
303
+ let(:nic_conf) { { :idx => nil, :new_idx => 3, :primary => true } }
304
+
305
+ it 'set primary NIC - new NIC' do
306
+ assert_nic_count(output, 3)
307
+ output.xpath("//xmlns:NetworkConnectionSection/xmlns:PrimaryNetworkConnectionIndex").text.must_equal '3'
308
+ end
309
+ end
310
+ end
311
+
312
+ describe 'when VM has no NICs yet' do
313
+ let(:current) { Nokogiri::XML(File.read('./spec/fixtures/empty_vm.xml')) }
314
+
315
+ describe 'when VM has no NICs yet - add NIC' do
316
+ let(:nic_conf) do
317
+ {
318
+ :idx => nil,
319
+ :new_idx => '5',
320
+ :name => 'vApp net name',
321
+ :mac => '11:22:33:44:55:66',
322
+ :needs => true,
323
+ :ip => '1.2.3.4',
324
+ :connected => true,
325
+ :mode => 'MANUAL',
326
+ :type => 'adapter type'
327
+ }
328
+ end
329
+
330
+ it 'when VM has no NICs yet - add NIC' do
331
+ assert_nic_count(output, 1)
332
+ assert_nic(
333
+ output,
334
+ 5,
335
+ :name => 'vApp net name',
336
+ :mac => '11:22:33:44:55:66',
337
+ :needs => true,
338
+ :ip => '1.2.3.4',
339
+ :connected => true,
340
+ :mode => 'MANUAL',
341
+ :type => 'adapter type'
342
+ )
343
+ end
344
+ end
345
+
346
+ describe 'set primary NIC' do
347
+ let(:nic_conf) { { :idx => nil, :new_idx => 3, :primary => true } }
348
+
349
+ it 'set primary NIC - new NIC' do
350
+ assert_nic_count(output, 1)
351
+ output.xpath("//xmlns:NetworkConnectionSection/xmlns:PrimaryNetworkConnectionIndex").text.must_equal '3'
352
+ end
353
+ end
354
+ end
355
+
356
+ def assert_nic_count(xml, n)
357
+ xml.xpath("//xmlns:NetworkConnection/xmlns:NetworkConnectionIndex").size.must_equal n
358
+ asset_network_connection_section_ordered(xml, :num_nic => n)
359
+ end
360
+
361
+ def assert_nic(xml, idx, name: nil, mac: nil, ip: nil, connected: nil, mode: nil, type: nil, needs: nil)
362
+ nic = xml.xpath("//xmlns:NetworkConnection[xmlns:NetworkConnectionIndex = '#{idx}']")
363
+ nic.xpath('./@network').first.value.must_equal name
364
+ nic.xpath('./@needsCustomization').first.value.must_equal needs.to_s
365
+ nic.xpath('./xmlns:MACAddress').text.must_equal mac
366
+ nic.xpath('./xmlns:IpAddress').text.must_equal ip
367
+ nic.xpath('./xmlns:IsConnected').text.must_equal connected.to_s
368
+ nic.xpath('./xmlns:NetworkAdapterType').text.must_equal type
369
+ nic.xpath('./xmlns:IpAddressAllocationMode').text.must_equal mode
370
+
371
+ asset_network_connection_ordered(nic)
372
+ end
373
+
374
+ def asset_network_connection_section_ordered(xml, num_nic: 2)
375
+ children = xml.xpath('//xmlns:NetworkConnectionSection').children.select(&:element?).map(&:name)
376
+ order = (%w(Info PrimaryNetworkConnectionIndex) + Array.new(num_nic, 'NetworkConnection') + %w(Link)).select do |el|
377
+ children.include?(el)
378
+ end
379
+ children.must_equal order
380
+ end
381
+
382
+ def asset_network_connection_ordered(xml)
383
+ children = xml.children.select(&:element?).map(&:name)
384
+ order = %w(NetworkConnectionIndex IpAddress ExternalIpAddress IsConnected MACAddress IpAddressAllocationMode NetworkAdapterType).select do |el|
385
+ children.include?(el)
386
+ end
387
+ children.must_equal order
388
+ end
389
+ end
390
+ end