ruby_vcloud_sdk 0.4.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (319) hide show
  1. data/README +1 -0
  2. data/Rakefile +50 -0
  3. data/lib/ruby_vcloud_sdk.rb +19 -0
  4. data/lib/ruby_vcloud_sdk/client.rb +899 -0
  5. data/lib/ruby_vcloud_sdk/config.rb +17 -0
  6. data/lib/ruby_vcloud_sdk/connection/connection.rb +163 -0
  7. data/lib/ruby_vcloud_sdk/connection/file_uploader.rb +43 -0
  8. data/lib/ruby_vcloud_sdk/errors.rb +21 -0
  9. data/lib/ruby_vcloud_sdk/ovf_directory.rb +45 -0
  10. data/lib/ruby_vcloud_sdk/util.rb +21 -0
  11. data/lib/ruby_vcloud_sdk/version.rb +3 -0
  12. data/lib/ruby_vcloud_sdk/xml/constants.rb +427 -0
  13. data/lib/ruby_vcloud_sdk/xml/wrapper.rb +242 -0
  14. data/lib/ruby_vcloud_sdk/xml/wrapper_classes.rb +3 -0
  15. data/lib/ruby_vcloud_sdk/xml/wrapper_classes/admin_catalog.rb +20 -0
  16. data/lib/ruby_vcloud_sdk/xml/wrapper_classes/admin_org.rb +15 -0
  17. data/lib/ruby_vcloud_sdk/xml/wrapper_classes/catalog_item.rb +27 -0
  18. data/lib/ruby_vcloud_sdk/xml/wrapper_classes/disk.rb +40 -0
  19. data/lib/ruby_vcloud_sdk/xml/wrapper_classes/disk_attach_or_detach_params.rb +12 -0
  20. data/lib/ruby_vcloud_sdk/xml/wrapper_classes/disk_create_params.rb +47 -0
  21. data/lib/ruby_vcloud_sdk/xml/wrapper_classes/entity.rb +11 -0
  22. data/lib/ruby_vcloud_sdk/xml/wrapper_classes/file.rb +11 -0
  23. data/lib/ruby_vcloud_sdk/xml/wrapper_classes/hard_disk_item_wrapper.rb +50 -0
  24. data/lib/ruby_vcloud_sdk/xml/wrapper_classes/instantiate_vapp_template_params.rb +71 -0
  25. data/lib/ruby_vcloud_sdk/xml/wrapper_classes/ip_scope.rb +55 -0
  26. data/lib/ruby_vcloud_sdk/xml/wrapper_classes/item.rb +32 -0
  27. data/lib/ruby_vcloud_sdk/xml/wrapper_classes/media.rb +53 -0
  28. data/lib/ruby_vcloud_sdk/xml/wrapper_classes/media_insert_or_eject_params.rb +17 -0
  29. data/lib/ruby_vcloud_sdk/xml/wrapper_classes/metadata_value.rb +15 -0
  30. data/lib/ruby_vcloud_sdk/xml/wrapper_classes/network.rb +15 -0
  31. data/lib/ruby_vcloud_sdk/xml/wrapper_classes/network_config.rb +27 -0
  32. data/lib/ruby_vcloud_sdk/xml/wrapper_classes/network_config_section.rb +25 -0
  33. data/lib/ruby_vcloud_sdk/xml/wrapper_classes/network_connection.rb +71 -0
  34. data/lib/ruby_vcloud_sdk/xml/wrapper_classes/network_connection_section.rb +67 -0
  35. data/lib/ruby_vcloud_sdk/xml/wrapper_classes/nic_item_wrapper.rb +91 -0
  36. data/lib/ruby_vcloud_sdk/xml/wrapper_classes/org_network.rb +19 -0
  37. data/lib/ruby_vcloud_sdk/xml/wrapper_classes/org_vdc_network.rb +11 -0
  38. data/lib/ruby_vcloud_sdk/xml/wrapper_classes/session.rb +17 -0
  39. data/lib/ruby_vcloud_sdk/xml/wrapper_classes/task.rb +32 -0
  40. data/lib/ruby_vcloud_sdk/xml/wrapper_classes/upload_vapp_template_params.rb +11 -0
  41. data/lib/ruby_vcloud_sdk/xml/wrapper_classes/vapp.rb +55 -0
  42. data/lib/ruby_vcloud_sdk/xml/wrapper_classes/vapp_template.rb +19 -0
  43. data/lib/ruby_vcloud_sdk/xml/wrapper_classes/vcloud.rb +15 -0
  44. data/lib/ruby_vcloud_sdk/xml/wrapper_classes/vdc.rb +54 -0
  45. data/lib/ruby_vcloud_sdk/xml/wrapper_classes/vdc_storage_profile.rb +15 -0
  46. data/lib/ruby_vcloud_sdk/xml/wrapper_classes/virtual_hardware_section.rb +68 -0
  47. data/lib/ruby_vcloud_sdk/xml/wrapper_classes/vm.rb +179 -0
  48. data/lib/ruby_vcloud_sdk/xml/xml_templates/AdminAllocatedExtIpRecord.xml +1 -0
  49. data/lib/ruby_vcloud_sdk/xml/xml_templates/AdminCatalog.xml +1 -0
  50. data/lib/ruby_vcloud_sdk/xml/xml_templates/AdminCatalogItemRecord.xml +1 -0
  51. data/lib/ruby_vcloud_sdk/xml/xml_templates/AdminCatalogRecord.xml +1 -0
  52. data/lib/ruby_vcloud_sdk/xml/xml_templates/AdminGroupRecord.xml +1 -0
  53. data/lib/ruby_vcloud_sdk/xml/xml_templates/AdminMediaRecord.xml +1 -0
  54. data/lib/ruby_vcloud_sdk/xml/xml_templates/AdminOrg.xml +1 -0
  55. data/lib/ruby_vcloud_sdk/xml/xml_templates/AdminOrgNetworkRecord.xml +1 -0
  56. data/lib/ruby_vcloud_sdk/xml/xml_templates/AdminShadowVmRecord.xml +1 -0
  57. data/lib/ruby_vcloud_sdk/xml/xml_templates/AdminTaskRecord.xml +1 -0
  58. data/lib/ruby_vcloud_sdk/xml/xml_templates/AdminUserRecord.xml +1 -0
  59. data/lib/ruby_vcloud_sdk/xml/xml_templates/AdminVAppNetworkRecord.xml +1 -0
  60. data/lib/ruby_vcloud_sdk/xml/xml_templates/AdminVAppRecord.xml +1 -0
  61. data/lib/ruby_vcloud_sdk/xml/xml_templates/AdminVAppReference.xml +1 -0
  62. data/lib/ruby_vcloud_sdk/xml/xml_templates/AdminVAppReferences.xml +1 -0
  63. data/lib/ruby_vcloud_sdk/xml/xml_templates/AdminVAppTemplateRecord.xml +1 -0
  64. data/lib/ruby_vcloud_sdk/xml/xml_templates/AdminVdc.xml +1 -0
  65. data/lib/ruby_vcloud_sdk/xml/xml_templates/AdminVdcRecord.xml +1 -0
  66. data/lib/ruby_vcloud_sdk/xml/xml_templates/AdminVdcReference.xml +1 -0
  67. data/lib/ruby_vcloud_sdk/xml/xml_templates/AdminVdcReferences.xml +1 -0
  68. data/lib/ruby_vcloud_sdk/xml/xml_templates/AdminVmRecord.xml +1 -0
  69. data/lib/ruby_vcloud_sdk/xml/xml_templates/AllEULAsAccepted.xml +1 -0
  70. data/lib/ruby_vcloud_sdk/xml/xml_templates/AllocatedExtIpRecord.xml +1 -0
  71. data/lib/ruby_vcloud_sdk/xml/xml_templates/BlockingTaskRecord.xml +1 -0
  72. data/lib/ruby_vcloud_sdk/xml/xml_templates/BlockingTaskReference.xml +1 -0
  73. data/lib/ruby_vcloud_sdk/xml/xml_templates/BlockingTaskReferences.xml +1 -0
  74. data/lib/ruby_vcloud_sdk/xml/xml_templates/CaptureVAppParams.xml +1 -0
  75. data/lib/ruby_vcloud_sdk/xml/xml_templates/Catalog.xml +1 -0
  76. data/lib/ruby_vcloud_sdk/xml/xml_templates/CatalogItem.xml +1 -0
  77. data/lib/ruby_vcloud_sdk/xml/xml_templates/CatalogItemRecord.xml +1 -0
  78. data/lib/ruby_vcloud_sdk/xml/xml_templates/CatalogItemReference.xml +1 -0
  79. data/lib/ruby_vcloud_sdk/xml/xml_templates/CatalogItemReferences.xml +1 -0
  80. data/lib/ruby_vcloud_sdk/xml/xml_templates/CatalogRecord.xml +1 -0
  81. data/lib/ruby_vcloud_sdk/xml/xml_templates/CatalogReference.xml +1 -0
  82. data/lib/ruby_vcloud_sdk/xml/xml_templates/CatalogReferences.xml +1 -0
  83. data/lib/ruby_vcloud_sdk/xml/xml_templates/CellRecord.xml +1 -0
  84. data/lib/ruby_vcloud_sdk/xml/xml_templates/CloneMediaParams.xml +1 -0
  85. data/lib/ruby_vcloud_sdk/xml/xml_templates/CloneVAppParams.xml +1 -0
  86. data/lib/ruby_vcloud_sdk/xml/xml_templates/CloneVAppTemplateParams.xml +1 -0
  87. data/lib/ruby_vcloud_sdk/xml/xml_templates/ComposeVAppParams.xml +1 -0
  88. data/lib/ruby_vcloud_sdk/xml/xml_templates/ControlAccessParams.xml +1 -0
  89. data/lib/ruby_vcloud_sdk/xml/xml_templates/CustomizationSection.xml +1 -0
  90. data/lib/ruby_vcloud_sdk/xml/xml_templates/DatastoreProviderVdcRelationRecord.xml +1 -0
  91. data/lib/ruby_vcloud_sdk/xml/xml_templates/DatastoreRecord.xml +1 -0
  92. data/lib/ruby_vcloud_sdk/xml/xml_templates/DatastoreReference.xml +1 -0
  93. data/lib/ruby_vcloud_sdk/xml/xml_templates/DatastoreReferences.xml +1 -0
  94. data/lib/ruby_vcloud_sdk/xml/xml_templates/DeployVAppParams.xml +1 -0
  95. data/lib/ruby_vcloud_sdk/xml/xml_templates/DhcpService.xml +1 -0
  96. data/lib/ruby_vcloud_sdk/xml/xml_templates/DiskAttachOrDetachParams.xml +5 -0
  97. data/lib/ruby_vcloud_sdk/xml/xml_templates/DiskCreateParams.xml +9 -0
  98. data/lib/ruby_vcloud_sdk/xml/xml_templates/DvSwitchRecord.xml +1 -0
  99. data/lib/ruby_vcloud_sdk/xml/xml_templates/Entity.xml +1 -0
  100. data/lib/ruby_vcloud_sdk/xml/xml_templates/Error.xml +1 -0
  101. data/lib/ruby_vcloud_sdk/xml/xml_templates/EventRecord.xml +1 -0
  102. data/lib/ruby_vcloud_sdk/xml/xml_templates/ExternalNetwork.xml +1 -0
  103. data/lib/ruby_vcloud_sdk/xml/xml_templates/File.xml +1 -0
  104. data/lib/ruby_vcloud_sdk/xml/xml_templates/FirewallService.xml +1 -0
  105. data/lib/ruby_vcloud_sdk/xml/xml_templates/GeneralOrgSettings.xml +1 -0
  106. data/lib/ruby_vcloud_sdk/xml/xml_templates/Group.xml +1 -0
  107. data/lib/ruby_vcloud_sdk/xml/xml_templates/GroupRecord.xml +1 -0
  108. data/lib/ruby_vcloud_sdk/xml/xml_templates/GroupReference.xml +1 -0
  109. data/lib/ruby_vcloud_sdk/xml/xml_templates/GroupReferences.xml +1 -0
  110. data/lib/ruby_vcloud_sdk/xml/xml_templates/GuestCustomizationSection.xml +1 -0
  111. data/lib/ruby_vcloud_sdk/xml/xml_templates/HostRecord.xml +1 -0
  112. data/lib/ruby_vcloud_sdk/xml/xml_templates/HostReference.xml +1 -0
  113. data/lib/ruby_vcloud_sdk/xml/xml_templates/HostReferences.xml +1 -0
  114. data/lib/ruby_vcloud_sdk/xml/xml_templates/InstantiateOvfParams.xml +1 -0
  115. data/lib/ruby_vcloud_sdk/xml/xml_templates/InstantiateVAppTemplateParams.xml +1 -0
  116. data/lib/ruby_vcloud_sdk/xml/xml_templates/IpScope.xml +12 -0
  117. data/lib/ruby_vcloud_sdk/xml/xml_templates/IpsecVpnLocalPeer.xml +1 -0
  118. data/lib/ruby_vcloud_sdk/xml/xml_templates/IpsecVpnPeer.xml +1 -0
  119. data/lib/ruby_vcloud_sdk/xml/xml_templates/IpsecVpnRemotePeer.xml +1 -0
  120. data/lib/ruby_vcloud_sdk/xml/xml_templates/IpsecVpnService.xml +1 -0
  121. data/lib/ruby_vcloud_sdk/xml/xml_templates/IpsecVpnThirdPartyPeer.xml +1 -0
  122. data/lib/ruby_vcloud_sdk/xml/xml_templates/Item.xml +3 -0
  123. data/lib/ruby_vcloud_sdk/xml/xml_templates/ItemVcd.xml +5 -0
  124. data/lib/ruby_vcloud_sdk/xml/xml_templates/LeaseSettingsSection.xml +1 -0
  125. data/lib/ruby_vcloud_sdk/xml/xml_templates/Link.xml +1 -0
  126. data/lib/ruby_vcloud_sdk/xml/xml_templates/Media.xml +6 -0
  127. data/lib/ruby_vcloud_sdk/xml/xml_templates/MediaInsertOrEjectParams.xml +4 -0
  128. data/lib/ruby_vcloud_sdk/xml/xml_templates/MediaRecord.xml +1 -0
  129. data/lib/ruby_vcloud_sdk/xml/xml_templates/MediaReference.xml +1 -0
  130. data/lib/ruby_vcloud_sdk/xml/xml_templates/MediaReferences.xml +1 -0
  131. data/lib/ruby_vcloud_sdk/xml/xml_templates/Metadata.xml +5 -0
  132. data/lib/ruby_vcloud_sdk/xml/xml_templates/MetadataEntry.xml +7 -0
  133. data/lib/ruby_vcloud_sdk/xml/xml_templates/MetadataValue.xml +8 -0
  134. data/lib/ruby_vcloud_sdk/xml/xml_templates/NatService.xml +1 -0
  135. data/lib/ruby_vcloud_sdk/xml/xml_templates/Network.xml +4 -0
  136. data/lib/ruby_vcloud_sdk/xml/xml_templates/NetworkAssignment.xml +1 -0
  137. data/lib/ruby_vcloud_sdk/xml/xml_templates/NetworkConfig.xml +21 -0
  138. data/lib/ruby_vcloud_sdk/xml/xml_templates/NetworkConfigSection.xml +1 -0
  139. data/lib/ruby_vcloud_sdk/xml/xml_templates/NetworkConnection.xml +11 -0
  140. data/lib/ruby_vcloud_sdk/xml/xml_templates/NetworkConnectionSection.xml +1 -0
  141. data/lib/ruby_vcloud_sdk/xml/xml_templates/NetworkPoolRecord.xml +1 -0
  142. data/lib/ruby_vcloud_sdk/xml/xml_templates/NetworkPoolReference.xml +1 -0
  143. data/lib/ruby_vcloud_sdk/xml/xml_templates/NetworkPoolReferences.xml +1 -0
  144. data/lib/ruby_vcloud_sdk/xml/xml_templates/NetworkRecord.xml +1 -0
  145. data/lib/ruby_vcloud_sdk/xml/xml_templates/NetworkReference.xml +1 -0
  146. data/lib/ruby_vcloud_sdk/xml/xml_templates/NetworkReferences.xml +1 -0
  147. data/lib/ruby_vcloud_sdk/xml/xml_templates/NetworkService.xml +1 -0
  148. data/lib/ruby_vcloud_sdk/xml/xml_templates/Org.xml +1 -0
  149. data/lib/ruby_vcloud_sdk/xml/xml_templates/OrgEmailSettings.xml +1 -0
  150. data/lib/ruby_vcloud_sdk/xml/xml_templates/OrgList.xml +1 -0
  151. data/lib/ruby_vcloud_sdk/xml/xml_templates/OrgNetwork.xml +1 -0
  152. data/lib/ruby_vcloud_sdk/xml/xml_templates/OrgNetworkRecord.xml +1 -0
  153. data/lib/ruby_vcloud_sdk/xml/xml_templates/OrgNetworkReference.xml +1 -0
  154. data/lib/ruby_vcloud_sdk/xml/xml_templates/OrgNetworkReferences.xml +1 -0
  155. data/lib/ruby_vcloud_sdk/xml/xml_templates/OrgPasswordPolicySettings.xml +1 -0
  156. data/lib/ruby_vcloud_sdk/xml/xml_templates/OrgRecord.xml +1 -0
  157. data/lib/ruby_vcloud_sdk/xml/xml_templates/OrgReference.xml +1 -0
  158. data/lib/ruby_vcloud_sdk/xml/xml_templates/OrgReferences.xml +1 -0
  159. data/lib/ruby_vcloud_sdk/xml/xml_templates/OrgSettings.xml +1 -0
  160. data/lib/ruby_vcloud_sdk/xml/xml_templates/OrgVAppTemplateLeaseSettings.xml +1 -0
  161. data/lib/ruby_vcloud_sdk/xml/xml_templates/OrgVdcNetwork.xml +1 -0
  162. data/lib/ruby_vcloud_sdk/xml/xml_templates/OrgVdcRecord.xml +1 -0
  163. data/lib/ruby_vcloud_sdk/xml/xml_templates/OrgVdcReference.xml +1 -0
  164. data/lib/ruby_vcloud_sdk/xml/xml_templates/OrgVdcReferences.xml +1 -0
  165. data/lib/ruby_vcloud_sdk/xml/xml_templates/OrgVdcResourcePoolRelationRecord.xml +1 -0
  166. data/lib/ruby_vcloud_sdk/xml/xml_templates/Owner.xml +1 -0
  167. data/lib/ruby_vcloud_sdk/xml/xml_templates/PortgroupRecord.xml +1 -0
  168. data/lib/ruby_vcloud_sdk/xml/xml_templates/ProductSectionList.xml +1 -0
  169. data/lib/ruby_vcloud_sdk/xml/xml_templates/ProviderVdc.xml +1 -0
  170. data/lib/ruby_vcloud_sdk/xml/xml_templates/ProviderVdcResourcePoolRelationRecord.xml +1 -0
  171. data/lib/ruby_vcloud_sdk/xml/xml_templates/PublishCatalogParams.xml +1 -0
  172. data/lib/ruby_vcloud_sdk/xml/xml_templates/QueryList.xml +1 -0
  173. data/lib/ruby_vcloud_sdk/xml/xml_templates/QueryResultRecords.xml +1 -0
  174. data/lib/ruby_vcloud_sdk/xml/xml_templates/RasdItemsList.xml +1 -0
  175. data/lib/ruby_vcloud_sdk/xml/xml_templates/RecomposeVAppParams.xml +1 -0
  176. data/lib/ruby_vcloud_sdk/xml/xml_templates/Record.xml +1 -0
  177. data/lib/ruby_vcloud_sdk/xml/xml_templates/Reference.xml +1 -0
  178. data/lib/ruby_vcloud_sdk/xml/xml_templates/References.xml +1 -0
  179. data/lib/ruby_vcloud_sdk/xml/xml_templates/RelocateParams.xml +1 -0
  180. data/lib/ruby_vcloud_sdk/xml/xml_templates/ResourceEntity.xml +1 -0
  181. data/lib/ruby_vcloud_sdk/xml/xml_templates/ResourcePoolRecord.xml +1 -0
  182. data/lib/ruby_vcloud_sdk/xml/xml_templates/Right.xml +1 -0
  183. data/lib/ruby_vcloud_sdk/xml/xml_templates/RightRecord.xml +1 -0
  184. data/lib/ruby_vcloud_sdk/xml/xml_templates/RightReference.xml +1 -0
  185. data/lib/ruby_vcloud_sdk/xml/xml_templates/RightReferences.xml +1 -0
  186. data/lib/ruby_vcloud_sdk/xml/xml_templates/Role.xml +1 -0
  187. data/lib/ruby_vcloud_sdk/xml/xml_templates/RoleRecord.xml +1 -0
  188. data/lib/ruby_vcloud_sdk/xml/xml_templates/RoleReference.xml +1 -0
  189. data/lib/ruby_vcloud_sdk/xml/xml_templates/RoleReferences.xml +1 -0
  190. data/lib/ruby_vcloud_sdk/xml/xml_templates/RuntimeInfoSection.xml +1 -0
  191. data/lib/ruby_vcloud_sdk/xml/xml_templates/ScreenTicket.xml +1 -0
  192. data/lib/ruby_vcloud_sdk/xml/xml_templates/Session.xml +1 -0
  193. data/lib/ruby_vcloud_sdk/xml/xml_templates/ShadowVMReferences.xml +1 -0
  194. data/lib/ruby_vcloud_sdk/xml/xml_templates/StaticRoutingService.xml +1 -0
  195. data/lib/ruby_vcloud_sdk/xml/xml_templates/StrandedUserRecord.xml +1 -0
  196. data/lib/ruby_vcloud_sdk/xml/xml_templates/Task.xml +0 -0
  197. data/lib/ruby_vcloud_sdk/xml/xml_templates/TaskRecord.xml +1 -0
  198. data/lib/ruby_vcloud_sdk/xml/xml_templates/TaskReference.xml +1 -0
  199. data/lib/ruby_vcloud_sdk/xml/xml_templates/TaskReferences.xml +1 -0
  200. data/lib/ruby_vcloud_sdk/xml/xml_templates/TasksList.xml +1 -0
  201. data/lib/ruby_vcloud_sdk/xml/xml_templates/UndeployVAppParams.xml +1 -0
  202. data/lib/ruby_vcloud_sdk/xml/xml_templates/UploadVAppTemplateParams.xml +1 -0
  203. data/lib/ruby_vcloud_sdk/xml/xml_templates/User.xml +1 -0
  204. data/lib/ruby_vcloud_sdk/xml/xml_templates/UserRecord.xml +1 -0
  205. data/lib/ruby_vcloud_sdk/xml/xml_templates/UserReference.xml +1 -0
  206. data/lib/ruby_vcloud_sdk/xml/xml_templates/UserReferences.xml +1 -0
  207. data/lib/ruby_vcloud_sdk/xml/xml_templates/VApp.xml +1 -0
  208. data/lib/ruby_vcloud_sdk/xml/xml_templates/VAppLeaseSettings.xml +1 -0
  209. data/lib/ruby_vcloud_sdk/xml/xml_templates/VAppNetwork.xml +1 -0
  210. data/lib/ruby_vcloud_sdk/xml/xml_templates/VAppNetworkRecord.xml +1 -0
  211. data/lib/ruby_vcloud_sdk/xml/xml_templates/VAppNetworkReference.xml +1 -0
  212. data/lib/ruby_vcloud_sdk/xml/xml_templates/VAppNetworkReferences.xml +1 -0
  213. data/lib/ruby_vcloud_sdk/xml/xml_templates/VAppOrgNetworkRelationRecord.xml +1 -0
  214. data/lib/ruby_vcloud_sdk/xml/xml_templates/VAppOrgNetworkRelationReference.xml +1 -0
  215. data/lib/ruby_vcloud_sdk/xml/xml_templates/VAppOrgNetworkRelationReferences.xml +1 -0
  216. data/lib/ruby_vcloud_sdk/xml/xml_templates/VAppRecord.xml +1 -0
  217. data/lib/ruby_vcloud_sdk/xml/xml_templates/VAppReference.xml +1 -0
  218. data/lib/ruby_vcloud_sdk/xml/xml_templates/VAppReferences.xml +1 -0
  219. data/lib/ruby_vcloud_sdk/xml/xml_templates/VAppTemplate.xml +1 -0
  220. data/lib/ruby_vcloud_sdk/xml/xml_templates/VAppTemplateRecord.xml +1 -0
  221. data/lib/ruby_vcloud_sdk/xml/xml_templates/VAppTemplateReference.xml +1 -0
  222. data/lib/ruby_vcloud_sdk/xml/xml_templates/VAppTemplateReferences.xml +1 -0
  223. data/lib/ruby_vcloud_sdk/xml/xml_templates/VCloud.xml +1 -0
  224. data/lib/ruby_vcloud_sdk/xml/xml_templates/VMRecord.xml +1 -0
  225. data/lib/ruby_vcloud_sdk/xml/xml_templates/VMReference.xml +1 -0
  226. data/lib/ruby_vcloud_sdk/xml/xml_templates/VMReferences.xml +1 -0
  227. data/lib/ruby_vcloud_sdk/xml/xml_templates/VMWProviderVdcRecord.xml +1 -0
  228. data/lib/ruby_vcloud_sdk/xml/xml_templates/VMWProviderVdcReference.xml +1 -0
  229. data/lib/ruby_vcloud_sdk/xml/xml_templates/VMWProviderVdcReferences.xml +1 -0
  230. data/lib/ruby_vcloud_sdk/xml/xml_templates/Vdc.xml +1 -0
  231. data/lib/ruby_vcloud_sdk/xml/xml_templates/VdcReferences.xml +1 -0
  232. data/lib/ruby_vcloud_sdk/xml/xml_templates/VdcStorageProfile.xml +1 -0
  233. data/lib/ruby_vcloud_sdk/xml/xml_templates/VirtualCenterRecord.xml +1 -0
  234. data/lib/ruby_vcloud_sdk/xml/xml_templates/VirtualCenterReference.xml +1 -0
  235. data/lib/ruby_vcloud_sdk/xml/xml_templates/VirtualCenterReferences.xml +1 -0
  236. data/lib/ruby_vcloud_sdk/xml/xml_templates/Vm.xml +1 -0
  237. data/lib/ruby_vcloud_sdk/xml/xml_templates/VmPendingQuestion.xml +1 -0
  238. data/lib/ruby_vcloud_sdk/xml/xml_templates/VmQuestionAnswer.xml +1 -0
  239. data/lib/ruby_vcloud_sdk/xml/xml_templates/generate_dictionary.rb +8 -0
  240. data/spec/assets/admin_org_response.xml +75 -0
  241. data/spec/assets/catalog_add_item_response.xml +8 -0
  242. data/spec/assets/catalog_add_vapp_request.xml +5 -0
  243. data/spec/assets/catalog_item_added_response.xml +19 -0
  244. data/spec/assets/catalog_response.xml +19 -0
  245. data/spec/assets/existing_media_busy_response.xml +19 -0
  246. data/spec/assets/existing_media_catalog_item.xml +8 -0
  247. data/spec/assets/existing_media_delete_task_done.xml +6 -0
  248. data/spec/assets/existing_media_done_response.xml +11 -0
  249. data/spec/assets/existing_vapp_resolver_response.xml +3 -0
  250. data/spec/assets/existing_vapp_template_catalog_resolver_response.xml +3 -0
  251. data/spec/assets/existing_vapp_template_instantiate_response.xml +20 -0
  252. data/spec/assets/existing_vapp_template_instantiate_task_error_response.xml +7 -0
  253. data/spec/assets/existing_vapp_template_instantiate_task_start_response.xml +7 -0
  254. data/spec/assets/existing_vapp_template_instantiate_task_success_response.xml +7 -0
  255. data/spec/assets/existing_vapp_template_item_response.xml +8 -0
  256. data/spec/assets/existing_vapp_template_ready_response.xml +79 -0
  257. data/spec/assets/finalize_upload_task_done_response.xml +7 -0
  258. data/spec/assets/finalize_upload_task_response.xml +7 -0
  259. data/spec/assets/indy_disk_attach_request.xml +3 -0
  260. data/spec/assets/indy_disk_attach_task.xml +6 -0
  261. data/spec/assets/indy_disk_attach_task_error.xml +6 -0
  262. data/spec/assets/indy_disk_create_error.xml +1 -0
  263. data/spec/assets/indy_disk_create_request.xml +4 -0
  264. data/spec/assets/indy_disk_create_response.xml +19 -0
  265. data/spec/assets/indy_disk_delete_task.xml +6 -0
  266. data/spec/assets/indy_disk_detach_request.xml +3 -0
  267. data/spec/assets/indy_disk_detach_task.xml +6 -0
  268. data/spec/assets/indy_disk_response.xml +11 -0
  269. data/spec/assets/instantiated_suspended_vapp_response.xml +209 -0
  270. data/spec/assets/instantiated_vapp_delelete_done_task.xml +5 -0
  271. data/spec/assets/instantiated_vapp_delelete_running_task.xml +6 -0
  272. data/spec/assets/instantiated_vapp_network_config_add_network_request.xml +36 -0
  273. data/spec/assets/instantiated_vapp_network_config_modify_network_task_success.xml +6 -0
  274. data/spec/assets/instantiated_vapp_network_config_remove_network_request.xml +6 -0
  275. data/spec/assets/instantiated_vapp_network_config_section_response.xml +17 -0
  276. data/spec/assets/instantiated_vapp_off_response.xml +206 -0
  277. data/spec/assets/instantiated_vapp_on_response.xml +205 -0
  278. data/spec/assets/instantiated_vapp_power_task_running.xml +6 -0
  279. data/spec/assets/instantiated_vapp_power_task_success.xml +6 -0
  280. data/spec/assets/instantiated_vapp_response.xml +205 -0
  281. data/spec/assets/instantiated_vm_change_task_running.xml +6 -0
  282. data/spec/assets/instantiated_vm_change_task_success.xml +6 -0
  283. data/spec/assets/instantiated_vm_cpu_response.xml +11 -0
  284. data/spec/assets/instantiated_vm_insert_media_task_done.xml +6 -0
  285. data/spec/assets/instantiated_vm_memory_response.xml +11 -0
  286. data/spec/assets/instantiated_vm_modify_task_running.xml +6 -0
  287. data/spec/assets/instantiated_vm_modify_task_success.xml +5 -0
  288. data/spec/assets/instantiated_vm_network_section_response.xml +11 -0
  289. data/spec/assets/instantiated_vm_response.xml +149 -0
  290. data/spec/assets/media_add_to_catalog_request.xml +5 -0
  291. data/spec/assets/media_add_to_catalog_response.xml +8 -0
  292. data/spec/assets/media_delete_task_done.xml +6 -0
  293. data/spec/assets/media_upload_pending_response.xml +13 -0
  294. data/spec/assets/media_upload_request.xml +2 -0
  295. data/spec/assets/metadata_set_request.xml +3 -0
  296. data/spec/assets/metadata_set_task_done.xml +6 -0
  297. data/spec/assets/org_network_response.xml +22 -0
  298. data/spec/assets/reconfigure_vm_request.xml +133 -0
  299. data/spec/assets/reconfigure_vm_task.xml +8 -0
  300. data/spec/assets/session.xml +7 -0
  301. data/spec/assets/test-config.yml +38 -0
  302. data/spec/assets/undeploy_params.xml +1 -0
  303. data/spec/assets/vapp_template_catalog_resolver_response.xml +3 -0
  304. data/spec/assets/vapp_template_delelete_done_task.xml +5 -0
  305. data/spec/assets/vapp_template_delelete_running_task.xml +6 -0
  306. data/spec/assets/vapp_template_instantiate_request.xml +8 -0
  307. data/spec/assets/vapp_template_instantiate_with_locality_request.xml +14 -0
  308. data/spec/assets/vapp_template_no_disk_response.xml +27 -0
  309. data/spec/assets/vapp_template_ready_response.xml +79 -0
  310. data/spec/assets/vapp_template_upload_complete.xml +28 -0
  311. data/spec/assets/vapp_template_upload_failed.xml +28 -0
  312. data/spec/assets/vapp_template_upload_request.xml +4 -0
  313. data/spec/assets/vapp_template_upload_response.xml +25 -0
  314. data/spec/assets/vcloud_response.xml +56 -0
  315. data/spec/assets/vdc_response.xml +57 -0
  316. data/spec/spec_helper.rb +107 -0
  317. data/spec/unit/client_response.rb +700 -0
  318. data/spec/unit/client_spec.rb +1152 -0
  319. metadata +498 -0
