fog 1.5.0 → 1.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 (355) hide show
  1. data/.travis.yml +21 -0
  2. data/README.md +3 -1
  3. data/Rakefile +4 -1
  4. data/changelog.txt +462 -0
  5. data/docs/storage/index.markdown +4 -4
  6. data/fog.gemspec +2 -2
  7. data/lib/fog.rb +1 -1
  8. data/lib/fog/atmos.rb +11 -0
  9. data/lib/fog/atmos/models/storage/directories.rb +48 -0
  10. data/lib/fog/atmos/models/storage/directory.rb +53 -0
  11. data/lib/fog/atmos/models/storage/file.rb +107 -0
  12. data/lib/fog/atmos/models/storage/files.rb +73 -0
  13. data/lib/fog/atmos/requests/storage/delete_namespace.rb +19 -0
  14. data/lib/fog/atmos/requests/storage/get_namespace.rb +20 -0
  15. data/lib/fog/atmos/requests/storage/head_namespace.rb +20 -0
  16. data/lib/fog/atmos/requests/storage/post_namespace.rb +20 -0
  17. data/lib/fog/atmos/requests/storage/put_namespace.rb +20 -0
  18. data/lib/fog/atmos/storage.rb +186 -0
  19. data/lib/fog/aws.rb +2 -0
  20. data/lib/fog/aws/auto_scaling.rb +15 -1
  21. data/lib/fog/aws/compute.rb +26 -17
  22. data/lib/fog/aws/elb.rb +14 -2
  23. data/lib/fog/aws/glacier.rb +172 -0
  24. data/lib/fog/aws/iam.rb +35 -29
  25. data/lib/fog/aws/models/auto_scaling/group.rb +1 -1
  26. data/lib/fog/aws/models/compute/flavors.rb +11 -0
  27. data/lib/fog/aws/models/compute/security_group.rb +22 -6
  28. data/lib/fog/aws/models/compute/server.rb +5 -1
  29. data/lib/fog/aws/models/compute/spot_request.rb +12 -0
  30. data/lib/fog/aws/models/compute/spot_requests.rb +1 -2
  31. data/lib/fog/aws/models/compute/volume.rb +7 -1
  32. data/lib/fog/aws/models/glacier/archive.rb +70 -0
  33. data/lib/fog/aws/models/glacier/archives.rb +30 -0
  34. data/lib/fog/aws/models/glacier/job.rb +65 -0
  35. data/lib/fog/aws/models/glacier/jobs.rb +45 -0
  36. data/lib/fog/aws/models/glacier/vault.rb +53 -0
  37. data/lib/fog/aws/models/glacier/vaults.rb +28 -0
  38. data/lib/fog/aws/models/rds/server.rb +3 -1
  39. data/lib/fog/aws/models/rds/snapshot.rb +1 -0
  40. data/lib/fog/aws/models/rds/snapshots.rb +3 -0
  41. data/lib/fog/aws/models/storage/file.rb +4 -3
  42. data/lib/fog/aws/parsers/auto_scaling/describe_auto_scaling_groups.rb +8 -1
  43. data/lib/fog/aws/parsers/compute/create_volume.rb +2 -2
  44. data/lib/fog/aws/parsers/compute/describe_instance_status.rb +8 -1
  45. data/lib/fog/aws/parsers/compute/describe_instances.rb +2 -0
  46. data/lib/fog/aws/parsers/compute/describe_reserved_instances_offerings.rb +1 -1
  47. data/lib/fog/aws/parsers/compute/describe_volumes.rb +2 -2
  48. data/lib/fog/aws/parsers/compute/run_instances.rb +2 -0
  49. data/lib/fog/aws/parsers/compute/spot_instance_requests.rb +1 -1
  50. data/lib/fog/aws/parsers/dns/list_resource_record_sets.rb +3 -1
  51. data/lib/fog/aws/parsers/rds/db_parser.rb +3 -1
  52. data/lib/fog/aws/parsers/rds/snapshot_parser.rb +1 -0
  53. data/lib/fog/aws/rds.rb +9 -9
  54. data/lib/fog/aws/requests/auto_scaling/create_auto_scaling_group.rb +1 -0
  55. data/lib/fog/aws/requests/auto_scaling/delete_auto_scaling_group.rb +1 -1
  56. data/lib/fog/aws/requests/compute/create_volume.rb +53 -14
  57. data/lib/fog/aws/requests/compute/describe_instance_status.rb +2 -0
  58. data/lib/fog/aws/requests/compute/describe_instances.rb +3 -1
  59. data/lib/fog/aws/requests/compute/describe_internet_gateways.rb +13 -7
  60. data/lib/fog/aws/requests/compute/describe_spot_instance_requests.rb +1 -0
  61. data/lib/fog/aws/requests/compute/describe_subnets.rb +13 -7
  62. data/lib/fog/aws/requests/compute/describe_volumes.rb +2 -0
  63. data/lib/fog/aws/requests/compute/describe_vpcs.rb +12 -6
  64. data/lib/fog/aws/requests/compute/request_spot_instances.rb +2 -0
  65. data/lib/fog/aws/requests/compute/run_instances.rb +8 -2
  66. data/lib/fog/aws/requests/dns/change_resource_record_sets.rb +20 -1
  67. data/lib/fog/aws/requests/elb/create_load_balancer.rb +2 -2
  68. data/lib/fog/aws/requests/elb/describe_load_balancers.rb +1 -1
  69. data/lib/fog/aws/requests/glacier/abort_multipart_upload.rb +35 -0
  70. data/lib/fog/aws/requests/glacier/complete_multipart_upload.rb +42 -0
  71. data/lib/fog/aws/requests/glacier/create_archive.rb +43 -0
  72. data/lib/fog/aws/requests/glacier/create_vault.rb +34 -0
  73. data/lib/fog/aws/requests/glacier/delete_archive.rb +35 -0
  74. data/lib/fog/aws/requests/glacier/delete_vault.rb +34 -0
  75. data/lib/fog/aws/requests/glacier/delete_vault_notification_configuration.rb +33 -0
  76. data/lib/fog/aws/requests/glacier/describe_job.rb +35 -0
  77. data/lib/fog/aws/requests/glacier/describe_vault.rb +34 -0
  78. data/lib/fog/aws/requests/glacier/get_job_output.rb +41 -0
  79. data/lib/fog/aws/requests/glacier/get_vault_notification_configuration.rb +34 -0
  80. data/lib/fog/aws/requests/glacier/initiate_job.rb +41 -0
  81. data/lib/fog/aws/requests/glacier/initiate_multipart_upload.rb +38 -0
  82. data/lib/fog/aws/requests/glacier/list_jobs.rb +39 -0
  83. data/lib/fog/aws/requests/glacier/list_multipart_uploads.rb +37 -0
  84. data/lib/fog/aws/requests/glacier/list_parts.rb +37 -0
  85. data/lib/fog/aws/requests/glacier/list_vaults.rb +36 -0
  86. data/lib/fog/aws/requests/glacier/set_vault_notification_configuration.rb +37 -0
  87. data/lib/fog/aws/requests/glacier/upload_part.rb +46 -0
  88. data/lib/fog/aws/requests/rds/create_db_instance.rb +7 -5
  89. data/lib/fog/aws/requests/rds/create_db_instance_read_replica.rb +41 -1
  90. data/lib/fog/aws/requests/rds/create_db_snapshot.rb +1 -1
  91. data/lib/fog/aws/requests/rds/describe_db_instances.rb +8 -10
  92. data/lib/fog/aws/requests/rds/describe_db_security_groups.rb +1 -1
  93. data/lib/fog/aws/requests/rds/describe_db_snapshots.rb +2 -0
  94. data/lib/fog/aws/requests/rds/modify_db_instance.rb +7 -6
  95. data/lib/fog/aws/requests/rds/reboot_db_instance.rb +6 -5
  96. data/lib/fog/aws/requests/storage/get_object.rb +45 -2
  97. data/lib/fog/aws/requests/storage/upload_part.rb +1 -0
  98. data/lib/fog/aws/signaturev4.rb +73 -0
  99. data/lib/fog/aws/sqs.rb +2 -6
  100. data/lib/fog/bare_metal_cloud/compute.rb +3 -1
  101. data/lib/fog/bare_metal_cloud/requests/compute/add_server_by_configuration.rb +33 -0
  102. data/lib/fog/bare_metal_cloud/requests/compute/get_server.rb +17 -12
  103. data/lib/fog/bare_metal_cloud/requests/compute/list_configurations.rb +27 -0
  104. data/lib/fog/bare_metal_cloud/requests/compute/list_images.rb +4 -4
  105. data/lib/fog/bare_metal_cloud/requests/compute/list_plans.rb +7 -7
  106. data/lib/fog/bare_metal_cloud/requests/compute/list_servers.rb +2 -2
  107. data/lib/fog/bin.rb +7 -0
  108. data/lib/fog/bin/atmos.rb +31 -0
  109. data/lib/fog/bin/aws.rb +4 -0
  110. data/lib/fog/bin/ecloud.rb +4 -0
  111. data/lib/fog/bin/rackspace.rb +7 -0
  112. data/lib/fog/bin/serverlove.rb +31 -0
  113. data/lib/fog/bluebox/requests/compute/create_block.rb +18 -4
  114. data/lib/fog/brightbox/compute.rb +52 -0
  115. data/lib/fog/brightbox/models/compute/cloud_ip.rb +2 -0
  116. data/lib/fog/brightbox/models/compute/image.rb +1 -0
  117. data/lib/fog/brightbox/models/compute/server.rb +46 -3
  118. data/lib/fog/brightbox/requests/compute/create_cloud_ip.rb +3 -3
  119. data/lib/fog/cloudstack/compute.rb +4 -1
  120. data/lib/fog/cloudstack/models/compute/images.rb +15 -6
  121. data/lib/fog/cloudstack/models/compute/job.rb +1 -1
  122. data/lib/fog/cloudstack/requests/compute/attach_volume.rb +1 -1
  123. data/lib/fog/cloudstack/requests/compute/register_template.rb +35 -0
  124. data/lib/fog/compute.rb +15 -3
  125. data/lib/fog/core/errors.rb +1 -0
  126. data/lib/fog/core/time.rb +4 -0
  127. data/lib/fog/dynect/dns.rb +5 -5
  128. data/lib/fog/ecloud.rb +6 -0
  129. data/lib/fog/ecloud/compute.rb +3 -1
  130. data/lib/fog/ecloud/models/compute/ip_addresses.rb +1 -0
  131. data/lib/fog/ecloud/models/compute/networks.rb +1 -0
  132. data/lib/fog/ecloud/models/compute/server.rb +31 -1
  133. data/lib/fog/ecloud/requests/compute/virtual_machine_add_ip.rb +40 -0
  134. data/lib/fog/ecloud/requests/compute/virtual_machine_upload_file.rb +31 -0
  135. data/lib/fog/google/models/storage/directory.rb +2 -2
  136. data/lib/fog/google/models/storage/file.rb +2 -2
  137. data/lib/fog/google/requests/storage/get_bucket.rb +1 -2
  138. data/lib/fog/google/requests/storage/put_object.rb +1 -2
  139. data/lib/fog/google/storage.rb +1 -1
  140. data/lib/fog/hp/models/compute/image.rb +1 -1
  141. data/lib/fog/hp/models/compute/server.rb +4 -0
  142. data/lib/fog/hp/requests/compute/delete_security_group_rule.rb +4 -4
  143. data/lib/fog/hp/requests/storage/get_object.rb +8 -2
  144. data/lib/fog/hp/storage.rb +1 -0
  145. data/lib/fog/libvirt/models/compute/server.rb +1 -1
  146. data/lib/fog/libvirt/models/compute/templates/server.xml.erb +1 -1
  147. data/lib/fog/openstack.rb +7 -0
  148. data/lib/fog/openstack/compute.rb +4 -1
  149. data/lib/fog/openstack/models/compute/server.rb +1 -1
  150. data/lib/fog/openstack/requests/compute/create_server.rb +8 -2
  151. data/lib/fog/openstack/requests/identity/list_roles_for_user_on_tenant.rb +1 -1
  152. data/lib/fog/openstack/requests/identity/list_tenants.rb +1 -0
  153. data/lib/fog/providers.rb +2 -0
  154. data/lib/fog/rackspace.rb +9 -7
  155. data/lib/fog/rackspace/block_storage.rb +114 -0
  156. data/lib/fog/rackspace/compute_v2.rb +123 -0
  157. data/lib/fog/rackspace/models/block_storage/snapshot.rb +46 -0
  158. data/lib/fog/rackspace/models/block_storage/snapshots.rb +25 -0
  159. data/lib/fog/rackspace/models/block_storage/volume.rb +58 -0
  160. data/lib/fog/rackspace/models/block_storage/volume_type.rb +14 -0
  161. data/lib/fog/rackspace/models/block_storage/volume_types.rb +25 -0
  162. data/lib/fog/rackspace/models/block_storage/volumes.rb +25 -0
  163. data/lib/fog/rackspace/models/compute_v2/attachment.rb +34 -0
  164. data/lib/fog/rackspace/models/compute_v2/attachments.rb +25 -0
  165. data/lib/fog/rackspace/models/compute_v2/flavor.rb +17 -0
  166. data/lib/fog/rackspace/models/compute_v2/flavors.rb +25 -0
  167. data/lib/fog/rackspace/models/compute_v2/image.rb +30 -0
  168. data/lib/fog/rackspace/models/compute_v2/images.rb +25 -0
  169. data/lib/fog/rackspace/models/compute_v2/server.rb +147 -0
  170. data/lib/fog/rackspace/models/compute_v2/servers.rb +25 -0
  171. data/lib/fog/rackspace/models/storage/directory.rb +3 -3
  172. data/lib/fog/rackspace/requests/block_storage/create_snapshot.rb +26 -0
  173. data/lib/fog/rackspace/requests/block_storage/create_volume.rb +27 -0
  174. data/lib/fog/rackspace/requests/block_storage/delete_snapshot.rb +15 -0
  175. data/lib/fog/rackspace/requests/block_storage/delete_volume.rb +15 -0
  176. data/lib/fog/rackspace/requests/block_storage/get_snapshot.rb +15 -0
  177. data/lib/fog/rackspace/requests/block_storage/get_volume.rb +15 -0
  178. data/lib/fog/rackspace/requests/block_storage/get_volume_type.rb +15 -0
  179. data/lib/fog/rackspace/requests/block_storage/list_snapshots.rb +15 -0
  180. data/lib/fog/rackspace/requests/block_storage/list_volume_types.rb +15 -0
  181. data/lib/fog/rackspace/requests/block_storage/list_volumes.rb +15 -0
  182. data/lib/fog/rackspace/requests/compute_v2/attach_volume.rb +23 -0
  183. data/lib/fog/rackspace/requests/compute_v2/change_server_password.rb +22 -0
  184. data/lib/fog/rackspace/requests/compute_v2/confirm_resize_server.rb +20 -0
  185. data/lib/fog/rackspace/requests/compute_v2/create_server.rb +28 -0
  186. data/lib/fog/rackspace/requests/compute_v2/delete_attachment.rb +15 -0
  187. data/lib/fog/rackspace/requests/compute_v2/delete_server.rb +15 -0
  188. data/lib/fog/rackspace/requests/compute_v2/get_attachment.rb +15 -0
  189. data/lib/fog/rackspace/requests/compute_v2/get_flavor.rb +15 -0
  190. data/lib/fog/rackspace/requests/compute_v2/get_image.rb +15 -0
  191. data/lib/fog/rackspace/requests/compute_v2/get_server.rb +15 -0
  192. data/lib/fog/rackspace/requests/compute_v2/list_attachments.rb +15 -0
  193. data/lib/fog/rackspace/requests/compute_v2/list_flavors.rb +15 -0
  194. data/lib/fog/rackspace/requests/compute_v2/list_images.rb +15 -0
  195. data/lib/fog/rackspace/requests/compute_v2/list_servers.rb +15 -0
  196. data/lib/fog/rackspace/requests/compute_v2/reboot_server.rb +22 -0
  197. data/lib/fog/rackspace/requests/compute_v2/rebuild_server.rb +22 -0
  198. data/lib/fog/rackspace/requests/compute_v2/resize_server.rb +22 -0
  199. data/lib/fog/rackspace/requests/compute_v2/revert_resize_server.rb +20 -0
  200. data/lib/fog/rackspace/requests/compute_v2/update_server.rb +22 -0
  201. data/lib/fog/rackspace/requests/storage/delete_object.rb +1 -1
  202. data/lib/fog/rackspace/requests/storage/get_object_https_url.rb +51 -0
  203. data/lib/fog/rackspace/requests/storage/post_set_meta_temp_url_key.rb +37 -0
  204. data/lib/fog/rackspace/storage.rb +4 -0
  205. data/lib/fog/serverlove.rb +10 -0
  206. data/lib/fog/serverlove/compute.rb +97 -0
  207. data/lib/fog/serverlove/models/compute/image.rb +57 -0
  208. data/lib/fog/serverlove/models/compute/images.rb +26 -0
  209. data/lib/fog/serverlove/models/compute/server.rb +72 -0
  210. data/lib/fog/serverlove/models/compute/servers.rb +26 -0
  211. data/lib/fog/serverlove/requests/compute/create_image.rb +32 -0
  212. data/lib/fog/serverlove/requests/compute/create_server.rb +34 -0
  213. data/lib/fog/serverlove/requests/compute/destroy_image.rb +13 -0
  214. data/lib/fog/serverlove/requests/compute/destroy_server.rb +13 -0
  215. data/lib/fog/serverlove/requests/compute/get_image.rb +13 -0
  216. data/lib/fog/serverlove/requests/compute/get_images.rb +13 -0
  217. data/lib/fog/serverlove/requests/compute/get_server.rb +13 -0
  218. data/lib/fog/serverlove/requests/compute/get_servers.rb +13 -0
  219. data/lib/fog/serverlove/requests/compute/load_standard_image.rb +13 -0
  220. data/lib/fog/serverlove/requests/compute/reset_server.rb +13 -0
  221. data/lib/fog/serverlove/requests/compute/shutdown_server.rb +13 -0
  222. data/lib/fog/serverlove/requests/compute/start_server.rb +13 -0
  223. data/lib/fog/serverlove/requests/compute/stop_server.rb +13 -0
  224. data/lib/fog/serverlove/requests/compute/update_image.rb +15 -0
  225. data/lib/fog/serverlove/requests/compute/update_server.rb +15 -0
  226. data/lib/fog/serverlove/util/compute/password_generator.rb +11 -0
  227. data/lib/fog/storage.rb +3 -0
  228. data/lib/fog/terremark/models/shared/image.rb +22 -0
  229. data/lib/fog/terremark/models/shared/images.rb +48 -0
  230. data/lib/fog/terremark/models/shared/internetservice.rb +67 -0
  231. data/lib/fog/terremark/models/shared/internetservices.rb +42 -0
  232. data/lib/fog/terremark/models/shared/nodeservice.rb +52 -0
  233. data/lib/fog/terremark/models/shared/nodeservices.rb +32 -0
  234. data/lib/fog/terremark/models/shared/server.rb +114 -15
  235. data/lib/fog/terremark/models/shared/servers.rb +7 -8
  236. data/lib/fog/terremark/models/shared/vdc.rb +6 -1
  237. data/lib/fog/terremark/parsers/shared/get_catalog.rb +7 -2
  238. data/lib/fog/terremark/parsers/shared/get_keys_list.rb +56 -0
  239. data/lib/fog/terremark/requests/shared/add_internet_service.rb +10 -9
  240. data/lib/fog/terremark/requests/shared/add_node_service.rb +10 -12
  241. data/lib/fog/terremark/requests/shared/configure_vapp.rb +61 -0
  242. data/lib/fog/terremark/requests/shared/create_internet_service.rb +16 -11
  243. data/lib/fog/terremark/requests/shared/delete_internet_service.rb +2 -1
  244. data/lib/fog/terremark/requests/shared/delete_node_service.rb +2 -1
  245. data/lib/fog/terremark/requests/shared/delete_public_ip.rb +2 -1
  246. data/lib/fog/terremark/requests/shared/get_internet_services.rb +2 -1
  247. data/lib/fog/terremark/requests/shared/get_keys_list.rb +36 -0
  248. data/lib/fog/terremark/requests/shared/get_node_services.rb +2 -1
  249. data/lib/fog/terremark/requests/shared/instantiate_vapp_template.rb +11 -1
  250. data/lib/fog/terremark/shared.rb +19 -1
  251. data/lib/fog/terremark/vcloud.rb +10 -1
  252. data/lib/fog/vcloud/compute.rb +13 -13
  253. data/lib/fog/vcloud/models/compute/catalog_items.rb +6 -2
  254. data/lib/fog/vcloud/models/compute/organizations.rb +1 -2
  255. data/lib/fog/vcloud/models/compute/server.rb +37 -3
  256. data/lib/fog/vcloud/models/compute/vapps.rb +1 -1
  257. data/lib/fog/vcloud/requests/compute/configure_org_network.rb +141 -0
  258. data/lib/fog/vcloud/requests/compute/configure_vm_cpus.rb +38 -0
  259. data/lib/fog/vcloud/requests/compute/configure_vm_memory.rb +11 -12
  260. data/lib/fog/vcloud/requests/compute/configure_vm_password.rb +39 -0
  261. data/lib/fog/vcloud/requests/compute/undeploy.rb +9 -1
  262. data/lib/fog/vsphere/requests/compute/vm_reboot.rb +1 -1
  263. data/tests/atmos/models/storage/file_update_tests.rb +19 -0
  264. data/tests/atmos/models/storage/nested_directories_tests.rb +23 -0
  265. data/tests/aws/models/compute/security_group_tests.rb +21 -12
  266. data/tests/aws/models/dns/records_tests.rb +8 -2
  267. data/tests/aws/models/glacier/model_tests.rb +47 -0
  268. data/tests/aws/models/iam/policies_tests.rb +2 -2
  269. data/tests/aws/models/rds/server_tests.rb +5 -2
  270. data/tests/aws/models/storage/directory_tests.rb +1 -1
  271. data/tests/aws/models/storage/file_tests.rb +1 -1
  272. data/tests/aws/models/storage/files_tests.rb +1 -1
  273. data/tests/aws/models/storage/url_tests.rb +8 -8
  274. data/tests/aws/models/storage/version_tests.rb +1 -1
  275. data/tests/aws/models/storage/versions_tests.rb +1 -1
  276. data/tests/aws/requests/auto_scaling/auto_scaling_tests.rb +5 -0
  277. data/tests/aws/requests/auto_scaling/helper.rb +2 -1
  278. data/tests/aws/requests/compute/instance_tests.rb +17 -23
  279. data/tests/aws/requests/compute/spot_instance_tests.rb +2 -1
  280. data/tests/aws/requests/compute/tag_tests.rb +1 -0
  281. data/tests/aws/requests/compute/volume_tests.rb +45 -4
  282. data/tests/aws/requests/elb/helper.rb +2 -2
  283. data/tests/aws/requests/elb/listener_tests.rb +2 -2
  284. data/tests/aws/requests/elb/load_balancer_tests.rb +1 -1
  285. data/tests/aws/requests/glacier/archive_tests.rb +13 -0
  286. data/tests/aws/requests/glacier/multipart_upload_tests.rb +30 -0
  287. data/tests/aws/requests/glacier/tree_hash_tests.rb +63 -0
  288. data/tests/aws/requests/glacier/vault_tests.rb +35 -0
  289. data/tests/aws/requests/rds/helper.rb +11 -5
  290. data/tests/aws/requests/rds/instance_tests.rb +0 -2
  291. data/tests/aws/requests/storage/acl_utils_tests.rb +1 -1
  292. data/tests/aws/requests/storage/bucket_tests.rb +1 -1
  293. data/tests/aws/requests/storage/multipart_upload_tests.rb +1 -1
  294. data/tests/aws/requests/storage/object_tests.rb +8 -0
  295. data/tests/aws/requests/storage/versioning_tests.rb +1 -1
  296. data/tests/aws/signaturev4_tests.rb +41 -0
  297. data/tests/brightbox/compute_tests.rb +9 -0
  298. data/tests/brightbox/requests/compute/helper.rb +21 -6
  299. data/tests/cloudstack/compute/models/volume_tests.rb +1 -1
  300. data/tests/cloudstack/requests/volume_tests.rb +1 -1
  301. data/tests/compute/helper.rb +10 -4
  302. data/tests/dynect/requests/dns/dns_tests.rb +39 -0
  303. data/tests/google/requests/storage/bucket_tests.rb +2 -3
  304. data/tests/google/requests/storage/object_tests.rb +1 -1
  305. data/tests/helper.rb +10 -3
  306. data/tests/helpers/formats_helper.rb +4 -2
  307. data/tests/helpers/formats_helper_tests.rb +9 -0
  308. data/tests/helpers/mock_helper.rb +6 -1
  309. data/tests/helpers/model_helper.rb +0 -3
  310. data/tests/hp/models/compute/address_tests.rb +1 -1
  311. data/tests/hp/models/compute/addresses_tests.rb +1 -1
  312. data/tests/hp/models/compute/key_pair_tests.rb +1 -1
  313. data/tests/hp/models/compute/key_pairs_tests.rb +1 -1
  314. data/tests/hp/models/compute/security_group_tests.rb +1 -1
  315. data/tests/hp/models/compute/security_groups_tests.rb +1 -1
  316. data/tests/hp/requests/cdn/container_tests.rb +1 -1
  317. data/tests/hp/requests/compute/address_tests.rb +1 -1
  318. data/tests/hp/requests/compute/flavor_tests.rb +1 -1
  319. data/tests/hp/requests/compute/image_tests.rb +1 -1
  320. data/tests/hp/requests/compute/key_pair_tests.rb +1 -1
  321. data/tests/hp/requests/compute/security_group_rule_tests.rb +1 -1
  322. data/tests/hp/requests/compute/security_group_tests.rb +1 -1
  323. data/tests/hp/requests/compute/server_address_tests.rb +1 -1
  324. data/tests/hp/requests/compute/server_tests.rb +1 -1
  325. data/tests/hp/requests/storage/container_tests.rb +1 -1
  326. data/tests/hp/requests/storage/object_tests.rb +1 -1
  327. data/tests/local/models/file_tests.rb +1 -1
  328. data/tests/rackspace/models/block_storage/snapshot_tests.rb +20 -0
  329. data/tests/rackspace/models/block_storage/snapshots_tests.rb +20 -0
  330. data/tests/rackspace/models/block_storage/volume_tests.rb +27 -0
  331. data/tests/rackspace/models/block_storage/volume_types_tests.rb +20 -0
  332. data/tests/rackspace/models/block_storage/volumes_tests.rb +11 -0
  333. data/tests/rackspace/models/compute_v2/flavors_tests.rb +20 -0
  334. data/tests/rackspace/models/compute_v2/images_tests.rb +22 -0
  335. data/tests/rackspace/models/compute_v2/server_tests.rb +62 -0
  336. data/tests/rackspace/models/compute_v2/servers_tests.rb +14 -0
  337. data/tests/rackspace/requests/block_storage/snapshot_tests.rb +81 -0
  338. data/tests/rackspace/requests/block_storage/volume_tests.rb +61 -0
  339. data/tests/rackspace/requests/block_storage/volume_type_tests.rb +31 -0
  340. data/tests/rackspace/requests/compute_v2/attachment_tests.rb +68 -0
  341. data/tests/rackspace/requests/compute_v2/flavor_tests.rb +43 -0
  342. data/tests/rackspace/requests/compute_v2/image_tests.rb +47 -0
  343. data/tests/rackspace/requests/compute_v2/server_tests.rb +147 -0
  344. data/tests/rackspace/requests/storage/account_tests.rb +17 -0
  345. data/tests/rackspace/requests/storage/container_tests.rb +1 -1
  346. data/tests/rackspace/requests/storage/large_object_tests.rb +1 -1
  347. data/tests/rackspace/requests/storage/object_tests.rb +41 -2
  348. data/tests/serverlove/requests/compute/image_tests.rb +57 -0
  349. data/tests/serverlove/requests/compute/server_tests.rb +85 -0
  350. data/tests/serverlove/util/compute/password_generator_tests.rb +19 -0
  351. data/tests/storage/models/directories_tests.rb +1 -1
  352. data/tests/storage/models/directory_test.rb +1 -1
  353. data/tests/storage/models/file_tests.rb +1 -1
  354. data/tests/storage/models/files_tests.rb +1 -1
  355. metadata +188 -3
