gapinc-fog 1.12.1.2.1 → 1.14.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (292) hide show
  1. data/.gitignore +1 -0
  2. data/.travis.yml +16 -1
  3. data/Gemfile.1.8.7 +10 -0
  4. data/README.md +23 -2
  5. data/Rakefile +2 -2
  6. data/changelog.txt +276 -0
  7. data/fog.gemspec +4 -6
  8. data/lib/fog/atmos/models/storage/file.rb +2 -2
  9. data/lib/fog/aws/elb.rb +3 -0
  10. data/lib/fog/aws/elb/policy_types.rb +441 -430
  11. data/lib/fog/aws/models/auto_scaling/activities.rb +11 -3
  12. data/lib/fog/aws/models/auto_scaling/groups.rb +6 -3
  13. data/lib/fog/aws/models/auto_scaling/policies.rb +7 -3
  14. data/lib/fog/aws/models/compute/volume.rb +1 -1
  15. data/lib/fog/aws/models/elb/backend_server_description.rb +11 -0
  16. data/lib/fog/aws/models/elb/backend_server_descriptions.rb +22 -0
  17. data/lib/fog/aws/models/elb/load_balancer.rb +15 -2
  18. data/lib/fog/aws/models/elb/policies.rb +28 -13
  19. data/lib/fog/aws/models/elb/policy.rb +20 -10
  20. data/lib/fog/aws/models/rds/instance_option.rb +21 -0
  21. data/lib/fog/aws/models/rds/instance_options.rb +30 -0
  22. data/lib/fog/aws/models/rds/log_file.rb +26 -0
  23. data/lib/fog/aws/models/rds/log_files.rb +50 -0
  24. data/lib/fog/aws/models/rds/server.rb +1 -0
  25. data/lib/fog/aws/models/rds/snapshots.rb +20 -13
  26. data/lib/fog/aws/parsers/auto_scaling/describe_policies.rb +5 -5
  27. data/lib/fog/aws/parsers/elb/describe_load_balancers.rb +44 -13
  28. data/lib/fog/aws/parsers/rds/db_parser.rb +28 -6
  29. data/lib/fog/aws/parsers/rds/describe_db_log_files.rb +44 -0
  30. data/lib/fog/aws/parsers/rds/describe_orderable_db_instance_options.rb +47 -0
  31. data/lib/fog/aws/parsers/rds/download_db_logfile_portion.rb +26 -0
  32. data/lib/fog/aws/parsers/storage/complete_multipart_upload.rb +1 -1
  33. data/lib/fog/aws/parsers/sts/assume_role.rb +30 -0
  34. data/lib/fog/aws/rds.rb +13 -0
  35. data/lib/fog/aws/requests/auto_scaling/describe_auto_scaling_groups.rb +9 -1
  36. data/lib/fog/aws/requests/auto_scaling/describe_policies.rb +15 -1
  37. data/lib/fog/aws/requests/elb/create_app_cookie_stickiness_policy.rb +0 -2
  38. data/lib/fog/aws/requests/elb/create_lb_cookie_stickiness_policy.rb +0 -2
  39. data/lib/fog/aws/requests/elb/create_load_balancer.rb +7 -0
  40. data/lib/fog/aws/requests/elb/create_load_balancer_policy.rb +11 -8
  41. data/lib/fog/aws/requests/elb/describe_load_balancers.rb +21 -1
  42. data/lib/fog/aws/requests/elb/set_load_balancer_policies_for_backend_server.rb +67 -0
  43. data/lib/fog/aws/requests/rds/describe_db_log_files.rb +67 -0
  44. data/lib/fog/aws/requests/rds/describe_orderable_db_instance_options.rb +76 -0
  45. data/lib/fog/aws/requests/rds/download_db_logfile_portion.rb +63 -0
  46. data/lib/fog/aws/requests/ses/send_raw_email.rb +1 -1
  47. data/lib/fog/aws/requests/ses/verify_domain_identity.rb +1 -1
  48. data/lib/fog/aws/requests/storage/complete_multipart_upload.rb +6 -2
  49. data/lib/fog/aws/requests/storage/get_object.rb +1 -1
  50. data/lib/fog/aws/requests/sts/assume_role.rb +46 -0
  51. data/lib/fog/aws/ses.rb +25 -9
  52. data/lib/fog/aws/sts.rb +22 -6
  53. data/lib/fog/bin/openstack.rb +5 -0
  54. data/lib/fog/bin/rackspace.rb +4 -0
  55. data/lib/fog/brightbox/models/compute/collaboration.rb +10 -2
  56. data/lib/fog/brightbox/models/compute/collaborations.rb +26 -2
  57. data/lib/fog/brightbox/models/compute/user_collaboration.rb +16 -1
  58. data/lib/fog/brightbox/models/compute/user_collaborations.rb +10 -2
  59. data/lib/fog/cloudstack/models/compute/servers.rb +1 -1
  60. data/lib/fog/compute/models/server.rb +16 -10
  61. data/lib/fog/core.rb +1 -0
  62. data/lib/fog/core/collection.rb +18 -0
  63. data/lib/fog/core/mock.rb +16 -0
  64. data/lib/fog/digitalocean/compute.rb +32 -3
  65. data/lib/fog/digitalocean/models/compute/server.rb +43 -14
  66. data/lib/fog/digitalocean/models/compute/servers.rb +27 -4
  67. data/lib/fog/digitalocean/models/compute/ssh_keys.rb +2 -3
  68. data/lib/fog/digitalocean/requests/compute/create_server.rb +9 -7
  69. data/lib/fog/digitalocean/requests/compute/destroy_server.rb +3 -0
  70. data/lib/fog/digitalocean/requests/compute/list_images.rb +6 -6
  71. data/lib/fog/dnsimple/dns.rb +4 -1
  72. data/lib/fog/dnsimple/models/dns/record.rb +3 -3
  73. data/lib/fog/dnsimple/requests/dns/create_domain.rb +36 -0
  74. data/lib/fog/dnsimple/requests/dns/create_record.rb +27 -0
  75. data/lib/fog/dnsimple/requests/dns/delete_domain.rb +12 -0
  76. data/lib/fog/dnsimple/requests/dns/delete_record.rb +12 -0
  77. data/lib/fog/dnsimple/requests/dns/get_domain.rb +12 -0
  78. data/lib/fog/dnsimple/requests/dns/get_record.rb +24 -0
  79. data/lib/fog/dnsimple/requests/dns/list_domains.rb +12 -0
  80. data/lib/fog/dnsimple/requests/dns/list_records.rb +12 -0
  81. data/lib/fog/dnsimple/requests/dns/update_record.rb +20 -0
  82. data/lib/fog/glesys/models/compute/server.rb +6 -0
  83. data/lib/fog/google/README.md +28 -0
  84. data/lib/fog/google/Rakefile +17 -0
  85. data/lib/fog/google/examples/bootstrap.rb +9 -0
  86. data/lib/fog/google/examples/create.rb +37 -0
  87. data/lib/fog/google/examples/eric-fail.rb +19 -0
  88. data/lib/fog/google/examples/get_list_images.rb +27 -0
  89. data/lib/fog/google/examples/launch_micro_instance.rb +21 -0
  90. data/lib/fog/google/examples/metadata.rb +18 -0
  91. data/lib/fog/google/models/compute/disks.rb +16 -6
  92. data/lib/fog/google/models/compute/flavors.rb +2 -1
  93. data/lib/fog/google/models/compute/image.rb +16 -17
  94. data/lib/fog/google/models/compute/images.rb +38 -5
  95. data/lib/fog/google/models/compute/server.rb +2 -2
  96. data/lib/fog/google/models/compute/servers.rb +8 -5
  97. data/lib/fog/google/models/storage/file.rb +7 -1
  98. data/lib/fog/google/parsers/storage/access_control_list.rb +2 -2
  99. data/lib/fog/google/requests/compute/insert_server.rb +1 -2
  100. data/lib/fog/google/requests/compute/list_images.rb +3 -2
  101. data/lib/fog/google/requests/storage/get_object.rb +1 -1
  102. data/lib/fog/hp/requests/storage/get_object.rb +1 -1
  103. data/lib/fog/ibm/requests/compute/create_instance.rb +20 -15
  104. data/lib/fog/internet_archive/requests/storage/get_object.rb +1 -1
  105. data/lib/fog/metering.rb +25 -0
  106. data/lib/fog/openstack.rb +2 -1
  107. data/lib/fog/openstack/metering.rb +215 -0
  108. data/lib/fog/openstack/models/compute/server.rb +5 -2
  109. data/lib/fog/openstack/models/metering/resource.rb +24 -0
  110. data/lib/fog/openstack/models/metering/resources.rb +25 -0
  111. data/lib/fog/openstack/models/volume/volume.rb +3 -1
  112. data/lib/fog/openstack/models/volume/volumes.rb +2 -1
  113. data/lib/fog/openstack/network.rb +24 -1
  114. data/lib/fog/openstack/requests/compute/create_server.rb +19 -1
  115. data/lib/fog/openstack/requests/compute/get_host_details.rb +2 -1
  116. data/lib/fog/openstack/requests/metering/get_resource.rb +32 -0
  117. data/lib/fog/openstack/requests/metering/get_samples.rb +55 -0
  118. data/lib/fog/openstack/requests/metering/get_statistics.rb +56 -0
  119. data/lib/fog/openstack/requests/metering/list_meters.rb +50 -0
  120. data/lib/fog/openstack/requests/metering/list_resources.rb +32 -0
  121. data/lib/fog/openstack/requests/network/delete_quota.rb +26 -0
  122. data/lib/fog/openstack/requests/network/get_quota.rb +31 -0
  123. data/lib/fog/openstack/requests/network/get_quotas.rb +31 -0
  124. data/lib/fog/openstack/requests/network/update_quota.rb +33 -0
  125. data/lib/fog/openstack/requests/storage/put_object.rb +8 -5
  126. data/lib/fog/openstack/requests/volume/create_volume.rb +4 -2
  127. data/lib/fog/rackspace.rb +24 -4
  128. data/lib/fog/rackspace/block_storage.rb +8 -4
  129. data/lib/fog/rackspace/cdn.rb +21 -4
  130. data/lib/fog/rackspace/compute_v2.rb +15 -4
  131. data/lib/fog/rackspace/errors.rb +12 -5
  132. data/lib/fog/rackspace/mock_data.rb +18 -7
  133. data/lib/fog/rackspace/models/compute_v2/key_pair.rb +56 -0
  134. data/lib/fog/rackspace/models/compute_v2/key_pairs.rb +43 -0
  135. data/lib/fog/rackspace/models/compute_v2/server.rb +7 -2
  136. data/lib/fog/rackspace/models/compute_v2/servers.rb +2 -1
  137. data/lib/fog/rackspace/models/identity/service_catalog.rb +34 -16
  138. data/lib/fog/rackspace/models/monitoring/agent_token.rb +40 -0
  139. data/lib/fog/rackspace/models/monitoring/agent_tokens.rb +28 -0
  140. data/lib/fog/rackspace/models/monitoring/alarm.rb +51 -0
  141. data/lib/fog/rackspace/models/monitoring/alarm_example.rb +26 -0
  142. data/lib/fog/rackspace/models/monitoring/alarm_examples.rb +31 -0
  143. data/lib/fog/rackspace/models/monitoring/alarms.rb +40 -0
  144. data/lib/fog/rackspace/models/monitoring/base.rb +36 -0
  145. data/lib/fog/rackspace/models/monitoring/check.rb +75 -0
  146. data/lib/fog/rackspace/models/monitoring/check_type.rb +15 -0
  147. data/lib/fog/rackspace/models/monitoring/check_types.rb +23 -0
  148. data/lib/fog/rackspace/models/monitoring/checks.rb +40 -0
  149. data/lib/fog/rackspace/models/monitoring/data_point.rb +18 -0
  150. data/lib/fog/rackspace/models/monitoring/data_points.rb +49 -0
  151. data/lib/fog/rackspace/models/monitoring/entities.rb +48 -0
  152. data/lib/fog/rackspace/models/monitoring/entity.rb +64 -0
  153. data/lib/fog/rackspace/models/monitoring/metric.rb +25 -0
  154. data/lib/fog/rackspace/models/monitoring/metrics.rb +27 -0
  155. data/lib/fog/rackspace/monitoring.rb +149 -0
  156. data/lib/fog/rackspace/requests/compute_v2/create_keypair.rb +53 -0
  157. data/lib/fog/rackspace/requests/compute_v2/create_server.rb +10 -8
  158. data/lib/fog/rackspace/requests/compute_v2/delete_keypair.rb +36 -0
  159. data/lib/fog/rackspace/requests/compute_v2/get_keypair.rb +41 -0
  160. data/lib/fog/rackspace/requests/compute_v2/list_keypairs.rb +37 -0
  161. data/lib/fog/rackspace/requests/monitoring/create_agent_token.rb +19 -0
  162. data/lib/fog/rackspace/requests/monitoring/create_alarm.rb +19 -0
  163. data/lib/fog/rackspace/requests/monitoring/create_check.rb +19 -0
  164. data/lib/fog/rackspace/requests/monitoring/create_entity.rb +19 -0
  165. data/lib/fog/rackspace/requests/monitoring/delete_agent_token.rb +17 -0
  166. data/lib/fog/rackspace/requests/monitoring/delete_alarm.rb +18 -0
  167. data/lib/fog/rackspace/requests/monitoring/delete_check.rb +17 -0
  168. data/lib/fog/rackspace/requests/monitoring/delete_entity.rb +17 -0
  169. data/lib/fog/rackspace/requests/monitoring/evaluate_alarm_example.rb +21 -0
  170. data/lib/fog/rackspace/requests/monitoring/get_agent_token.rb +19 -0
  171. data/lib/fog/rackspace/requests/monitoring/get_alarm.rb +19 -0
  172. data/lib/fog/rackspace/requests/monitoring/get_alarm_example.rb +19 -0
  173. data/lib/fog/rackspace/requests/monitoring/get_check.rb +19 -0
  174. data/lib/fog/rackspace/requests/monitoring/get_entity.rb +19 -0
  175. data/lib/fog/rackspace/requests/monitoring/list_agent_tokens.rb +19 -0
  176. data/lib/fog/rackspace/requests/monitoring/list_alarm_examples.rb +18 -0
  177. data/lib/fog/rackspace/requests/monitoring/list_alarms.rb +18 -0
  178. data/lib/fog/rackspace/requests/monitoring/list_check_types.rb +17 -0
  179. data/lib/fog/rackspace/requests/monitoring/list_checks.rb +18 -0
  180. data/lib/fog/rackspace/requests/monitoring/list_data_points.rb +18 -0
  181. data/lib/fog/rackspace/requests/monitoring/list_entities.rb +19 -0
  182. data/lib/fog/rackspace/requests/monitoring/list_metrics.rb +18 -0
  183. data/lib/fog/rackspace/requests/monitoring/list_notification_plans.rb +18 -0
  184. data/lib/fog/rackspace/requests/monitoring/list_overview.rb +19 -0
  185. data/lib/fog/rackspace/requests/monitoring/update_alarm.rb +18 -0
  186. data/lib/fog/rackspace/requests/monitoring/update_check.rb +18 -0
  187. data/lib/fog/rackspace/requests/monitoring/update_entity.rb +18 -0
  188. data/lib/fog/rackspace/requests/storage/delete_multiple_objects.rb +75 -0
  189. data/lib/fog/rackspace/requests/storage/delete_static_large_object.rb +50 -0
  190. data/lib/fog/rackspace/requests/storage/put_dynamic_obj_manifest.rb +44 -0
  191. data/lib/fog/rackspace/requests/storage/put_object.rb +1 -1
  192. data/lib/fog/rackspace/requests/storage/put_object_manifest.rb +3 -30
  193. data/lib/fog/rackspace/requests/storage/put_static_obj_manifest.rb +60 -0
  194. data/lib/fog/rackspace/storage.rb +24 -16
  195. data/lib/fog/riakcs/provisioning.rb +2 -1
  196. data/lib/fog/riakcs/usage.rb +2 -1
  197. data/lib/fog/vcloud/compute.rb +1 -1
  198. data/lib/fog/vcloud/requests/compute/configure_vm.rb +2 -2
  199. data/lib/fog/version.rb +1 -1
  200. data/lib/fog/vsphere/compute.rb +131 -0
  201. data/lib/fog/vsphere/models/compute/server.rb +5 -1
  202. data/lib/fog/vsphere/requests/compute/get_datacenter.rb +3 -1
  203. data/lib/fog/vsphere/requests/compute/get_virtual_machine.rb +20 -38
  204. data/lib/fog/vsphere/requests/compute/list_datacenters.rb +1 -0
  205. data/lib/fog/vsphere/requests/compute/list_virtual_machines.rb +8 -114
  206. data/lib/fog/vsphere/requests/compute/vm_clone.rb +18 -9
  207. data/lib/fog/vsphere/requests/compute/vm_power_off.rb +2 -0
  208. data/lib/fog/xenserver/compute.rb +14 -12
  209. data/lib/fog/xenserver/models/compute/console.rb +27 -0
  210. data/lib/fog/xenserver/models/compute/consoles.rb +25 -0
  211. data/lib/fog/xenserver/models/compute/server.rb +6 -2
  212. data/lib/fog/xenserver/models/compute/servers.rb +5 -0
  213. data/lib/fog/xenserver/requests/compute/create_server.rb +4 -0
  214. data/lib/fog/xml/sax_parser_connection.rb +3 -0
  215. data/lib/tasks/changelog_task.rb +2 -0
  216. data/tests/aws/models/compute/volume_tests.rb +1 -1
  217. data/tests/aws/models/elb/model_tests.rb +28 -1
  218. data/tests/aws/models/rds/instance_option_tests.rb +14 -0
  219. data/tests/aws/parsers/elb/describe_load_balancers.rb +65 -0
  220. data/tests/aws/requests/elb/helper.rb +2 -1
  221. data/tests/aws/requests/elb/listener_tests.rb +1 -1
  222. data/tests/aws/requests/elb/load_balancer_tests.rb +5 -1
  223. data/tests/aws/requests/elb/policy_tests.rb +85 -6
  224. data/tests/aws/requests/iam/helper.rb +4 -1
  225. data/tests/aws/requests/iam/server_certificate_tests.rb +2 -2
  226. data/tests/aws/requests/rds/helper.rb +35 -0
  227. data/tests/aws/requests/rds/instance_option_tests.rb +21 -0
  228. data/tests/aws/requests/rds/log_file_tests.rb +19 -0
  229. data/tests/aws/requests/sts/assume_role_tests.rb +19 -0
  230. data/tests/core/mocking_tests.rb +15 -0
  231. data/tests/digitalocean/helper.rb +23 -16
  232. data/tests/digitalocean/models/compute/flavor_tests.rb +2 -2
  233. data/tests/digitalocean/models/compute/image_tests.rb +2 -2
  234. data/tests/digitalocean/models/compute/region_tests.rb +2 -2
  235. data/tests/digitalocean/models/compute/server_tests.rb +11 -3
  236. data/tests/digitalocean/models/compute/servers_tests.rb +14 -28
  237. data/tests/digitalocean/models/compute/ssh_key_tests.rb +7 -3
  238. data/tests/digitalocean/models/compute/ssh_keys_tests.rb +5 -1
  239. data/tests/digitalocean/requests/compute/create_server_tests.rb +3 -6
  240. data/tests/digitalocean/requests/compute/destroy_server_tests.rb +1 -2
  241. data/tests/digitalocean/requests/compute/get_server_details_tests.rb +1 -1
  242. data/tests/digitalocean/requests/compute/get_ssh_key_tests.rb +4 -1
  243. data/tests/digitalocean/requests/compute/list_ssh_keys_tests.rb +5 -2
  244. data/tests/dnsimple/requests/dns/dns_tests.rb +30 -26
  245. data/tests/helper.rb +2 -2
  246. data/tests/helpers/collection_helper.rb +4 -4
  247. data/tests/helpers/mock_helper.rb +2 -0
  248. data/tests/openstack/requests/metering/meter_tests.rb +52 -0
  249. data/tests/openstack/requests/metering/resource_tests.rb +19 -0
  250. data/tests/openstack/requests/network/quota_tests.rb +65 -0
  251. data/tests/openstack/requests/storage/object_tests.rb +27 -2
  252. data/tests/rackspace/block_storage_tests.rb +2 -1
  253. data/tests/rackspace/cdn_tests.rb +9 -0
  254. data/tests/rackspace/compute_v2_tests.rb +16 -15
  255. data/tests/rackspace/databases_tests.rb +1 -1
  256. data/tests/rackspace/load_balancer_tests.rb +1 -1
  257. data/tests/rackspace/models/compute_v2/keypairs_tests.rb +47 -0
  258. data/tests/rackspace/models/identity/service_catalog_tests.rb +54 -29
  259. data/tests/rackspace/models/monitoring/agent_token_tests.rb +9 -0
  260. data/tests/rackspace/models/monitoring/agent_tokens_tests.rb +9 -0
  261. data/tests/rackspace/models/monitoring/alarm_example_tests.rb +18 -0
  262. data/tests/rackspace/models/monitoring/alarm_examples_tests.rb +19 -0
  263. data/tests/rackspace/models/monitoring/alarm_tests.rb +56 -0
  264. data/tests/rackspace/models/monitoring/alarms_tests.rb +25 -0
  265. data/tests/rackspace/models/monitoring/check_tests.rb +50 -0
  266. data/tests/rackspace/models/monitoring/check_types_tests.rb +14 -0
  267. data/tests/rackspace/models/monitoring/checks_tests.rb +16 -0
  268. data/tests/rackspace/models/monitoring/data_points_tests.rb +19 -0
  269. data/tests/rackspace/models/monitoring/entities_tests.rb +14 -0
  270. data/tests/rackspace/models/monitoring/entity_tests.rb +26 -0
  271. data/tests/rackspace/models/monitoring/metric_tests.rb +19 -0
  272. data/tests/rackspace/models/monitoring/metrics_tests.rb +17 -0
  273. data/tests/rackspace/monitoring_tests.rb +72 -0
  274. data/tests/rackspace/requests/compute_v2/keypair_tests.rb +55 -0
  275. data/tests/rackspace/requests/monitoring/agent_tests.rb +34 -0
  276. data/tests/rackspace/requests/monitoring/alarm_example_tests.rb +30 -0
  277. data/tests/rackspace/requests/monitoring/alarm_tests.rb +56 -0
  278. data/tests/rackspace/requests/monitoring/check_tests.rb +40 -0
  279. data/tests/rackspace/requests/monitoring/entity_tests.rb +37 -0
  280. data/tests/rackspace/requests/monitoring/helper.rb +78 -0
  281. data/tests/rackspace/requests/monitoring/list_tests.rb +60 -0
  282. data/tests/rackspace/requests/storage/large_object_tests.rb +303 -59
  283. data/tests/rackspace/requests/storage/object_tests.rb +73 -18
  284. data/tests/vsphere/models/compute/server_tests.rb +1 -1
  285. data/tests/vsphere/requests/compute/list_virtual_machines_tests.rb +2 -2
  286. data/tests/vsphere/requests/compute/vm_clone_tests.rb +14 -8
  287. data/tests/xenserver/compute_tests.rb +5 -5
  288. data/tests/xenserver/models/compute/console_test.rb +35 -0
  289. data/tests/xenserver/models/compute/consoles_test.rb +19 -0
  290. data/tests/xenserver/models/compute/server_tests.rb +25 -18
  291. data/tests/xenserver/models/compute/servers_tests.rb +1 -0
  292. metadata +177 -14