@@ -0,0 +1,242 @@
1
+ require "nokogiri"
2
+
3
+ module VCloudSdk
4
+ module Xml
5
+
6
+ class WrapperFactory
7
+ @@xml_dictionary = {}
8
+ class << self
9
+ def wrap_document(xml, ns = nil, namespace_defintions = nil, *args)
10
+ doc = Nokogiri::XML(xml)
11
+ type_name = doc.root.name
12
+ node_class = find_wrapper_class(type_name)
13
+ node_class.new(doc, ns, namespace_defintions, *args)
14
+ end
15
+
16
+ def wrap_node(node, ns, namespace_defintions = nil, *args)
17
+ type_name = node.node_name
18
+ node_class = find_wrapper_class(type_name)
19
+ node_class.new(node, ns, namespace_defintions, *args)
20
+ end
21
+
22
+ def wrap_nodes(nodes, ns, namespace_defintions)
23
+ nodes.collect { |node| WrapperFactory.wrap_node(node, ns,
24
+ namespace_defintions) }
25
+ end
26
+
27
+ # TODO: We might run into a bug later if there are ever XML node types
28
+ # of the same name but different namespace
29
+ def find_wrapper_class(type_name)
30
+ # for Ruby 1.9, we would need pass false in as the 2nd parameter
31
+ if Xml.constants.find { |c| c.to_sym == type_name.to_sym }
32
+ Xml.const_get(type_name.to_sym)
33
+ else
34
+ Wrapper
35
+ end
36
+ end
37
+
38
+ def create_instance(type_name, ns = nil, namespace_defintions = nil,
39
+ *args)
40
+ xml = @@xml_dictionary[type_name]
41
+ if (xml)
42
+ wrap_document(xml, ns, namespace_defintions, *args)
43
+ else
44
+ raise CpiError,
45
+ "XML type #{type_name} not found in xml_templates dir."
46
+ end
47
+ end
48
+
49
+ # Load all the XML files
50
+ Dir[File.dirname(__FILE__) + "/xml_templates/*.xml"].each do |f|
51
+ @@xml_dictionary[File.basename(f, ".xml")] =
52
+ File.open(File.expand_path(f)).read
53
+ end
54
+ end
55
+ end
56
+
57
+ class Wrapper
58
+ # Because we are wrapping individual nodes in a wrapper and turning them
59
+ # into XML docs, we need to preserve the namespace information with each
60
+ # node
61
+ def initialize(xml, ns = nil, ns_definitions = nil)
62
+ if xml.is_a?(Nokogiri::XML::Document)
63
+ @doc = xml
64
+ @root = @doc.root
65
+ else
66
+ @root = xml
67
+ end
68
+ if ns
69
+ @ns = ns
70
+ else
71
+ @ns = @root.namespace
72
+ end
73
+
74
+ # Use (server) supplied prefixes defaulting to the preset ones for
75
+ # those not specified.
76
+ @doc_namespaces = ns_definitions.nil? ? Array.new :
77
+ Array.new(ns_definitions)
78
+ if @root.namespace_definitions
79
+ @doc_namespaces.concat(@root.namespace_definitions)
80
+ end
81
+ end
82
+
83
+ def doc_namespaces
84
+ @doc_namespaces
85
+ end
86
+
87
+ def xpath(*args)
88
+ WrapperFactory::wrap_nodes(@root.xpath(*args), @ns, @doc_namespaces)
89
+ end
90
+
91
+ def href
92
+ @root["href"]
93
+ end
94
+
95
+ def name
96
+ @root["name"]
97
+ end
98
+
99
+ def urn
100
+ @root["id"]
101
+ end
102
+
103
+ def type
104
+ @root["type"]
105
+ end
106
+
107
+ def create_xpath_query(type_name, attrs = nil, only_immediate = false,
108
+ namespace = VCLOUD_NAMESPACE)
109
+ qualified_name = create_qualified_name(type_name, namespace)
110
+ depth_prefix = only_immediate ? nil : ".//"
111
+ if attrs && attrs.length > 0
112
+ attrs_list = []
113
+ attrs.each do |k,v|
114
+ attrs_list.push(%Q[@#{k}="#{v}"])
115
+ end
116
+
117
+ "#{depth_prefix}#{qualified_name}[#{attrs_list.join(" and ")}]"
118
+ else
119
+ "#{depth_prefix}#{qualified_name}"
120
+ end
121
+ end
122
+
123
+ def create_qualified_name(name, href)
124
+ namespace_wanted = nil
125
+ ns_wanted_no_prefix = nil
126
+ # Do it this way so the namespaces are searched in the order they are
127
+ # added. The first one is the one closest to the node, while the ones
128
+ # at the document root are the last.
129
+ @doc_namespaces.each do |ns|
130
+ if ns.href == href
131
+ if ns.prefix.nil?
132
+ ns_wanted_no_prefix = ns;
133
+ else
134
+ namespace_wanted = ns
135
+ break
136
+ end
137
+ end
138
+ end
139
+ namespace_wanted = ns_wanted_no_prefix unless namespace_wanted
140
+ raise CpiError, "Namespace #{href} not found." unless namespace_wanted
141
+ ns_prefix = namespace_wanted.prefix.nil? ? "xmlns" :
142
+ namespace_wanted.prefix
143
+ "#{ns_prefix}:#{name}"
144
+ end
145
+
146
+ def get_nodes(type_name, attrs = nil, only_immediate = false,
147
+ namespace = VCLOUD_NAMESPACE)
148
+ xpath(create_xpath_query(type_name, attrs, only_immediate, namespace))
149
+ end
150
+
151
+ # There seem to be a Nokogiri bug such that attribute's namespace
152
+ # prefixes are ignored. For example, to return an attribute named
153
+ # vcloud:capacity, use "capacity", not "vcloud:capacity".
154
+ def [](attr)
155
+ @root[attr]
156
+ end
157
+
158
+ def []=(attr, value)
159
+ @root[attr] = value
160
+ end
161
+
162
+ def content
163
+ @root.content
164
+ end
165
+
166
+ def content=(value)
167
+ @root.content = value
168
+ end
169
+
170
+ def ==(other)
171
+ @root.to_s == other.node.to_s
172
+ end
173
+
174
+ def to_s
175
+ add_namespaces.to_xml.each_line.inject("") {
176
+ |xml, line| xml.concat(line.sub(/^\s+$/, "")) }
177
+ end
178
+
179
+ def add_child(child, namespace_prefix = nil, namespace_href = nil,
180
+ parent = @root)
181
+ if child.is_a? Wrapper
182
+ @root.add_child(child.node)
183
+ elsif child.is_a? String
184
+ node = Nokogiri::XML::Node.new(child, parent)
185
+ if (namespace_prefix.nil? ^ namespace_href.nil?)
186
+ raise CpiError,
187
+ "Namespace prefix must both be nil or defined together."
188
+ end
189
+ # This is a little more cumbersome but Nokogiri has problems
190
+ # figuring out the right namespace prefix otherwise
191
+ if namespace_prefix
192
+ ns = node.add_namespace_definition(namespace_prefix,
193
+ namespace_href)
194
+ node.namespace = ns
195
+ end
196
+ parent.add_child(node)
197
+ else
198
+ raise CpiError, "Cannot add child. Unknown object passed in."
199
+ end
200
+ end
201
+
202
+ # Creates a child node but does not add it to the document. Used when
203
+ # a new child node has to be in a specific location or order.
204
+ def create_child(tag)
205
+ Nokogiri::XML::Node.new(tag, @root)
206
+ end
207
+
208
+ protected
209
+
210
+ def node
211
+ @root
212
+ end
213
+
214
+ def namespace
215
+ @ns
216
+ end
217
+
218
+ def namespace_definitions
219
+ @doc_namespaces
220
+ end
221
+
222
+ private
223
+
224
+ def add_namespaces
225
+ clone = @root.clone
226
+
227
+ # This is a workaround for a Nokogiri bug. If you add a namespace
228
+ # with a nil for prefix, i.e. the namespace following xmlns, Nokogiri
229
+ # will remove the original namespace and assume you are setting a new
230
+ # namespace for the node.
231
+ default_ns = clone.namespace
232
+
233
+ @doc_namespaces.each do |ns|
234
+ clone.add_namespace_definition(ns.prefix, ns.href)
235
+ end
236
+ clone.namespace = default_ns
237
+ clone
238
+ end
239
+ end
240
+
241
+ end
242
+ end
@@ -0,0 +1,3 @@
1
+ $:.unshift(File.join(File.dirname(__FILE__), "wrapper_classes"))
2
+
3
+ Dir[File.dirname(__FILE__) + "/wrapper_classes/*.rb"].each { |r| require File.expand_path(r) }
@@ -0,0 +1,20 @@
1
+ module VCloudSdk
2
+ module Xml
3
+
4
+ class AdminCatalog < Wrapper
5
+ def add_item_link
6
+ get_nodes("Link", {"type"=>ADMIN_MEDIA_TYPE[:CATALOG_ITEM],
7
+ "rel"=>"add"}).first
8
+ end
9
+
10
+ def catalog_items(name = nil)
11
+ if name
12
+ get_nodes("CatalogItem", {"name" => name})
13
+ else
14
+ get_nodes("CatalogItem")
15
+ end
16
+ end
17
+ end
18
+
19
+ end
20
+ end
@@ -0,0 +1,15 @@
1
+ module VCloudSdk
2
+ module Xml
3
+
4
+ class AdminOrg < Wrapper
5
+ def vdc(name)
6
+ get_nodes("Vdc", {"name"=>name}).first
7
+ end
8
+
9
+ def catalog(name)
10
+ get_nodes("CatalogReference", {"name"=>name}).first
11
+ end
12
+ end
13
+
14
+ end
15
+ end
@@ -0,0 +1,27 @@
1
+ module VCloudSdk
2
+ module Xml
3
+
4
+ class CatalogItem < Wrapper
5
+ def name=(name)
6
+ @root["name"] = name
7
+ end
8
+
9
+ def remove_link
10
+ get_nodes("Link", {"rel" => "remove"}, true).first
11
+ end
12
+
13
+ def entity=(entity)
14
+ entity_node = get_nodes("Entity").first
15
+ entity_node["name"] = entity.name
16
+ entity_node["id"] = entity.urn
17
+ entity_node["href"] = entity.href
18
+ entity_node["type"] = entity.type
19
+ end
20
+
21
+ def entity
22
+ get_nodes("Entity").first
23
+ end
24
+ end
25
+
26
+ end
27
+ end
@@ -0,0 +1,40 @@
1
+ module VCloudSdk
2
+ module Xml
3
+
4
+ class Disk < Wrapper
5
+ def bus_type=(value)
6
+ @root["busType"] = value.to_s
7
+ end
8
+
9
+ def bus_sub_type=(value)
10
+ @root["busSubType"] = value.to_s
11
+ end
12
+
13
+ def delete_link
14
+ get_nodes("Link", {"rel" => "remove"}, true).first
15
+ end
16
+
17
+ def name=(name)
18
+ @root["name"] = name.to_s
19
+ end
20
+
21
+ def size_mb
22
+ @root["size"].to_i/1024/1024
23
+ end
24
+
25
+ def running_tasks
26
+ tasks.find_all {|t| RUNNING.include?(t.status)}
27
+ end
28
+
29
+ def tasks
30
+ get_nodes("Task")
31
+ end
32
+
33
+ private
34
+
35
+ RUNNING = [TASK_STATUS[:RUNNING], TASK_STATUS[:QUEUED],
36
+ TASK_STATUS[:PRE_RUNNING]]
37
+ end
38
+
39
+ end
40
+ end
@@ -0,0 +1,12 @@
1
+ module VCloudSdk
2
+ module Xml
3
+
4
+ class DiskAttachOrDetachParams < Wrapper
5
+ def disk_href=(value)
6
+ disk = get_nodes("Disk").first
7
+ disk["href"] = value.to_s
8
+ end
9
+ end
10
+
11
+ end
12
+ end
@@ -0,0 +1,47 @@
1
+ module VCloudSdk
2
+ module Xml
3
+
4
+ class DiskCreateParams < Wrapper
5
+ def bus_type=(value)
6
+ disk["busType"] = value.to_s
7
+ end
8
+
9
+ def bus_sub_type=(value)
10
+ disk["busSubType"] = value.to_s
11
+ end
12
+
13
+ def name=(name)
14
+ disk["name"] = name.to_s
15
+ end
16
+
17
+ def size_bytes=(value)
18
+ disk["size"] = value.to_s
19
+ end
20
+
21
+ def add_locality(local)
22
+ if !@local_exists.nil? && @local_exists
23
+ raise "Cannot add locality more than once to DiskCreateParams"
24
+ end
25
+ @local_exists = true
26
+ node = create_child("Locality")
27
+ node["href"] = local.href
28
+ # Bug in create independent disk API. It needs the UUID part of the
29
+ # ID instead of the entire ID like other REST API calls.
30
+ node["id"] = extract_uuid(local.urn)
31
+ node["type"] = MEDIA_TYPE[:VM]
32
+ disk.node.after(node)
33
+ end
34
+
35
+ private
36
+
37
+ def disk
38
+ get_nodes("Disk").first
39
+ end
40
+
41
+ def extract_uuid(id)
42
+ id.split(":").first
43
+ end
44
+ end
45
+
46
+ end
47
+ end
@@ -0,0 +1,11 @@
1
+ module VCloudSdk
2
+ module Xml
3
+
4
+ class Entity < Wrapper
5
+ def link
6
+ get_nodes("Link").first
7
+ end
8
+ end
9
+
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module VCloudSdk
2
+ module Xml
3
+
4
+ class File < Wrapper
5
+ def upload_link
6
+ get_nodes("Link", {"rel"=>"upload:default"}).first
7
+ end
8
+ end
9
+
10
+ end
11
+ end
@@ -0,0 +1,50 @@
1
+ require "item"
2
+
3
+ module VCloudSdk
4
+ module Xml
5
+
6
+ class HardDiskItemWrapper < Item
7
+ def hash
8
+ [disk_id, instance_id, bus_type, bus_sub_type].hash
9
+ end
10
+
11
+ def eql?(other)
12
+ disk_id == other.disk_id && instance_id == other.instance_id &&
13
+ bus_type == other.bus_type && bus_sub_type == other.bus_sub_type
14
+ end
15
+
16
+ def initialize(item)
17
+ super(item.node, item.namespace, item.namespace_definitions)
18
+ end
19
+
20
+ def capacity_mb
21
+ host_resource[HOST_RESOURCE_ATTRIBUTE[:CAPACITY]]
22
+ end
23
+
24
+ def disk_id
25
+ get_rasd_content(RASD_TYPES[:ADDRESS_ON_PARENT])
26
+ end
27
+
28
+ def instance_id
29
+ get_rasd_content(RASD_TYPES[:INSTANCE_ID])
30
+ end
31
+
32
+ def bus_sub_type
33
+ host_resource[HOST_RESOURCE_ATTRIBUTE[:BUS_SUB_TYPE]]
34
+ end
35
+
36
+ def bus_type
37
+ host_resource[HOST_RESOURCE_ATTRIBUTE[:BUS_TYPE]]
38
+ end
39
+
40
+ def parent_instance_id
41
+ get_rasd_content(RASD_TYPES[:PARENT])
42
+ end
43
+
44
+ def host_resource
45
+ get_rasd(RASD_TYPES[:HOST_RESOURCE])
46
+ end
47
+ end
48
+
49
+ end
50
+ end