fog 0.5.3 → 0.6.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 (388) hide show
  1. data/.gitignore +1 -0
  2. data/Gemfile.lock +3 -3
  3. data/bin/fog +0 -5
  4. data/changelog.txt +88 -0
  5. data/fog.gemspec +3 -3
  6. data/lib/fog.rb +1 -2
  7. data/lib/fog/aws/elb.rb +2 -0
  8. data/lib/fog/aws/iam.rb +7 -0
  9. data/lib/fog/aws/parsers/iam/get_group.rb +55 -0
  10. data/lib/fog/aws/parsers/iam/get_user_policy.rb +27 -0
  11. data/lib/fog/aws/parsers/iam/update_group.rb +26 -0
  12. data/lib/fog/aws/parsers/iam/update_user.rb +27 -0
  13. data/lib/fog/aws/requests/iam/create_access_key.rb +1 -1
  14. data/lib/fog/aws/requests/iam/get_group.rb +44 -0
  15. data/lib/fog/aws/requests/iam/get_user_policy.rb +36 -0
  16. data/lib/fog/aws/requests/iam/update_group.rb +39 -0
  17. data/lib/fog/aws/requests/iam/update_signing_certificate.rb +32 -0
  18. data/lib/fog/aws/requests/iam/update_user.rb +39 -0
  19. data/lib/fog/aws/ses.rb +2 -0
  20. data/lib/fog/aws/simpledb.rb +2 -0
  21. data/lib/fog/bin.rb +3 -8
  22. data/lib/fog/bin/aws.rb +2 -14
  23. data/lib/fog/bin/bluebox.rb +6 -8
  24. data/lib/fog/bin/dnsimple.rb +30 -0
  25. data/lib/fog/bin/ecloud.rb +30 -0
  26. data/lib/fog/bin/go_grid.rb +1 -7
  27. data/lib/fog/bin/linode.rb +0 -6
  28. data/lib/fog/bin/local.rb +1 -7
  29. data/lib/fog/bin/new_servers.rb +1 -7
  30. data/lib/fog/bin/rackspace.rb +2 -14
  31. data/lib/fog/bin/slicehost.rb +2 -8
  32. data/lib/fog/bin/terremark.rb +0 -5
  33. data/lib/fog/bin/voxel.rb +30 -0
  34. data/lib/fog/cdn/aws.rb +2 -0
  35. data/lib/fog/compute.rb +6 -3
  36. data/lib/fog/compute/aws.rb +4 -18
  37. data/lib/fog/compute/ecloud.rb +1306 -0
  38. data/lib/fog/compute/models/aws/key_pair.rb +0 -2
  39. data/lib/fog/compute/models/aws/security_group.rb +4 -4
  40. data/lib/fog/compute/models/aws/server.rb +13 -3
  41. data/lib/fog/compute/models/aws/snapshot.rb +0 -2
  42. data/lib/fog/compute/models/aws/volume.rb +0 -2
  43. data/lib/fog/compute/models/bluebox/server.rb +23 -11
  44. data/lib/fog/compute/models/brightbox/server.rb +8 -0
  45. data/lib/fog/compute/models/ecloud/backup_internet_service.rb +56 -0
  46. data/lib/fog/compute/models/ecloud/backup_internet_services.rb +33 -0
  47. data/lib/fog/compute/models/ecloud/catalog.rb +28 -0
  48. data/lib/fog/compute/models/ecloud/catalog_item.rb +29 -0
  49. data/lib/fog/compute/models/ecloud/firewall_acl.rb +24 -0
  50. data/lib/fog/compute/models/ecloud/firewall_acls.rb +31 -0
  51. data/lib/fog/compute/models/ecloud/internet_service.rb +117 -0
  52. data/lib/fog/compute/models/ecloud/internet_services.rb +33 -0
  53. data/lib/fog/compute/models/ecloud/ip.rb +49 -0
  54. data/lib/fog/compute/models/ecloud/ips.rb +32 -0
  55. data/lib/fog/compute/models/ecloud/network.rb +72 -0
  56. data/lib/fog/compute/models/ecloud/networks.rb +33 -0
  57. data/lib/fog/compute/models/ecloud/node.rb +43 -0
  58. data/lib/fog/compute/models/ecloud/nodes.rb +31 -0
  59. data/lib/fog/compute/models/ecloud/public_ip.rb +22 -0
  60. data/lib/fog/compute/models/ecloud/public_ips.rb +36 -0
  61. data/lib/fog/compute/models/ecloud/server.rb +209 -0
  62. data/lib/fog/compute/models/ecloud/servers.rb +55 -0
  63. data/lib/fog/compute/models/ecloud/task.rb +21 -0
  64. data/lib/fog/compute/models/ecloud/tasks.rb +31 -0
  65. data/lib/fog/compute/models/ecloud/vdc.rb +81 -0
  66. data/lib/fog/compute/models/ecloud/vdcs.rb +40 -0
  67. data/lib/fog/compute/models/go_grid/server.rb +15 -1
  68. data/lib/fog/compute/models/rackspace/server.rb +16 -0
  69. data/lib/fog/compute/models/slicehost/server.rb +16 -0
  70. data/lib/fog/compute/models/voxel/image.rb +12 -0
  71. data/lib/fog/compute/models/voxel/images.rb +30 -0
  72. data/lib/fog/compute/models/voxel/server.rb +77 -0
  73. data/lib/fog/compute/models/voxel/servers.rb +31 -0
  74. data/lib/fog/compute/new_servers.rb +2 -2
  75. data/lib/fog/compute/parsers/voxel/basic.rb +31 -0
  76. data/lib/fog/compute/parsers/voxel/devices_list.rb +111 -0
  77. data/lib/fog/compute/parsers/voxel/images_list.rb +59 -0
  78. data/lib/fog/compute/parsers/voxel/voxcloud_create.rb +40 -0
  79. data/lib/fog/compute/parsers/voxel/voxcloud_delete.rb +31 -0
  80. data/lib/fog/compute/parsers/voxel/voxcloud_status.rb +42 -0
  81. data/lib/fog/compute/rackspace.rb +0 -16
  82. data/lib/fog/compute/requests/aws/associate_address.rb +2 -0
  83. data/lib/fog/compute/requests/aws/authorize_security_group_ingress.rb +28 -8
  84. data/lib/fog/compute/requests/aws/create_security_group.rb +2 -0
  85. data/lib/fog/compute/requests/aws/create_tags.rb +2 -0
  86. data/lib/fog/compute/requests/aws/delete_key_pair.rb +2 -0
  87. data/lib/fog/compute/requests/aws/delete_security_group.rb +2 -0
  88. data/lib/fog/compute/requests/aws/delete_snapshot.rb +2 -0
  89. data/lib/fog/compute/requests/aws/delete_tags.rb +2 -0
  90. data/lib/fog/compute/requests/aws/delete_volume.rb +2 -0
  91. data/lib/fog/compute/requests/aws/disassociate_address.rb +2 -0
  92. data/lib/fog/compute/requests/aws/modify_image_attributes.rb +2 -0
  93. data/lib/fog/compute/requests/aws/modify_snapshot_attribute.rb +2 -0
  94. data/lib/fog/compute/requests/aws/reboot_instances.rb +2 -0
  95. data/lib/fog/compute/requests/aws/release_address.rb +2 -0
  96. data/lib/fog/compute/requests/aws/revoke_security_group_ingress.rb +2 -0
  97. data/lib/fog/compute/requests/ecloud/add_backup_internet_service.rb +109 -0
  98. data/lib/fog/compute/requests/ecloud/add_internet_service.rb +149 -0
  99. data/lib/fog/compute/requests/ecloud/add_node.rb +62 -0
  100. data/lib/fog/compute/requests/ecloud/clone_vapp.rb +40 -0
  101. data/lib/fog/compute/requests/ecloud/configure_internet_service.rb +112 -0
  102. data/lib/fog/compute/requests/ecloud/configure_network.rb +44 -0
  103. data/lib/fog/compute/requests/ecloud/configure_network_ip.rb +66 -0
  104. data/lib/fog/compute/requests/ecloud/configure_node.rb +56 -0
  105. data/lib/fog/compute/requests/ecloud/configure_vapp.rb +144 -0
  106. data/lib/fog/compute/requests/ecloud/delete_internet_service.rb +22 -0
  107. data/lib/fog/compute/requests/ecloud/delete_node.rb +22 -0
  108. data/lib/fog/compute/requests/ecloud/delete_vapp.rb +29 -0
  109. data/lib/fog/compute/requests/ecloud/get_catalog.rb +44 -0
  110. data/lib/fog/compute/requests/ecloud/get_catalog_item.rb +47 -0
  111. data/lib/fog/compute/requests/ecloud/get_customization_options.rb +22 -0
  112. data/lib/fog/compute/requests/ecloud/get_firewall_acl.rb +11 -0
  113. data/lib/fog/compute/requests/ecloud/get_firewall_acls.rb +11 -0
  114. data/lib/fog/compute/requests/ecloud/get_internet_services.rb +82 -0
  115. data/lib/fog/compute/requests/ecloud/get_network.rb +44 -0
  116. data/lib/fog/compute/requests/ecloud/get_network_extensions.rb +33 -0
  117. data/lib/fog/compute/requests/ecloud/get_network_ip.rb +43 -0
  118. data/lib/fog/compute/requests/ecloud/get_network_ips.rb +35 -0
  119. data/lib/fog/compute/requests/ecloud/get_node.rb +40 -0
  120. data/lib/fog/compute/requests/ecloud/get_nodes.rb +41 -0
  121. data/lib/fog/compute/requests/ecloud/get_organization.rb +49 -0
  122. data/lib/fog/compute/requests/ecloud/get_public_ip.rb +34 -0
  123. data/lib/fog/compute/requests/ecloud/get_public_ips.rb +38 -0
  124. data/lib/fog/compute/requests/ecloud/get_task.rb +11 -0
  125. data/lib/fog/compute/requests/ecloud/get_task_list.rb +11 -0
  126. data/lib/fog/compute/requests/ecloud/get_vapp.rb +99 -0
  127. data/lib/fog/compute/requests/ecloud/get_vapp_template.rb +11 -0
  128. data/lib/fog/compute/requests/ecloud/get_vdc.rb +84 -0
  129. data/lib/fog/compute/requests/ecloud/get_versions.rb +37 -0
  130. data/lib/fog/compute/requests/ecloud/instantiate_vapp_template.rb +142 -0
  131. data/lib/fog/compute/requests/ecloud/login.rb +48 -0
  132. data/lib/fog/compute/requests/ecloud/power_off.rb +23 -0
  133. data/lib/fog/compute/requests/ecloud/power_on.rb +23 -0
  134. data/lib/fog/compute/requests/ecloud/power_reset.rb +11 -0
  135. data/lib/fog/compute/requests/ecloud/power_shutdown.rb +11 -0
  136. data/lib/fog/compute/requests/voxel/devices_list.rb +24 -0
  137. data/lib/fog/compute/requests/voxel/devices_power.rb +22 -0
  138. data/lib/fog/compute/requests/voxel/images_list.rb +31 -0
  139. data/lib/fog/compute/requests/voxel/voxcloud_create.rb +22 -0
  140. data/lib/fog/compute/requests/voxel/voxcloud_delete.rb +20 -0
  141. data/lib/fog/compute/requests/voxel/voxcloud_status.rb +29 -0
  142. data/lib/fog/compute/slicehost.rb +2 -0
  143. data/lib/fog/compute/voxel.rb +112 -0
  144. data/lib/fog/core.rb +1 -0
  145. data/lib/fog/core/credentials.rb +6 -2
  146. data/lib/fog/core/parser.rb +2 -0
  147. data/lib/fog/core/scp.rb +67 -0
  148. data/lib/fog/dns.rb +6 -0
  149. data/lib/fog/dns/aws.rb +2 -0
  150. data/lib/fog/dns/bluebox.rb +110 -0
  151. data/lib/fog/dns/dnsimple.rb +95 -0
  152. data/lib/fog/dns/models/bluebox/record.rb +52 -0
  153. data/lib/fog/dns/models/bluebox/records.rb +36 -0
  154. data/lib/fog/dns/models/bluebox/zone.rb +63 -0
  155. data/lib/fog/dns/models/bluebox/zones.rb +28 -0
  156. data/lib/fog/dns/models/dnsimple/record.rb +54 -0
  157. data/lib/fog/dns/models/dnsimple/records.rb +38 -0
  158. data/lib/fog/dns/models/dnsimple/zone.rb +50 -0
  159. data/lib/fog/dns/models/dnsimple/zones.rb +28 -0
  160. data/lib/fog/dns/parsers/bluebox/create_record.rb +26 -0
  161. data/lib/fog/dns/parsers/bluebox/create_zone.rb +26 -0
  162. data/lib/fog/dns/parsers/bluebox/get_record.rb +21 -0
  163. data/lib/fog/dns/parsers/bluebox/get_records.rb +27 -0
  164. data/lib/fog/{compute/parsers/terremark_ecloud/get_ip_address.rb → dns/parsers/bluebox/get_zone.rb} +6 -6
  165. data/lib/fog/dns/parsers/bluebox/get_zones.rb +30 -0
  166. data/lib/fog/dns/requests/bluebox/create_record.rb +48 -0
  167. data/lib/fog/dns/requests/bluebox/create_zone.rb +52 -0
  168. data/lib/fog/dns/requests/bluebox/delete_record.rb +31 -0
  169. data/lib/fog/dns/requests/bluebox/delete_zone.rb +31 -0
  170. data/lib/fog/dns/requests/bluebox/get_record.rb +40 -0
  171. data/lib/fog/dns/requests/bluebox/get_records.rb +41 -0
  172. data/lib/fog/dns/requests/bluebox/get_zone.rb +44 -0
  173. data/lib/fog/dns/requests/bluebox/get_zones.rb +43 -0
  174. data/lib/fog/dns/requests/bluebox/update_record.rb +34 -0
  175. data/lib/fog/dns/requests/bluebox/update_zone.rb +30 -0
  176. data/lib/fog/dns/requests/dnsimple/create_domain.rb +27 -0
  177. data/lib/fog/dns/requests/dnsimple/create_record.rb +48 -0
  178. data/lib/fog/dns/requests/dnsimple/delete_domain.rb +26 -0
  179. data/lib/fog/dns/requests/dnsimple/delete_record.rb +21 -0
  180. data/lib/fog/dns/requests/dnsimple/get_domain.rb +37 -0
  181. data/lib/fog/dns/requests/dnsimple/list_domains.rb +35 -0
  182. data/lib/fog/dns/requests/dnsimple/list_records.rb +32 -0
  183. data/lib/fog/dns/requests/dnsimple/update_record.rb +42 -0
  184. data/lib/fog/dns/slicehost.rb +2 -0
  185. data/lib/fog/dns/zerigo.rb +2 -0
  186. data/lib/fog/providers.rb +3 -1
  187. data/lib/fog/providers/aws.rb +0 -4
  188. data/lib/fog/providers/bluebox.rb +1 -8
  189. data/lib/fog/providers/dnsimple.rb +11 -0
  190. data/lib/fog/providers/ecloud.rb +11 -0
  191. data/lib/fog/providers/go_grid.rb +0 -8
  192. data/lib/fog/providers/google.rb +0 -3
  193. data/lib/fog/providers/linode.rb +0 -8
  194. data/lib/fog/providers/local.rb +0 -8
  195. data/lib/fog/providers/new_servers.rb +0 -11
  196. data/lib/fog/providers/rackspace.rb +0 -2
  197. data/lib/fog/providers/slicehost.rb +0 -11
  198. data/lib/fog/providers/voxel.rb +16 -0
  199. data/lib/fog/providers/zerigo.rb +0 -3
  200. data/lib/fog/storage/aws.rb +7 -19
  201. data/lib/fog/storage/google.rb +2 -2
  202. data/lib/fog/storage/models/aws/directory.rb +0 -3
  203. data/lib/fog/storage/models/aws/file.rb +0 -3
  204. data/lib/fog/storage/models/google/directory.rb +0 -3
  205. data/lib/fog/storage/models/google/file.rb +0 -3
  206. data/lib/fog/storage/models/local/directory.rb +0 -3
  207. data/lib/fog/storage/models/local/file.rb +29 -1
  208. data/lib/fog/storage/models/local/files.rb +8 -5
  209. data/lib/fog/storage/models/rackspace/directory.rb +1 -3
  210. data/lib/fog/storage/parsers/aws/get_bucket_website.rb +26 -0
  211. data/lib/fog/storage/rackspace.rb +0 -16
  212. data/lib/fog/storage/requests/aws/delete_bucket_website.rb +32 -0
  213. data/lib/fog/storage/requests/aws/get_bucket_website.rb +42 -0
  214. data/lib/fog/storage/requests/aws/put_bucket_website.rb +49 -0
  215. data/lib/fog/terremark.rb +0 -5
  216. data/spec/ecloud/bin_spec.rb +22 -0
  217. data/spec/{vcloud/terremark/ecloud → ecloud}/models/backup_internet_service_spec.rb +5 -5
  218. data/spec/{vcloud/terremark/ecloud → ecloud}/models/backup_internet_services_spec.rb +4 -4
  219. data/spec/{vcloud/terremark/ecloud → ecloud}/models/internet_service_spec.rb +5 -5
  220. data/spec/{vcloud/terremark/ecloud → ecloud}/models/internet_services_spec.rb +4 -4
  221. data/spec/{vcloud/terremark/ecloud → ecloud}/models/ip_spec.rb +5 -5
  222. data/spec/{vcloud/terremark/ecloud → ecloud}/models/ips_spec.rb +4 -4
  223. data/spec/{vcloud/terremark/ecloud → ecloud}/models/network_spec.rb +5 -5
  224. data/spec/{vcloud/terremark/ecloud → ecloud}/models/networks_spec.rb +4 -4
  225. data/spec/{vcloud/terremark/ecloud → ecloud}/models/node_spec.rb +5 -5
  226. data/spec/{vcloud/terremark/ecloud → ecloud}/models/nodes_spec.rb +4 -4
  227. data/spec/{vcloud/terremark/ecloud → ecloud}/models/public_ip_spec.rb +5 -5
  228. data/spec/{vcloud/terremark/ecloud → ecloud}/models/public_ips_spec.rb +4 -4
  229. data/spec/{vcloud/terremark/ecloud → ecloud}/models/server_spec.rb +4 -4
  230. data/spec/{vcloud/terremark/ecloud → ecloud}/models/vdc_spec.rb +5 -5
  231. data/spec/{vcloud/terremark/ecloud → ecloud}/models/vdcs_spec.rb +4 -4
  232. data/spec/{vcloud/terremark/ecloud → ecloud}/requests/add_backup_internet_service_spec.rb +2 -2
  233. data/spec/{vcloud/terremark/ecloud → ecloud}/requests/add_internet_service_spec.rb +2 -2
  234. data/spec/{vcloud/terremark/ecloud → ecloud}/requests/add_node_spec.rb +2 -2
  235. data/spec/{vcloud/terremark/ecloud → ecloud}/requests/configure_internet_service_spec.rb +2 -2
  236. data/spec/{vcloud/terremark/ecloud → ecloud}/requests/configure_network_ip_spec.rb +2 -2
  237. data/spec/{vcloud/terremark/ecloud → ecloud}/requests/configure_node_spec.rb +2 -2
  238. data/spec/{vcloud/terremark/ecloud → ecloud}/requests/configure_vapp_spec.rb +2 -2
  239. data/spec/{vcloud/terremark/ecloud → ecloud}/requests/delete_internet_service_spec.rb +2 -2
  240. data/spec/{vcloud/terremark/ecloud → ecloud}/requests/delete_node_spec.rb +2 -2
  241. data/spec/{vcloud/terremark/ecloud → ecloud}/requests/delete_vapp_spec.rb +2 -2
  242. data/spec/{vcloud/terremark/ecloud → ecloud}/requests/get_catalog_item_spec.rb +2 -2
  243. data/spec/{vcloud/terremark/ecloud → ecloud}/requests/get_catalog_spec.rb +2 -2
  244. data/spec/{vcloud/terremark/ecloud → ecloud}/requests/get_customization_options_spec.rb +2 -2
  245. data/spec/{vcloud/terremark/ecloud → ecloud}/requests/get_internet_services_spec.rb +2 -2
  246. data/spec/{vcloud/terremark/ecloud → ecloud}/requests/get_network_ip_spec.rb +2 -2
  247. data/spec/{vcloud/terremark/ecloud → ecloud}/requests/get_network_ips_spec.rb +2 -2
  248. data/spec/{vcloud/terremark/ecloud → ecloud}/requests/get_network_spec.rb +2 -2
  249. data/spec/{vcloud/terremark/ecloud → ecloud}/requests/get_node_spec.rb +2 -2
  250. data/spec/{vcloud/terremark/ecloud → ecloud}/requests/get_nodes_spec.rb +2 -2
  251. data/spec/{vcloud → ecloud}/requests/get_organization_spec.rb +2 -2
  252. data/spec/{vcloud/terremark/ecloud → ecloud}/requests/get_public_ip_spec.rb +2 -2
  253. data/spec/{vcloud/terremark/ecloud → ecloud}/requests/get_public_ips_spec.rb +2 -2
  254. data/spec/{vcloud/terremark/ecloud → ecloud}/requests/get_vapp_spec.rb +2 -2
  255. data/spec/{vcloud/terremark/ecloud → ecloud}/requests/get_vdc_spec.rb +2 -2
  256. data/spec/ecloud/requests/get_versions_spec.rb +57 -0
  257. data/spec/{vcloud/terremark/ecloud → ecloud}/requests/instantiate_vapp_template_spec.rb +3 -3
  258. data/spec/{vcloud/terremark/ecloud → ecloud}/requests/login_spec.rb +2 -2
  259. data/spec/{vcloud/terremark/ecloud → ecloud}/requests/power_off_spec.rb +2 -2
  260. data/spec/{vcloud/terremark/ecloud → ecloud}/requests/power_on_spec.rb +2 -2
  261. data/spec/{vcloud → ecloud}/spec_helper.rb +14 -29
  262. data/spec/{vcloud → ecloud}/vcloud_spec.rb +4 -4
  263. data/spec/spec_helper.rb +0 -1
  264. data/tests/compute/helper.rb +12 -1
  265. data/tests/compute/models/flavors_tests.rb +2 -0
  266. data/tests/compute/models/server_tests.rb +28 -1
  267. data/tests/compute/requests/voxel/image_tests.rb +46 -0
  268. data/tests/compute/requests/voxel/server_tests.rb +123 -0
  269. data/tests/dns/helper.rb +10 -1
  270. data/tests/dns/models/record_tests.rb +0 -1
  271. data/tests/dns/requests/bluebox/dns_tests.rb +271 -0
  272. data/tests/dns/requests/dnsimple/dns_tests.rb +130 -0
  273. data/tests/helper.rb +1 -1
  274. data/tests/helpers/mock_helper.rb +2 -0
  275. data/tests/storage/models/directory_test.rb +2 -1
  276. metadata +244 -224
  277. data/lib/fog/bin/terremark_ecloud.rb +0 -28
  278. data/lib/fog/bin/vcloud.rb +0 -59
  279. data/lib/fog/compute/parsers/terremark_ecloud/get_catalog.rb +0 -36
  280. data/lib/fog/compute/parsers/terremark_ecloud/get_catalog_item.rb +0 -43
  281. data/lib/fog/compute/parsers/terremark_ecloud/get_ip_addresses.rb +0 -27
  282. data/lib/fog/compute/parsers/terremark_ecloud/get_network.rb +0 -59
  283. data/lib/fog/compute/parsers/terremark_ecloud/get_organization.rb +0 -35
  284. data/lib/fog/compute/parsers/terremark_ecloud/get_task.rb +0 -42
  285. data/lib/fog/compute/parsers/terremark_ecloud/get_task_list.rb +0 -51
  286. data/lib/fog/compute/parsers/terremark_ecloud/get_vdc.rb +0 -110
  287. data/lib/fog/compute/parsers/terremark_ecloud/get_versions.rb +0 -28
  288. data/lib/fog/compute/parsers/terremark_ecloud/login.rb +0 -27
  289. data/lib/fog/compute/requests/terremark_ecloud/get_catalog.rb +0 -19
  290. data/lib/fog/compute/requests/terremark_ecloud/get_catalog_item.rb +0 -19
  291. data/lib/fog/compute/requests/terremark_ecloud/get_ip_address.rb +0 -19
  292. data/lib/fog/compute/requests/terremark_ecloud/get_ip_addresses.rb +0 -19
  293. data/lib/fog/compute/requests/terremark_ecloud/get_network.rb +0 -19
  294. data/lib/fog/compute/requests/terremark_ecloud/get_organization.rb +0 -19
  295. data/lib/fog/compute/requests/terremark_ecloud/get_task.rb +0 -19
  296. data/lib/fog/compute/requests/terremark_ecloud/get_task_list.rb +0 -19
  297. data/lib/fog/compute/requests/terremark_ecloud/get_vdc.rb +0 -19
  298. data/lib/fog/compute/requests/terremark_ecloud/get_versions.rb +0 -26
  299. data/lib/fog/compute/requests/terremark_ecloud/login.rb +0 -29
  300. data/lib/fog/compute/terremark_ecloud.rb +0 -93
  301. data/lib/fog/providers/terremark_ecloud.rb +0 -17
  302. data/lib/fog/terremark/ecloud.rb +0 -73
  303. data/lib/fog/vcloud.rb +0 -337
  304. data/lib/fog/vcloud/collection.rb +0 -30
  305. data/lib/fog/vcloud/generators.rb +0 -33
  306. data/lib/fog/vcloud/mock_data_classes.rb +0 -767
  307. data/lib/fog/vcloud/model.rb +0 -22
  308. data/lib/fog/vcloud/models/vdc.rb +0 -26
  309. data/lib/fog/vcloud/models/vdcs.rb +0 -35
  310. data/lib/fog/vcloud/requests/get_network.rb +0 -47
  311. data/lib/fog/vcloud/requests/get_organization.rb +0 -47
  312. data/lib/fog/vcloud/requests/get_vdc.rb +0 -82
  313. data/lib/fog/vcloud/requests/get_versions.rb +0 -34
  314. data/lib/fog/vcloud/requests/login.rb +0 -46
  315. data/lib/fog/vcloud/terremark/ecloud.rb +0 -187
  316. data/lib/fog/vcloud/terremark/ecloud/models/backup_internet_service.rb +0 -60
  317. data/lib/fog/vcloud/terremark/ecloud/models/backup_internet_services.rb +0 -36
  318. data/lib/fog/vcloud/terremark/ecloud/models/catalog.rb +0 -31
  319. data/lib/fog/vcloud/terremark/ecloud/models/catalog_item.rb +0 -31
  320. data/lib/fog/vcloud/terremark/ecloud/models/firewall_acl.rb +0 -28
  321. data/lib/fog/vcloud/terremark/ecloud/models/firewall_acls.rb +0 -34
  322. data/lib/fog/vcloud/terremark/ecloud/models/internet_service.rb +0 -121
  323. data/lib/fog/vcloud/terremark/ecloud/models/internet_services.rb +0 -36
  324. data/lib/fog/vcloud/terremark/ecloud/models/ip.rb +0 -51
  325. data/lib/fog/vcloud/terremark/ecloud/models/ips.rb +0 -35
  326. data/lib/fog/vcloud/terremark/ecloud/models/network.rb +0 -77
  327. data/lib/fog/vcloud/terremark/ecloud/models/networks.rb +0 -36
  328. data/lib/fog/vcloud/terremark/ecloud/models/node.rb +0 -47
  329. data/lib/fog/vcloud/terremark/ecloud/models/nodes.rb +0 -33
  330. data/lib/fog/vcloud/terremark/ecloud/models/public_ip.rb +0 -25
  331. data/lib/fog/vcloud/terremark/ecloud/models/public_ips.rb +0 -39
  332. data/lib/fog/vcloud/terremark/ecloud/models/server.rb +0 -211
  333. data/lib/fog/vcloud/terremark/ecloud/models/servers.rb +0 -57
  334. data/lib/fog/vcloud/terremark/ecloud/models/task.rb +0 -23
  335. data/lib/fog/vcloud/terremark/ecloud/models/tasks.rb +0 -33
  336. data/lib/fog/vcloud/terremark/ecloud/models/vdc.rb +0 -83
  337. data/lib/fog/vcloud/terremark/ecloud/models/vdcs.rb +0 -42
  338. data/lib/fog/vcloud/terremark/ecloud/requests/add_backup_internet_service.rb +0 -111
  339. data/lib/fog/vcloud/terremark/ecloud/requests/add_internet_service.rb +0 -152
  340. data/lib/fog/vcloud/terremark/ecloud/requests/add_node.rb +0 -64
  341. data/lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb +0 -42
  342. data/lib/fog/vcloud/terremark/ecloud/requests/configure_internet_service.rb +0 -115
  343. data/lib/fog/vcloud/terremark/ecloud/requests/configure_network.rb +0 -46
  344. data/lib/fog/vcloud/terremark/ecloud/requests/configure_network_ip.rb +0 -68
  345. data/lib/fog/vcloud/terremark/ecloud/requests/configure_node.rb +0 -58
  346. data/lib/fog/vcloud/terremark/ecloud/requests/configure_vapp.rb +0 -147
  347. data/lib/fog/vcloud/terremark/ecloud/requests/delete_internet_service.rb +0 -25
  348. data/lib/fog/vcloud/terremark/ecloud/requests/delete_node.rb +0 -24
  349. data/lib/fog/vcloud/terremark/ecloud/requests/delete_vapp.rb +0 -32
  350. data/lib/fog/vcloud/terremark/ecloud/requests/get_catalog.rb +0 -46
  351. data/lib/fog/vcloud/terremark/ecloud/requests/get_catalog_item.rb +0 -49
  352. data/lib/fog/vcloud/terremark/ecloud/requests/get_customization_options.rb +0 -24
  353. data/lib/fog/vcloud/terremark/ecloud/requests/get_firewall_acl.rb +0 -13
  354. data/lib/fog/vcloud/terremark/ecloud/requests/get_firewall_acls.rb +0 -13
  355. data/lib/fog/vcloud/terremark/ecloud/requests/get_internet_services.rb +0 -84
  356. data/lib/fog/vcloud/terremark/ecloud/requests/get_network.rb +0 -47
  357. data/lib/fog/vcloud/terremark/ecloud/requests/get_network_extensions.rb +0 -35
  358. data/lib/fog/vcloud/terremark/ecloud/requests/get_network_ip.rb +0 -45
  359. data/lib/fog/vcloud/terremark/ecloud/requests/get_network_ips.rb +0 -37
  360. data/lib/fog/vcloud/terremark/ecloud/requests/get_node.rb +0 -42
  361. data/lib/fog/vcloud/terremark/ecloud/requests/get_nodes.rb +0 -43
  362. data/lib/fog/vcloud/terremark/ecloud/requests/get_public_ip.rb +0 -36
  363. data/lib/fog/vcloud/terremark/ecloud/requests/get_public_ips.rb +0 -41
  364. data/lib/fog/vcloud/terremark/ecloud/requests/get_task.rb +0 -13
  365. data/lib/fog/vcloud/terremark/ecloud/requests/get_task_list.rb +0 -14
  366. data/lib/fog/vcloud/terremark/ecloud/requests/get_vapp.rb +0 -101
  367. data/lib/fog/vcloud/terremark/ecloud/requests/get_vapp_template.rb +0 -13
  368. data/lib/fog/vcloud/terremark/ecloud/requests/get_vdc.rb +0 -87
  369. data/lib/fog/vcloud/terremark/ecloud/requests/instantiate_vapp_template.rb +0 -144
  370. data/lib/fog/vcloud/terremark/ecloud/requests/power_off.rb +0 -25
  371. data/lib/fog/vcloud/terremark/ecloud/requests/power_on.rb +0 -25
  372. data/lib/fog/vcloud/terremark/ecloud/requests/power_reset.rb +0 -13
  373. data/lib/fog/vcloud/terremark/ecloud/requests/power_shutdown.rb +0 -13
  374. data/lib/fog/vcloud/terremark/vcloud.rb +0 -39
  375. data/lib/fog/vcloud/terremark/vcloud/requests/get_vdc.rb +0 -57
  376. data/spec/vcloud/bin_spec.rb +0 -28
  377. data/spec/vcloud/models/vdc_spec.rb +0 -51
  378. data/spec/vcloud/models/vdcs_spec.rb +0 -1
  379. data/spec/vcloud/requests/get_network_spec.rb +0 -44
  380. data/spec/vcloud/requests/get_vdc_spec.rb +0 -62
  381. data/spec/vcloud/requests/get_versions_spec.rb +0 -54
  382. data/spec/vcloud/requests/login_spec.rb +0 -24
  383. data/tests/compute/requests/terremark_ecloud/catalog_tests.rb +0 -47
  384. data/tests/compute/requests/terremark_ecloud/helper.rb +0 -45
  385. data/tests/compute/requests/terremark_ecloud/network_tests.rb +0 -30
  386. data/tests/compute/requests/terremark_ecloud/organization_tests.rb +0 -28
  387. data/tests/compute/requests/terremark_ecloud/task_tests.rb +0 -39
  388. data/tests/compute/requests/terremark_ecloud/vdc_tests.rb +0 -60