@@ -31,21 +31,22 @@ module Fog
31
31
  options['Enabled'] = true
32
32
  end
33
33
  data = <<-DATA
34
- <InternetService xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:tmrk:vCloudExpress-1.0:request:createInternetService">
35
- <Name>#{name}</Name>
36
- <Protocol>#{protocol.upcase}</Protocol>
37
- <Port>#{port}</Port>
38
- <Enabled>#{options['Enabled']}</Enabled>
39
- <Description>#{options['Description']}</Description>
40
- </InternetService>
41
- DATA
34
+ <CreateInternetServiceRequest xml:lang="en" xmlns="urn:tmrk:vCloudExpressExtensions-1.6" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
35
+ <Name>#{name}</Name>
36
+ <Protocol>#{protocol.upcase}</Protocol>
37
+ <Port>#{port}</Port>
38
+ <Enabled>#{options['Enabled']}</Enabled>
39
+ <Description>#{options['Description']}</Description>
40
+ </CreateInternetServiceRequest>
41
+ DATA
42
42
  request(
43
43
  :body => data,
44
44
  :expects => 200,
45
45
  :headers => {'Content-Type' => 'application/xml'},
46
46
  :method => 'POST',
47
47
  :parser => Fog::Parsers::Terremark::Shared::InternetService.new,
48
- :path => "publicIps/#{ip_id}/internetServices"
48
+ :path => "api/extensions/v1.6/publicIp/#{ip_id}/internetServices",
49
+ :override_path => true
49
50
  )