@@ -22,7 +22,7 @@ module Fog
22
22
 
23
23
  params.merge!(
24
24
  :expects => 201,
25
- :idempotent => true,
25
+ :idempotent => !params[:request_block],
26
26
  :headers => headers,
27
27
  :method => 'PUT',
28
28
  :path => "#{Fog::Rackspace.escape(container)}/#{Fog::Rackspace.escape(object)}"
@@ -3,38 +3,11 @@ module Fog
3
3
  class Rackspace
4
4
  class Real
5
5
 
6
- # Create a new manifest object
6
+ # Create a new dynamic large object manifest
7
7
  #
8
- # Creates an object with a +X-Object-Manifest+ header that specifies the common prefix ("<container>/<prefix>")
9
- # for all uploaded segments. Retrieving the manifest object streams all segments matching this prefix.
10
- # Segments must sort in the order they should be concatenated. Note that any future objects stored in the container
11
- # along with the segments that match the prefix will be included when retrieving the manifest object.
12
- #
13
- # All segments must be stored in the same container, but may be in a different container than the manifest object.
14
- # The default +X-Object-Manifest+ header is set to "+container+/+object+", but may be overridden in +options+
15
- # to specify the prefix and/or the container where segments were stored.
16
- # If overridden, names should be CGI escaped (excluding spaces) if needed (see {Fog::Rackspace.escape}).
17
- #
18
- # @param container [String] Name for container where +object+ will be stored. Should be < 256 bytes and must not contain '/'
19
- # @param object [String] Name for manifest object.
20
- # @param options [Hash] Config headers for +object+.
21
- # @option options [String] 'X-Object-Manifest' ("container/object") "<container>/<prefix>" for segment objects.
22
- #
23
- # @raise [Fog::Storage::Rackspace::NotFound] HTTP 404
24
- # @raise [Fog::Storage::Rackspace::BadRequest] HTTP 400
25
- # @raise [Fog::Storage::Rackspace::InternalServerError] HTTP 500
26
- # @raise [Fog::Storage::Rackspace::ServiceError]
27
- #
28
- # @see http://docs.rackspace.com/files/api/v1/cf-devguide/content/Large_Object_Creation-d1e2019.html
8
+ # This is an alias for {#put_dynamic_obj_manifest} for backward compatibility.
29
9
  def put_object_manifest(container, object, options = {})
30
- path = "#{Fog::Rackspace.escape(container)}/#{Fog::Rackspace.escape(object)}"
31
- headers = {'X-Object-Manifest' => path}.merge(options)
32
- request(
33
- :expects => 201,
34
- :headers => headers,
35
- :method => 'PUT',
36
- :path => path
37
- )
10
+ put_dynamic_obj_manifest(container, object, options)
38
11
  end
39
12
 
40
13
  end
@@ -0,0 +1,60 @@
1
+ module Fog
2
+ module Storage
3
+ class Rackspace
4
+ class Real
5
+
6
+ # Create a new static large object manifest.
7
+ #
8
+ # A static large object is similar to a dynamic large object. Whereas a GET for a dynamic large object manifest
9
+ # will stream segments based on the manifest's +X-Object-Manifest+ object name prefix, a static large object
10
+ # manifest streams segments which are defined by the user within the manifest. Information about each segment is
11
+ # provided in +segments+ as an Array of Hash objects, ordered in the sequence which the segments should be streamed.
12
+ #
13
+ # When the SLO manifest is received, each segment's +etag+ and +size_bytes+ will be verified.
14
+ # The +etag+ for each segment is returned in the response to {#put_object}, but may also be calculated.
15
+ # e.g. +Digest::MD5.hexdigest(segment_data)+
16
+ #
17
+ # The maximum number of segments for a static large object is 1000, and all segments (except the last) must be
18
+ # at least 1 MiB in size. Unlike a dynamic large object, segments are not required to be in the same container.
19
+ #
20
+ # @example
21
+ # segments = [
22
+ # { :path => 'segments_container/first_segment',
23
+ # :etag => 'md5 for first_segment',
24
+ # :size_bytes => 'byte size of first_segment' },
25
+ # { :path => 'segments_container/second_segment',
26
+ # :etag => 'md5 for second_segment',
27
+ # :size_bytes => 'byte size of second_segment' }
28
+ # ]
29
+ # put_static_obj_manifest('my_container', 'my_large_object', segments)
30
+ #
31
+ # @param container [String] Name for container where +object+ will be stored.
32
+ # Should be < 256 bytes and must not contain '/'
33
+ # @param object [String] Name for manifest object.
34
+ # @param segments [Array<Hash>] Segment data for the object.
35
+ # @param options [Hash] Config headers for +object+.
36
+ #
37
+ # @raise [Fog::Storage::Rackspace::NotFound] HTTP 404
38
+ # @raise [Fog::Storage::Rackspace::BadRequest] HTTP 400
39
+ # @raise [Fog::Storage::Rackspace::InternalServerError] HTTP 500
40
+ # @raise [Fog::Storage::Rackspace::ServiceError]
41
+ # @raise [Excon::Errors::Unauthorized] HTTP 401
42
+ #
43
+ # @see http://docs.rackspace.com/files/api/v1/cf-devguide/content/Uploading_the_Manifext-d1e2227.html
44
+ def put_static_obj_manifest(container, object, segments, options = {})
45
+ request(
46
+ :expects => 201,
47
+ :method => 'PUT',
48
+ :headers => options,
49
+ :body => Fog::JSON.encode(segments),
50
+ :path => "#{Fog::Rackspace.escape(container)}/#{Fog::Rackspace.escape(object)}",
51
+ :query => { 'multipart-manifest' => 'put' }
52
+ )
53
+ end
54
+
55
+ end
56
+ end
57
+ end
58
+ end
59
+
60
+
@@ -25,6 +25,8 @@ module Fog
25
25
  request :copy_object
26
26
  request :delete_container
27
27
  request :delete_object
28
+ request :delete_static_large_object
29
+ request :delete_multiple_objects
28
30
  request :get_container
29
31
  request :get_containers
30
32
  request :get_object
@@ -35,6 +37,8 @@ module Fog
35
37
  request :put_container
36
38
  request :put_object
37
39
  request :put_object_manifest
40
+ request :put_dynamic_obj_manifest
41
+ request :put_static_obj_manifest
38
42
  request :post_set_meta_temp_url_key
39
43
 
40
44
  module Utils
@@ -54,7 +58,7 @@ module Fog
54
58
  end
55
59
  end
56
60
 
57
- end
61
+ end
58
62
 
59
63
  class Mock < Fog::Rackspace::Service
60
64
  include Utils
@@ -107,7 +111,7 @@ module Fog
107
111
  @rackspace_servicenet = options[:rackspace_servicenet]
108
112
  @rackspace_auth_token = options[:rackspace_auth_token]
109
113
  @rackspace_storage_url = options[:rackspace_storage_url]
110
- @rackspace_cdn_url = options[:rackspace_cdn_url]
114
+ @rackspace_cdn_url = options[:rackspace_cdn_url]
111
115
  @rackspace_region = options[:rackspace_region] || :dfw
112
116
  @rackspace_temp_url_key = options[:rackspace_temp_url_key]
113
117
  @rackspace_must_reauthenticate = false
@@ -117,8 +121,8 @@ module Fog
117
121
  @persistent = options[:persistent] || false
118
122
  Excon.defaults[:ssl_verify_peer] = false if service_net?
119
123
  @connection = Fog::Connection.new(endpoint_uri.to_s, @persistent, @connection_options)
120
- end
121
-
124
+ end
125
+
122
126
  # Return Account Details
123
127
  # @return [Fog::Storage::Rackspace::Account] account details object
124
128
  def account
@@ -141,19 +145,19 @@ module Fog
141
145
  def request(params, parse_json = true, &block)
142
146
  super(params, parse_json, &block)
143
147
  rescue Excon::Errors::NotFound => error
144
- raise NotFound.slurp(error, region)
148
+ raise NotFound.slurp(error, self)
145
149
  rescue Excon::Errors::BadRequest => error
146
- raise BadRequest.slurp error
150
+ raise BadRequest.slurp(error, self)
147
151
  rescue Excon::Errors::InternalServerError => error
148
- raise InternalServerError.slurp error
152
+ raise InternalServerError.slurp(error, self)
149
153
  rescue Excon::Errors::HTTPStatusError => error
150
- raise ServiceError.slurp error
154
+ raise ServiceError.slurp(error, self)
151
155
  end
152
156
 
153
157
  def service_net?
154
158
  @rackspace_servicenet == true
155
- end
156
-
159
+ end
160
+
157
161
  def authenticate
158
162
  if @rackspace_must_reauthenticate || @rackspace_auth_token.nil?
159
163
  options = {
@@ -161,18 +165,22 @@ module Fog
161
165
  :rackspace_username => @rackspace_username,
162
166
  :rackspace_auth_url => @rackspace_auth_url,
163
167
  :connection_options => @connection_options
164
- }
168
+ }
165
169
  super(options)