@@ -1,37 +0,0 @@
1
- #
2
- # AFAICT - This is basically undocumented - 6/18/2010 - freeformz
3
- #
4
-
5
- module Fog
6
- class Vcloud
7
- module Terremark
8
- class Ecloud
9
-
10
- class Real
11
- basic_request :get_network_ips
12
- end
13
-
14
- class Mock
15
-
16
- def get_network_ips(network_ips_uri)
17
- network_ips_uri = ensure_unparsed(network_ips_uri)
18
-
19
- if network_ip_collection = mock_data.network_ip_collection_from_href(network_ips_uri)
20
- builder = Builder::XmlMarkup.new
21
- xml = builder.IpAddresses do
22
- network_ip_collection.ordered_ips.each do |network_ip|
23
- network_ip_response(builder, network_ip)
24
- end
25
- end
26
-
27
- mock_it 200, xml, { 'Content-Type' => 'application/vnd.tmrk.ecloud.ipAddressesList+xml' }
28
- else
29
- mock_error 200, "401 Unauthorized"
30
- end
31
- end
32
-
33
- end
34
- end
35
- end
36
- end
37
- end
@@ -1,42 +0,0 @@
1
- module Fog
2
- class Vcloud
3
- module Terremark
4
- class Ecloud
5
-
6
- class Real
7
- basic_request :get_node
8
- end
9
-
10
- class Mock
11
- #
12
- # Based on http://support.theenterprisecloud.com/kb/default.asp?id=641&Lang=1&SID=
13
- #
14
-
15
- def mock_node_service_response(node)
16
- xml = Builder::XmlMarkup.new
17
- xml.NodeService(ecloud_xmlns) {
18
- xml.Id(node.object_id)
19
- xml.Href(node.href)
20
- xml.Name(node.name)
21
- xml.IpAddress(node.ip_address)
22
- xml.Port(node.port)
23
- xml.Enabled(node.enabled)
24
- xml.Description(node.description)
25
- }
26
- end
27
-
28
- def get_node(node_uri)
29
- node_uri = ensure_unparsed(node_uri)
30
-
31
- if public_ip_internet_service_node = mock_data.public_ip_internet_service_node_from_href(node_uri)
32
- xml = Builder::XmlMarkup.new
33
- mock_it 200, mock_node_service_response(public_ip_internet_service_node), { 'Content-Type' => 'application/vnd.tmrk.ecloud.nodeService+xml' }
34
- else
35
- mock_error 200, "401 Unauthorized"
36
- end
37
- end
38
- end
39
- end
40
- end
41
- end
42
- end
@@ -1,43 +0,0 @@
1
- module Fog
2
- class Vcloud
3
- module Terremark
4
- class Ecloud
5
-
6
- class Real
7
- basic_request :get_nodes
8
- end
9
-
10
- class Mock
11
- #
12
- # Based off of:
13
- # http://support.theenterprisecloud.com/kb/default.asp?id=637&Lang=1&SID=
14
- #
15
-
16
- def get_nodes(nodes_uri)
17
- nodes_uri = ensure_unparsed(nodes_uri)
18
-
19
- if public_ip_internet_service_node_collection = mock_data.public_ip_internet_service_node_collection_from_href(nodes_uri)
20
- xml = Builder::XmlMarkup.new
21
- mock_it 200,
22
- xml.NodeServices(ecloud_xmlns) {
23
- public_ip_internet_service_node_collection.items.each do |node|
24
- xml.NodeService {
25
- xml.Id node.object_id
26
- xml.Href node.href
27
- xml.Name node.name
28
- xml.IpAddress node.ip_address
29
- xml.Port node.port
30
- xml.Enabled node.enabled
31
- xml.Description node.description
32
- }
33
- end
34
- }, { 'Content-Type' => 'application/vnd.tmrk.ecloud.nodeService+xml' }
35
- else
36
- mock_error 200, "401 Unauthorized"
37
- end
38
- end
39
- end
40
- end
41
- end
42
- end
43
- end
@@ -1,36 +0,0 @@
1
- module Fog
2
- class Vcloud
3
- module Terremark
4
- class Ecloud
5
-
6
- class Real
7
- basic_request :get_public_ip
8
- end
9
-
10
- class Mock
11
- #
12
- #Based off of:
13
- #http://support.theenterprisecloud.com/kb/default.asp?id=567&Lang=1&SID=
14
- #
15
-
16
- def get_public_ip(public_ip_uri)
17
- public_ip_uri = ensure_unparsed(public_ip_uri)
18
-
19
- if public_ip = mock_data.public_ip_from_href(public_ip_uri)
20
- xml = Builder::XmlMarkup.new
21
- mock_it 200,
22
- xml.PublicIp(:xmlns => "urn:tmrk:eCloudExtensions-2.0", :"xmlns:i" => "http://www.w3.org/2001/XMLSchema-instance") {
23
- xml.Id public_ip.object_id
24
- xml.Href public_ip.href
25
- xml.Name public_ip.name
26
- }, { 'Content-Type' => 'application/vnd.tmrk.ecloud.publicIp+xml' }
27
- else
28
- mock_error 200, "401 Unauthorized"
29
- end
30
- end
31
-
32
- end
33
- end
34
- end
35
- end
36
- end
@@ -1,41 +0,0 @@
1
- module Fog
2
- class Vcloud
3
- module Terremark
4
- class Ecloud
5
-
6
- class Real
7
- basic_request :get_public_ips
8
- end
9
-
10
- class Mock
11
- #
12
- # Based off of:
13
- # http://support.theenterprisecloud.com/kb/default.asp?id=577&Lang=1&SID=
14
- #
15
-
16
- def get_public_ips(public_ips_uri)
17
- public_ips_uri = ensure_unparsed(public_ips_uri)
18
-
19
- if public_ip_collection = mock_data.public_ip_collection_from_href(public_ips_uri)
20
- xml = Builder::XmlMarkup.new
21
- mock_it 200,
22
- xml.PublicIPAddresses {
23
- public_ip_collection.items.each do |ip|
24
- xml.PublicIPAddress {
25
- xml.Id ip.object_id
26
- xml.Href ip.href
27
- xml.Name ip.name
28
- }
29
- end
30
- }, { 'Content-Type' => 'application/vnd.tmrk.ecloud.publicIpsList+xml'}
31
- else
32
- mock_error 200, "401 Unauthorized"
33
- end
34
- end
35
-
36
- end
37
- end
38
- end
39
- end
40
- end
41
-
@@ -1,13 +0,0 @@
1
- module Fog
2
- class Vcloud
3
- module Terremark
4
- class Ecloud
5
-
6
- class Real
7
- basic_request :get_task
8
- end
9
-
10
- end
11
- end
12
- end
13
- end
@@ -1,14 +0,0 @@
1
- module Fog
2
- class Vcloud
3
- module Terremark
4
- class Ecloud
5
-
6
- class Real
7
- basic_request :get_task_list
8
- end
9
-
10
- end
11
- end
12
- end
13
- end
14
-
@@ -1,101 +0,0 @@
1
- module Fog
2
- class Vcloud
3
- module Terremark
4
- class Ecloud
5
-
6
- class Real
7
- basic_request :get_vapp
8
- end
9
-
10
- class Mock
11
- def return_vapp_as_creating!(name)
12
- vapps_to_return_as_creating[name] = true
13
- end
14
-
15
- def vapps_to_return_as_creating
16
- @vapps_to_return_as_creating ||= {}
17
- end
18
-
19
- def get_vapp(vapp_uri)
20
- xml = nil
21
-
22
- if vapp = mock_data.virtual_machine_from_href(vapp_uri)
23
- if vapps_to_return_as_creating[vapp.name]
24
- xml = generate_instantiate_vapp_template_response(vapp)
25
- else
26
- xml = generate_get_vapp_response(vapp)
27
- end
28
- end
29
-
30
- if xml
31
- mock_it 200, xml, "Content-Type" => "application/vnd.vmware.vcloud.vApp+xml"
32
- else
33
- mock_error 200, "401 Unauthorized"
34
- end
35
- end
36
-
37
- private
38
-
39
- def generate_get_vapp_response(vapp)
40
- builder = Builder::XmlMarkup.new
41
- builder.VApp(xmlns.merge(
42
- :href => vapp.href,
43
- :type => "application/vnd.vmware.vcloud.vApp+xml",
44
- :name => vapp.name,
45
- :status => vapp.status,
46
- :size => vapp.size
47
- )) do
48
- builder.Link(:rel => "up", :href => vapp._parent.href, :type => "application/vnd.vmware.vcloud.vdc+xml")
49
-
50
- builder.NetworkConnectionSection(:xmlns => "http://schemas.dmtf.org/ovf/envelope/1") do
51
- builder.NetworkConnection(:Network => "Internal", :xmlns => "http://www.vmware.com/vcloud/v0.8") do
52
- builder.IpAddress vapp.ip
53
- end
54
- end
55
-
56
- builder.OperatingSystemSection(
57
- "d2p1:id" => 4,
58
- :xmlns => "http://schemas.dmtf.org/ovf/envelope/1",
59
- "xmlns:d2p1" => "http://schemas.dmtf.org/ovf/envelope/1") do
60
- builder.Info "The kind of installed guest operating system"
61
- builder.Description "Red Hat Enterprise Linux 5 (64-bit)"
62
- end
63
-
64
- builder.VirtualHardwareSection(:xmlns => "http://schemas.dmtf.org/ovf/envelope/1") do
65
- builder.Info
66
- builder.System
67
- builder.Item do
68
- # CPUs
69
- builder.VirtualQuantity vapp.cpus
70
- builder.ResourceType 3
71
- end
72
- builder.Item do
73
- # memory
74
- builder.VirtualQuantity vapp.memory
75
- builder.ResourceType 4
76
- end
77
- builder.Item do
78
- # SCSI controller
79
- builder.Address 0
80
- builder.ResourceType 6
81
- builder.InstanceId 3
82
- end
83
-
84
- # Hard Disks
85
- vapp.disks.each do |disk|
86
- builder.Item do
87
- builder.Parent 3
88
- builder.VirtualQuantity disk.vcloud_size
89
- builder.HostResource disk.vcloud_size
90
- builder.ResourceType 17
91
- builder.AddressOnParent disk.address
92
- end
93
- end
94
- end
95
- end
96
- end
97
- end
98
- end
99
- end
100
- end
101
- end
@@ -1,13 +0,0 @@
1
- module Fog
2
- class Vcloud
3
- module Terremark
4
- class Ecloud
5
-
6
- class Real
7
- basic_request :get_vapp_template
8
- end
9
-
10
- end
11
- end
12
- end
13
- end
@@ -1,87 +0,0 @@
1
- module Fog
2
- class Vcloud
3
- module Terremark
4
- class Ecloud
5
-
6
- class Real
7
- # Handled by the main Vcloud get_vdc
8
- end
9
-
10
- class Mock
11
- #
12
- #Based off of:
13
- #http://support.theenterprisecloud.com/kb/default.asp?id=545&Lang=1&SID=
14
-
15
- def get_vdc(vdc_uri)
16
- vdc_uri = ensure_unparsed(vdc_uri)
17
-
18
- if vdc = mock_data.vdc_from_href(vdc_uri)
19
- xml = Builder::XmlMarkup.new
20
- mock_it 200,
21
- xml.Vdc(xmlns.merge(:href => vdc.href, :name => vdc.name)) {
22
- xml.Link(:rel => "down",
23
- :href => vdc.catalog.href,
24
- :type => "application/vnd.vmware.vcloud.catalog+xml",
25
- :name => vdc.catalog.name)
26
- xml.Link(:rel => "down",
27
- :href => vdc.public_ip_collection.href,
28
- :type => "application/vnd.tmrk.ecloud.publicIpsList+xml",
29
- :name => vdc.public_ip_collection.name)
30
- xml.Link(:rel => "down",
31
- :href => vdc.internet_service_collection.href,
32
- :type => "application/vnd.tmrk.ecloud.internetServicesList+xml",
33
- :name => vdc.internet_service_collection.name)
34
- xml.Link(:rel => "down",
35
- :href => vdc.firewall_acls.href,
36
- :type => "application/vnd.tmrk.ecloud.firewallAclsList+xml",
37
- :name => vdc.firewall_acls.name)
38
- xml.Description("")
39
- xml.StorageCapacity {
40
- xml.Units("bytes * 10^9")
41
- xml.Allocated(vdc.storage_allocated)
42
- xml.Used(vdc.storage_used)
43
- }
44
- xml.ComputeCapacity {
45
- xml.Cpu {
46
- xml.Units("hz * 10^6")
47
- xml.Allocated(vdc.cpu_allocated)
48
- }
49
- xml.Memory {
50
- xml.Units("bytes * 2^20")
51
- xml.Allocated(vdc.memory_allocated)
52
- }
53
- xml.DeployedVmsQuota {
54
- xml.Limit("-1")
55
- xml.Used("-1")
56
- }
57
- xml.InstantiatedVmsQuota {
58
- xml.Limit("-1")
59
- xml.Used("-1")
60
- }
61
- }
62
- xml.ResourceEntities {
63
- vdc.virtual_machines.each do |virtual_machine|
64
- xml.ResourceEntity(:href => virtual_machine.href,
65
- :type => "application/vnd.vmware.vcloud.vApp+xml",
66
- :name => virtual_machine.name)
67
- end
68
- }
69
- xml.AvailableNetworks {
70
- vdc.networks.each do |network|
71
- xml.Network(:href => network.href,
72
- :type => "application/vnd.vmware.vcloud.network+xml",
73
- :name => network.name)
74
- end
75
- }
76
- }, { 'Content-Type' => 'application/vnd.vmware.vcloud.vdc+xml'}
77
- else
78
- mock_error 200, "401 Unauthorized"
79
- end
80
- end
81
-
82
- end
83
- end
84
- end
85
- end
86
- end
87
-
@@ -1,144 +0,0 @@
1
- module Fog
2
- class Vcloud
3
- module Terremark
4
- class Ecloud
5
- module Shared
6
- private
7
-
8
- def validate_instantiate_vapp_template_options(catalog_item_uri, options)
9
- valid_opts = [:name, :vdc_uri, :network_uri, :cpus, :memory, :row, :group]
10
- unless valid_opts.all? { |opt| options.keys.include?(opt) }
11
- raise ArgumentError.new("Required data missing: #{(valid_opts - options.keys).map(&:inspect).join(", ")}")
12
- end
13
-
14
- # Figure out the template_uri
15
- catalog_item = get_catalog_item( catalog_item_uri ).body
16
- catalog_item[:Entity] = [ catalog_item[:Entity] ] if catalog_item[:Entity].is_a?(Hash)
17
- catalog_item[:Link] = [ catalog_item[:Link] ] if catalog_item[:Link].is_a?(Hash)
18
-
19
- options[:template_uri] = begin
20
- catalog_item[:Entity].detect { |entity| entity[:type] == "application/vnd.vmware.vcloud.vAppTemplate+xml" }[:href]
21
- rescue
22
- raise RuntimeError.new("Unable to locate template uri for #{catalog_item_uri}")
23
- end
24
-
25
- customization_options = begin
26
- customization_href = catalog_item[:Link].detect { |link| link[:type] == "application/vnd.tmrk.ecloud.catalogItemCustomizationParameters+xml" }[:href]
27
- get_customization_options( customization_href ).body
28
- rescue
29
- raise RuntimeError.new("Unable to get customization options for #{catalog_item_uri}")
30
- end
31
-
32
- # Check to see if we can set the password
33
- if options[:password] and customization_options[:CustomizePassword] == "false"
34
- raise ArgumentError.new("This catalog item (#{catalog_item_uri}) does not allow setting a password.")
35
- end
36
-
37
- # According to the docs if CustomizePassword is "true" then we NEED to set a password
38
- if customization_options[:CustomizePassword] == "true" and ( options[:password].nil? or options[:password].empty? )
39
- raise ArgumentError.new("This catalog item (#{catalog_item_uri}) requires a :password to instantiate.")
40
- end
41
- end
42
-
43
- def generate_instantiate_vapp_template_request(options)
44
- xml = Builder::XmlMarkup.new
45
- xml.InstantiateVAppTemplateParams(xmlns.merge!(:name => options[:name], :"xml:lang" => "en")) {
46
- xml.VAppTemplate(:href => options[:template_uri])
47
- xml.InstantiationParams {
48
- xml.ProductSection( :"xmlns:q1" => "http://www.vmware.com/vcloud/v0.8", :"xmlns:ovf" => "http://schemas.dmtf.org/ovf/envelope/1") {
49
- if options[:password]
50
- xml.Property( :xmlns => "http://schemas.dmtf.org/ovf/envelope/1", :"ovf:key" => "password", :"ovf:value" => options[:password] )
51
- end
52
- xml.Property( :xmlns => "http://schemas.dmtf.org/ovf/envelope/1", :"ovf:key" => "row", :"ovf:value" => options[:row] )
53
- xml.Property( :xmlns => "http://schemas.dmtf.org/ovf/envelope/1", :"ovf:key" => "group", :"ovf:value" => options[:group] )
54
- }
55
- xml.VirtualHardwareSection( :"xmlns:q1" => "http://www.vmware.com/vcloud/v0.8" ) {
56
- # # of CPUS
57
- xml.Item( :xmlns => "http://schemas.dmtf.org/ovf/envelope/1" ) {
58
- xml.InstanceID(1, :xmlns => "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData")
59
- xml.ResourceType(3, :xmlns => "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData")
60
- xml.VirtualQuantity(options[:cpus], :xmlns => "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData")
61
- }
62
- # Memory
63
- xml.Item( :xmlns => "http://schemas.dmtf.org/ovf/envelope/1" ) {
64
- xml.InstanceID(2, :xmlns => "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData")
65
- xml.ResourceType(4, :xmlns => "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData")
66
- xml.VirtualQuantity(options[:memory], :xmlns => "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData")
67
- }
68
- }
69
- xml.NetworkConfigSection {
70
- xml.NetworkConfig {
71
- xml.NetworkAssociation( :href => options[:network_uri] )
72
- }
73
- }
74
- }
75
- }
76
- end
77
- end
78
-
79
- class Real
80
- include Shared
81
-
82
- def instantiate_vapp_template(catalog_item_uri, options = {})
83
- validate_instantiate_vapp_template_options(catalog_item_uri, options)
84
-
85
- request(
86
- :body => generate_instantiate_vapp_template_request(options),
87
- :expects => 200,
88
- :headers => {'Content-Type' => 'application/vnd.vmware.vcloud.instantiateVAppTemplateParams+xml'},
89
- :method => 'POST',
90
- :uri => options[:vdc_uri] + '/action/instantiatevAppTemplate',
91
- :parse => true
92
- )
93
- end
94
- end
95
-
96
- class Mock
97
- include Shared
98
-
99
- #
100
- # Based on
101
- # http://support.theenterprisecloud.com/kb/default.asp?id=554&Lang=1&SID=
102
- #
103
-
104
- def instantiate_vapp_template(catalog_item_uri, options = {})
105
- validate_instantiate_vapp_template_options(catalog_item_uri, options)
106
- catalog_item = mock_data.catalog_item_from_href(catalog_item_uri)
107
-
108
- xml = nil
109
- if vdc = mock_data.vdc_from_href(options[:vdc_uri])
110
- if network = mock_data.network_from_href(options[:network_uri])
111
- new_vm = MockVirtualMachine.new({ :name => options[:name], :ip => network.random_ip, :cpus => options[:cpus], :memory => options[:memory] }, vdc)
112
- new_vm.disks.push(*catalog_item.disks.dup)
113
- vdc.virtual_machines << new_vm
114
-
115
- xml = generate_instantiate_vapp_template_response(new_vm)
116
- end
117
- end
118
-
119
- if xml
120
- mock_it 200, xml, {'Content-Type' => 'application/xml'}
121
- else
122
- mock_error 200, "401 Unauthorized"
123
- end
124
- end
125
-
126
- private
127
-
128
- def generate_instantiate_vapp_template_response(vapp)
129
- builder = Builder::XmlMarkup.new
130
- builder.VApp(xmlns.merge(
131
- :href => vapp.href,
132
- :type => "application/vnd.vmware.vcloud.vApp+xml",
133
- :name => vapp.name,
134
- :status => 0,
135
- :size => 4
136
- )) {
137
- builder.Link(:rel => "up", :href => vapp._parent.href, :type => "application/vnd.vmware.vcloud.vdc+xml")
138
- }
139
- end
140
- end
141
- end
142
- end
143
- end
144
- end