50
51
  end
51
52
 
@@ -30,23 +30,21 @@ module Fog
30
30
  unless options.has_key?('Enabled')
31
31
  options['Enabled'] = true
32
32
  end
33
+
33
34
  data = <<-DATA
34
- <NodeService xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:tmrk:vCloudExpress-1.0:request:createNodeService">
35
- <IpAddress>#{ip}</IpAddress>
36
- <Name>#{name}</Name>
37
- <Port>#{port}</Port>
38
- <Enabled>#{options['Enabled']}</Enabled>
39
- <Description>#{options['Description']}</Description>
40
- </NodeService>
41
- DATA
42
- request(
35
+ <CreateNodeServiceRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:tmrk:vCloudExpressExtensions-1.6"><IpAddress>#{ip}</IpAddress><Name>#{name}</Name><Port>#{port}</Port><Enabled>#{options['Enabled']}</Enabled><Description>#{options['Description']}</Description></CreateNodeServiceRequest>
36
+ DATA
37
+ response = request(
43
38
  :body => data,
44
39
  :expects => 200,
45
- :headers => {'Content-Type' => 'application/xml'},
40
+ :headers => {'Content-Type' => 'application/vnd.tmrk.vCloud.nodeService+xml'},
46
41
  :method => 'POST',
47
- :parser => Fog::Parsers::Terremark::Shared::InternetService.new,
48
- :path => "internetServices/#{service_id}/nodes"
42
+ :parser => Fog::Parsers::Terremark::Shared::NodeService.new,
43
+ :path => "api/extensions/v1.6/internetService/#{service_id}/nodeServices",
44
+ :override_path => true
49
45
  )
46
+
47
+ response
50
48
  end
51
49
 
52
50
  end
@@ -0,0 +1,61 @@
1
+ module Fog
2
+ module Terremark
3
+ module Shared
4
+ module Real
5
+ include Common
6
+ def configure_vapp(vapp_id, vapp_name, options = {})
7
+
8
+ items = ""
9
+ vapp_uri = [@host, @path, "vApp", vapp_id.to_s].join("/")
10
+
11
+ if options['vcpus']
12
+ vcpu_item = <<-DATA
13
+ <Item xmlns="http://schemas.dmtf.org/ovf/envelope/1"> <InstanceID xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">1</InstanceID><ResourceType xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">3</ResourceType><VirtualQuantity xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">#{options['vcpus']}</VirtualQuantity></Item>
14
+ DATA
15
+ items << vcpu_item
16
+ end
17
+
18
+ if options['memory']
19
+ memory_item = <<-DATA
20
+ <Item xmlns="http://schemas.dmtf.org/ovf/envelope/1"><InstanceID xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">2</InstanceID><ResourceType xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">4</ResourceType>38<VirtualQuantity xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">#{options['memory']}</VirtualQuantity></Item>
21
+ DATA
22
+ items << memory_item
23
+ end
24
+ #Default root disk
25
+ virtual_disk_item = <<-DATA
26
+ <Item>
27
+ <AddressOnParent xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">0</AddressOnParent> <HostResource xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">1048576</HostResource><InstanceID xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">9</InstanceID><ResourceType xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">17</ResourceType><VirtualQuantity xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">1048576</VirtualQuantity></Item>
28
+ DATA
29
+ items << virtual_disk_item
30
+ #Additional disks
31
+ if options['virtual_disks']
32
+ for disk in options['virtual_disks']
33
+ actual_size = disk.to_i * 1024 * 1024
34
+ virtual_disk_item = <<-DATA
35
+ <Item>
36
+ <AddressOnParent xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">-1</AddressOnParent><HostResource xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">#{actual_size}</HostResource><InstanceID xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">9</InstanceID><ResourceType xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">17</ResourceType><VirtualQuantity xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">#{actual_size}</VirtualQuantity></Item>
37
+ DATA
38
+ items << virtual_disk_item
39
+ end
40
+ end
41
+
42
+ data = <<-DATA
43
+ <VApp href="#{vapp_uri}" type="application/vnd.vmware.vcloud.vApp+xml" name="#{vapp_name}" status="2" size="10485760" xmlns="http://www.vmware.com/vcloud/v0.8" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
44
+ <VirtualHardwareSection xmlns="http://schemas.dmtf.org/ovf/envelope/1"><Info>Virtual Hardware</Info>#{items}
45
+ </VirtualHardwareSection>
46
+ </VApp>
47
+ DATA
48
+
49
+ request(
50
+ :body => data,
51
+ :expects => 202,
52
+ :headers => { 'Content-Type' => 'application/vnd.vmware.vCloud.vApp+xml' },
53
+ :method => 'PUT',
54
+ :path => "vapp/#{vapp_id}"
55
+ )
56
+ end
57
+
58
+ end
59
+ end
60
+ end
61
+ end
@@ -2,6 +2,7 @@ module Fog
2
2
  module Terremark
3
3
  module Shared
4
4
  module Real
5
+ include Common
5
6
 
6
7
  # Reserve requested resources and deploy vApp
7
8
  #
@@ -30,23 +31,27 @@ module Fog
30
31
  unless options.has_key?('Enabled')
31
32
  options['Enabled'] = true
32
33
  end
34
+ #Sample: "https://services.vcloudexpress.terremark.com/api/extensions/v1.6/vdc/3142/internetServices"
35
+ path = vdcs.get(vdc_id).links.find { |item| item['name'] == 'Internet Services'}['href'].split(@host)[1]
33
36
  data = <<-DATA
34
- <InternetService xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:tmrk:vCloudExpress-1.0:request:createInternetService">
35
- <Name>#{name}</Name>
36
- <Protocol>#{protocol.upcase}</Protocol>
37
- <Port>#{port}</Port>
38
- <Enabled>#{options['Enabled']}</Enabled>
39
- <Description>#{options['Description']}</Description>
40
- </InternetService>
41
- DATA
42
- request(
37
+ <CreateInternetServiceRequest xml:lang="en" xmlns="urn:tmrk:vCloudExpressExtensions-1.6" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
38
+ <Name>#{name}</Name>
39
+ <Protocol>#{protocol.upcase}</Protocol>
40
+ <Port>#{port}</Port>
41
+ <Enabled>#{options['Enabled']}</Enabled>
42
+ <Description>#{options['Description']}</Description>
43
+ </CreateInternetServiceRequest>
44
+ DATA
45
+ response = request(
43
46
  :body => data,
44
47
  :expects => 200,
45
- :headers => {'Content-Type' => 'application/xml'},
48
+ :headers => {'Content-Type' => 'application/vnd.tmrk.vCloud.internetService+xml'},
46
49
  :method => 'POST',
47
50
  :parser => Fog::Parsers::Terremark::Shared::InternetService.new,
48
- :path => "vdc/#{vdc_id}/internetServices"
51
+ :path => path,
52
+ :override_path => true
49
53
  )
54
+ response
50
55
  end
51
56
 
52
57
  end
@@ -12,7 +12,8 @@ module Fog
12
12
  request(
13
13
  :expects => 200,
14
14
  :method => 'DELETE',
15
- :path => "InternetServices/#{internet_service_id}"
15
+ :path => "api/extensions/v1.6/internetService/#{internet_service_id}",
16
+ :override_path => true
16
17
  )
17
18
  end
18
19
 
@@ -12,7 +12,8 @@ module Fog
12
12
  request(
13
13
  :expects => 200,
14
14
  :method => 'DELETE',
15
- :path => "nodeServices/#{node_service_id}"
15
+ :path => "api/extensions/v1.6/nodeService/#{node_service_id}",
16
+ :override_path => true
16
17
  )
17
18
  end
18
19
 
@@ -12,7 +12,8 @@ module Fog
12
12
  request(
13
13
  :expects => 200,
14
14
  :method => 'DELETE',
15
- :path => "publicIps/#{public_ip_id}"
15
+ :path => "api/extensions/v1.6/publicIp/#{public_ip_id}",
16
+ :override_path => true
16
17
  )
17
18
  end
18
19
 
@@ -25,7 +25,8 @@ module Fog
25
25
  :expects => 200,
26
26
  :method => 'GET',
27
27
  :parser => Fog::Parsers::Terremark::Shared::GetInternetServices.new,
28
- :path => "vdc/#{vdc_id}/internetServices"
28
+ :path => "api/extensions/v1.6/vdc/#{vdc_id}/internetServices",
29
+ :override_path => true
29
30
  )
30
31
  end
31
32
 
@@ -0,0 +1,36 @@
1
+ module Fog
2
+ module Terremark
3
+ module Shared
4
+ module Real
5
+ include Common
6
+
7
+ # Get list of SSH keys for an organization
8
+ #
9
+ # ==== Parameters
10
+ # * organization_id<~Integer> - Id of organization to lookup
11
+ #
12
+ # ==== Returns
13
+ # * response<~Excon::Response>:
14
+ # * body<~Hash>:
15
+ # * 'description'<~String> - Description of organization
16
+ # * 'links'<~Array> - An array of links to entities in the organization
17
+ # * 'href'<~String> - location of link
18
+ # * 'name'<~String> - name of link
19
+ # * 'rel'<~String> - action to perform
20
+ # * 'type'<~String> - type of link
21
+ def get_keys_list(organization_id)
22
+ response = request(
23
+ :expects => 200,
24
+ :method => 'GET',
25
+ :parser => Fog::Parsers::Terremark::Shared::GetKeysList.new,
26
+ :path => "api/extensions/v1.6/org/#{organization_id}/keys",
27
+ :override_path => true
28
+ )
29
+ response
30
+ end
31
+
32
+ end
33
+
34
+ end
35
+ end
36
+ end
@@ -20,7 +20,8 @@ module Fog
20
20
  :expects => 200,
21
21
  :method => 'GET',
22
22
  :parser => Fog::Parsers::Terremark::Shared::GetNodeServices.new,
23
- :path => "InternetServices/#{service_id}/nodes"
23
+ :path => "api/extensions/v1.6/internetService/#{service_id}/nodeServices",
24
+ :override_path => true
24
25
  )