166
170
  else
167
171
  @auth_token = @rackspace_auth_token
168
172
  @uri = URI.parse(@rackspace_storage_url)
169
173
  end
170
174
  end
171
-
175
+
172
176
  def service_name
173
177
  :cloudFiles
174
178
  end
175
179
 
180
+ def request_id_header
181
+ "X-Trans-Id"
182
+ end
183
+
176
184
  def region
177
185
  @rackspace_region
178
186
  end
@@ -184,15 +192,15 @@ module Fog
184
192
  @uri.host = "snet-#{@uri.host}" if service_net?
185
193
  @uri
186
194
  end
187
-
188
- private
189
-
195
+
196
+ private
197
+
190
198
  def authenticate_v1(options)
191
199
  credentials = Fog::Rackspace.authenticate(options, @connection_options)
192
200
  endpoint_uri credentials['X-Storage-Url']
193
201
  @auth_token = credentials['X-Auth-Token']
194
202
  end
195
-
203
+
196
204
  end
197
205
  end
198
206
  end
@@ -64,7 +64,8 @@ module Fog
64
64
  :aws_secret_access_key => @riakcs_secret_access_key,
65
65
  :host => @host,
66
66
  :port => @port,
67
- :scheme => @scheme
67
+ :scheme => @scheme,
68
+ :connection_options => @connection_options
68
69
  )