25
26
  end
26
27
 
@@ -23,17 +23,27 @@ module Fog
23
23
  unless name.length < 15
24
24
  raise ArgumentError.new('Name must be fewer than 15 characters')
25
25
  end
26
+ unless vapp_template
27
+ raise ArgumentError.new("vApp Image Template is a compulsary parameter")
28
+ end
29
+ options['ssh_key_fingerprint'] ||= default_ssh_key["FingerPrint"]
26
30
  options['cpus'] ||= 1
27
31
  options['memory'] ||= 512
28
32
  options['network_id'] ||= default_network_id
29
33
  options['vdc_id'] ||= default_vdc_id
34
+ options['primary_dns'] ||= '208.67.222.222'
35
+ options['secondary_dns'] ||= '208.67.220.220'
30
36
 
31
37
  data = <<-DATA
32
38
  <?xml version="1.0" encoding="UTF-8"?>
33
39
  <InstantiateVAppTemplateParams name="#{name}" xmlns="http://www.vmware.com/vcloud/v0.8" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.vmware.com/vcloud/v0.8 http://services.vcloudexpress.terremark.com/api/v0.8/ns/vcloud.xsd">
34
40
  <VAppTemplate href="#{@scheme}://#{@host}/#{@path}/vAppTemplate/#{vapp_template}" />
35
41
  <InstantiationParams xmlns:vmw="http://www.vmware.com/schema/ovf">
36
- <ProductSection xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1" xmlns:q1="http://www.vmware.com/vcloud/v0.8"/>
42
+ <ProductSection xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1" xmlns:q1="http://www.vmware.com/vcloud/v0.8">
43
+ <Property xmlns="http://schemas.dmtf.org/ovf/envelope/1" ovf:key="primaryDNS" ovf:value="#{options['primary_dns']}" />
44
+ <Property xmlns="http://schemas.dmtf.org/ovf/envelope/1" ovf:key="secondaryDNS" ovf:value="#{options['secondary_dns']}" />
45
+ <Property xmlns="http://schemas.dmtf.org/ovf/envelope/1" ovf:key="sshKeyFingerprint" ovf:value="#{options['ssh_key_fingerprint']}" />
46
+ </ProductSection>
37
47
  <VirtualHardwareSection xmlns:q1="http://www.vmware.com/vcloud/v0.8">
38
48
  <Item xmlns="http://schemas.dmtf.org/ovf/envelope/1">
39
49
  <InstanceID xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">1</InstanceID>
@@ -72,6 +72,15 @@ module Fog
72
72
  if @cookie
73
73
  headers.merge!('Cookie' => @cookie)