69
70
  end
70
71
 
@@ -56,7 +56,8 @@ module Fog
56
56
  :aws_secret_access_key => @riakcs_secret_access_key,
57
57
  :host => @host,
58
58
  :port => @port,
59
- :scheme => @scheme
59
+ :scheme => @scheme,
60
+ :connection_options => @connection_options
60
61
  )
61
62
  end
62
63
  end
@@ -231,7 +231,7 @@ module Fog
231
231
  # header from that call.
232
232
  def do_login
233
233
  @login_results = login
234
- @cookie = @login_results.headers['Set-Cookie']
234
+ @cookie = @login_results.headers['Set-Cookie'] || @login_results.headers['set-cookie']
235
235
  end
236
236
 
237
237
  def ensure_unparsed(uri)
@@ -18,8 +18,8 @@ module Fog
18
18
  def generate_configure_vm_request(vm_data)
19
19
  xmlns = 'http://schemas.dmtf.org/ovf/envelope/1'
20
20
  xmlns_vcloud = 'http://www.vmware.com/vcloud/v1'
21
- xmlns_rasd = 'http://schemas.dmtf.org/wbem/wscim/1/cimschema/2/CIM_ResourceAllocationSettingData'
22
- xmlns_vssd = 'http://schemas.dmtf.org/wbem/wscim/1/cimschema/2/CIM_VirtualSystemSettingData'
21
+ xmlns_rasd = 'http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData'
22
+ xmlns_vssd = 'http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData'
23
23
 