74
74
  end
75
+ if params[:path]
76
+ if params[:override_path] == true
77
+ path = params[:path]
78
+ else
79
+ path = "#{@path}/#{params[:path]}"
80
+ end
81
+ else
82
+ path = "#{@path}"
83
+ end
75
84
  @connection.request({
76
85
  :body => params[:body],
77
86
  :expects => params[:expects],
@@ -79,7 +88,7 @@ module Fog
79
88
  :host => @host,
80
89
  :method => params[:method],
81
90
  :parser => params[:parser],
82
- :path => "#{@path}/#{params[:path]}"
91
+ :path => path
83
92
  })
84
93
  end
85
94
 
@@ -236,10 +245,16 @@ module Fog
236
245
  require 'fog/terremark/models/shared/networks'
237
246
  require 'fog/terremark/models/shared/server'
238
247
  require 'fog/terremark/models/shared/servers'
248
+ require 'fog/terremark/models/shared/image'
249
+ require 'fog/terremark/models/shared/images'
239
250
  require 'fog/terremark/models/shared/task'
240
251
  require 'fog/terremark/models/shared/tasks'
241
252
  require 'fog/terremark/models/shared/vdc'
242
253
  require 'fog/terremark/models/shared/vdcs'
254
+ require 'fog/terremark/models/shared/internetservice'
255
+ require 'fog/terremark/models/shared/internetservices'
256
+ require 'fog/terremark/models/shared/nodeservice'
257
+ require 'fog/terremark/models/shared/nodeservices'
243
258
  require 'fog/terremark/parsers/shared/get_catalog'