24
24
  builder = Builder::XmlMarkup.new(:target=>STDOUT, :indent=>2) # TODO - remove params
25
25
  builder.VirtualHardwareSection(
@@ -1,3 +1,3 @@
1
1
  module Fog
2
- VERSION = '1.12.1'
2
+ VERSION = '1.14.0'
3
3
  end
@@ -178,12 +178,136 @@ module Fog
178
178
  obj.to_s.match(/\("([^"]+)"\)/)[1]
179
179
  end
180
180
 
181
+ def is_uuid?(id)
182
+ !(id =~ /[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}/).nil?
183
+ end
184
+
181
185
  end
182
186
 
183
187
  class Mock
184
188
 
185
189
  include Shared
186
190
 
191
+ def self.data
192
+ @data ||= Hash.new do |hash, key|
193
+ hash[key] = {
194
+ :servers => {
195
+ "5032c8a5-9c5e-ba7a-3804-832a03e16381" => {
196
+ "resource_pool" => "Resources",
197
+ "memory_mb" => 2196,
198
+ "mac_addresses" => { "Network adapter 1" => "00:50:56:a9:00:28" },
199
+ "power_state" => "poweredOn",
200
+ "cpus" => 1,
201
+ "hostname" => "dhcp75-197.virt.bos.redhat.com",
202
+ "mo_ref" => "vm-562",
203
+ "connection_state" => "connected",
204
+ "overall_status" => "green",
205
+ "datacenter" => "Solutions",
206
+ "volumes" =>
207
+ [{
208
+ "id" => "6000C29c-a47d-4cd9-5249-c371de775f06",
209
+ "datastore" => "Storage1",
210
+ "mode" => "persistent",
211
+ "size" => 8388608,
212
+ "thin" => true,
213
+ "name" => "Hard disk 1",
214
+ "filename" => "[Storage1] rhel6-mfojtik/rhel6-mfojtik.vmdk",
215
+ "size_gb" => 8
216
+ }],
217
+ "interfaces" =>
218
+ [{"mac" => "00:50:56:a9:00:28",
219
+ "network" => "VM Network",
220
+ "name" => "Network adapter 1",
221
+ "status" => "ok",
222
+ "summary" => "VM Network",
223
+ }],
224
+ "hypervisor" => "gunab.puppetlabs.lan",
225
+ "guest_id" => "rhel6_64Guest",
226
+ "tools_state" => "toolsOk",
227
+ "cluster" => "Solutionscluster",
228
+ "name" => "rhel64",
229
+ "operatingsystem" => "Red Hat Enterprise Linux 6 (64-bit)",
230
+ "path" => "/Datacenters/Solutions/vm",
231
+ "uuid" => "4229f0e9-bfdc-d9a7-7bac-12070772e6dc",
232
+ "instance_uuid" => "5032c8a5-9c5e-ba7a-3804-832a03e16381",
233
+ "id" => "5032c8a5-9c5e-ba7a-3804-832a03e16381",
234
+ "tools_version" => "guestToolsUnmanaged",
235
+ "ipaddress" => "192.168.100.184",
236
+ "template" => false
237
+ },
238
+ "502916a3-b42e-17c7-43ce-b3206e9524dc" => {
239
+ "resource_pool" => "Resources",
240
+ "memory_mb" => 512,
241
+ "power_state" => "poweredOn",
242
+ "mac_addresses" => { "Network adapter 1" => "00:50:56:a9:00:00" },
243
+ "hostname" => nil,
244
+ "cpus" => 1,
245
+ "connection_state" => "connected",
246
+ "mo_ref" => "vm-621",
247
+ "overall_status" => "green",
248
+ "datacenter" => "Solutions",
249
+ "volumes" =>
250
+ [{"thin" => false,
251
+ "size_gb" => 10,
252
+ "datastore" => "datastore1",
253
+ "filename" => "[datastore1] i-1342439683/i-1342439683.vmdk",
254
+ "size" => 10485762,
255
+ "name" => "Hard disk 1",
256
+ "mode" => "persistent",
257
+ "id" => "6000C29b-f364-d073-8316-8e98ac0a0eae" }],
258
+ "interfaces" =>
259
+ [{ "summary" => "VM Network",
260
+ "mac" => "00:50:56:a9:00:00",
261
+ "status" => "ok",
262
+ "network" => "VM Network",
263
+ "name" => "Network adapter 1" }],
264
+ "hypervisor" => "gunab.puppetlabs.lan",
265
+ "guest_id" => nil,
266
+ "cluster" => "Solutionscluster",
267
+ "tools_state" => "toolsNotInstalled",
268
+ "name" => "i-1342439683",
269
+ "operatingsystem" => nil,
270
+ "path" => "/",
271
+ "tools_version" => "guestToolsNotInstalled",
272
+ "uuid" => "4229e0de-30cb-ceb2-21f9-4d8d8beabb52",
273
+ "instance_uuid" => "502916a3-b42e-17c7-43ce-b3206e9524dc",
274
+ "id" => "502916a3-b42e-17c7-43ce-b3206e9524dc",
275
+ "ipaddress" => nil,
276
+ "template" => false
277
+ },
278
+ "5029c440-85ee-c2a1-e9dd-b63e39364603" => {
279
+ "resource_pool" => "Resources",
280
+ "memory_mb" => 2196,
281
+ "power_state" => "poweredOn",
282
+ "mac_addresses" => { "Network adapter 1" => "00:50:56:b2:00:af" },
283
+ "hostname" => "centos56gm.localdomain",
284
+ "cpus" => 1,
285
+ "connection_state" => "connected",
286
+ "mo_ref" => "vm-715",
287
+ "overall_status" => "green",
288
+ "datacenter" => "Solutions",
289
+ "hypervisor" => "gunab.puppetlabs.lan",
290
+ "guest_id" => "rhel6_64Guest",
291
+ "cluster" => "Solutionscluster",
292
+ "tools_state" => "toolsOk",
293
+ "name" => "jefftest",
294
+ "operatingsystem" => "Red Hat Enterprise Linux 6 (64-bit)",
295
+ "path" => "/",
296
+ "tools_version" => "guestToolsUnmanaged",
297
+ "ipaddress" => "192.168.100.187",
298
+ "uuid" => "42329da7-e8ab-29ec-1892-d6a4a964912a",
299
+ "instance_uuid" => "5029c440-85ee-c2a1-e9dd-b63e39364603",
300
+ "id" => "5029c440-85ee-c2a1-e9dd-b63e39364603",
301
+ "template" => false
302
+ }
303
+ },
304
+ :datacenters => {
305
+ "Solutions" => {:name => "Solutions", :status => "grey"}
306
+ }
307
+ }
308
+ end
309
+ end
310
+
187
311
  def initialize(options={})
188
312
  require 'rbvmomi'
189
313
  @vsphere_username = options[:vsphere_username]
@@ -194,6 +318,13 @@ module Fog
194
318
  @vsphere_rev = '4.0'
195
319
  end
196
320
 
321
+ def data
322
+ self.class.data[@vsphere_username]
323
+ end
324
+
325
+ def reset_data
326
+ self.class.data.delete(@vsphere_username)
327
+ end
197
328
  end
198
329
 
199
330
  class Real
@@ -98,7 +98,11 @@ module Fog
98
98
 
99
99
  def destroy(options = {})
100
100
  requires :instance_uuid
101
- stop if ready? # need to turn it off before destroying
101
+ if ready?
102
+ # need to turn it off before destroying
103
+ stop
104
+ wait_for { !ready? }
105
+ end
102
106
  service.vm_destroy('instance_uuid' => instance_uuid)
103
107
  end
104
108
 
@@ -21,7 +21,9 @@ module Fog
21
21
 
22
22
  class Mock
23
23
  def get_datacenter name
24
- {:name => "Solutions", :status => "grey"}
24
+ dc = self.data[:datacenters][name]
25
+ raise(Fog::Compute::Vsphere::NotFound) unless dc
26
+ dc
25
27
  end
26
28
  end
27
29
  end