244
259
  require 'fog/terremark/parsers/shared/get_catalog_item'
245
260
  require 'fog/terremark/parsers/shared/get_internet_services'
@@ -249,6 +264,7 @@ module Fog
249
264
  require 'fog/terremark/parsers/shared/get_organizations'
250
265
  require 'fog/terremark/parsers/shared/get_public_ips'
251
266
  require 'fog/terremark/parsers/shared/get_tasks_list'
267
+ require 'fog/terremark/parsers/shared/get_keys_list'
252
268
  require 'fog/terremark/parsers/shared/get_vapp_template'
253
269
  require 'fog/terremark/parsers/shared/get_vdc'
254
270
  require 'fog/terremark/parsers/shared/instantiate_vapp_template'
@@ -278,10 +294,12 @@ module Fog
278
294
  require 'fog/terremark/requests/shared/get_public_ips'
279
295
  require 'fog/terremark/requests/shared/get_task'
280
296
  require 'fog/terremark/requests/shared/get_tasks_list'
297
+ require 'fog/terremark/requests/shared/get_keys_list'
281
298
  require 'fog/terremark/requests/shared/get_vapp'
282
299
  require 'fog/terremark/requests/shared/get_vapp_template'
283
300
  require 'fog/terremark/requests/shared/get_vdc'
284
301
  require 'fog/terremark/requests/shared/instantiate_vapp_template'
302
+ require 'fog/terremark/requests/shared/configure_vapp'
285
303
  require 'fog/terremark/requests/shared/power_off'
286
304
  require 'fog/terremark/requests/shared/power_on'
287
305
  require 'fog/terremark/requests/shared/power_reset'
@@ -7,7 +7,8 @@ module Fog
7
7
 
8
8
  module Defaults
9
9
  HOST = 'services.vcloudexpress.terremark.com'
10
- PATH = '/api/v0.8'
10
+ PATH = '/api/v0.8a-ext1.6'
11
+ #PATH = '/api/'
11
12
  PORT = 443
12
13
  SCHEME = 'https'
13
14
  end
@@ -96,6 +97,14 @@ module Fog
96
97
  end
97
98
  end
98
99
 
100
+ def default_ssh_key
101
+ if default_ssh_key
102
+ @default_ssh_key ||= begin
103
+ keys = get_keys_list(default_organization_id).body["Keys"]
104
+ keys.find { |item| item["IsDefault"] == "true" }
105
+ end
106
+ end
107
+ end
99
108
  class Mock
100
109
  include Fog::Terremark::Shared::Mock
101
110
  include Fog::Terremark::Shared::Parser
@@ -112,8 +112,11 @@ module Fog
112
112
  request :configure_network_ip
113
113
  request :configure_vapp
114
114
  request :configure_vm_memory
115
+ request :configure_vm_cpus
116
+ request :configure_org_network
115
117
  request :configure_vm_name_description
116
118
  request :configure_vm_disks
119
+ request :configure_vm_password
117
120
  request :delete_vapp
118
121
  request :get_catalog_item
119
122
  request :get_customization_options
@@ -188,12 +191,12 @@ module Fog
188
191
  @username = options[:vcloud_username]
189
192
  @password = options[:vcloud_password]
190
193
  @host = options[:vcloud_host]
191
- @vdc_href = options[:vcloud_default_vdc]
192
194
  @base_path = options[:vcloud_base_path] || Fog::Vcloud::Compute::BASE_PATH
193
195
  @version = options[:vcloud_version] || Fog::Vcloud::Compute::DEFAULT_VERSION
194
196
  @path = options[:vcloud_path] || "#{@base_path}/v#{@version}"
195
197
  @port = options[:vcloud_port] || Fog::Vcloud::Compute::PORT
196
198
  @scheme = options[:vcloud_scheme] || Fog::Vcloud::Compute::SCHEME
199
+ @vdc_href = options[:vcloud_default_vdc]
197
200
  end
198
201
 
199
202
  def reload
@@ -201,22 +204,19 @@ module Fog
201
204
  end
202
205
 
203
206
  def default_organization_uri
204
- @default_organization_uri ||= begin
207
+ @default_organization_uri ||= organizations.first.href
208
+ @default_organization_uri
209
+ end
210
+
211
+ def default_vdc_href
212
+ if @vdc_href.nil?
205
213
  unless @login_results
206
214
  do_login
207
215
  end
208
- case @login_results.body[:Org]
209
- when Array
210
- @login_results.body[:Org].first[:href]
211
- when Hash
212
- @login_results.body[:Org][:href]
213
- else
214
- nil
215
- end
216
+ org = organizations.first
217
+ vdc = get_organization(org.href).links.find { |item| item[:type] == 'application/vnd.vmware.vcloud.vdc+xml'}
218
+ @vdc_href = vdc[:href]
216
219
  end
217
- end
218
-
219
- def default_vdc_href
220
220
  @vdc_href
221
221
  end
222
222
 
@@ -10,8 +10,12 @@ module Fog
10
10
  attribute :href, :aliases => :Href
11
11
 
12
12
  def all
13
- data = connection.get_catalog(href).body[:CatalogItems][:CatalogItem]
14
- load(data)
13
+ catalog_item_info = connection.get_catalog_item(self.href)
14
+ items = connection.get_catalog_item(self.href).body[:CatalogItems]
15
+ if items.size > 0
16
+ data = items[:CatalogItem]
17
+ load(data)
18
+ end
15
19
  end
16
20
 
17
21
  def get(uri)