fog-google 0.0.2

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 (401) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +15 -0
  3. data/.rubocop.yml +20 -0
  4. data/.ruby-gemset +1 -0
  5. data/.ruby-version +1 -0
  6. data/.travis.yml +17 -0
  7. data/CONTRIBUTING.md +18 -0
  8. data/CONTRIBUTORS.md +41 -0
  9. data/Gemfile +4 -0
  10. data/LICENSE.md +20 -0
  11. data/README.md +55 -0
  12. data/Rakefile +34 -0
  13. data/examples/backend_services.rb +22 -0
  14. data/examples/bootstrap.rb +9 -0
  15. data/examples/create.rb +49 -0
  16. data/examples/dns/project.rb +8 -0
  17. data/examples/dns/zones.rb +43 -0
  18. data/examples/eric-fail.rb +36 -0
  19. data/examples/get_list_images.rb +26 -0
  20. data/examples/get_list_snapshots.rb +18 -0
  21. data/examples/image_all.rb +6 -0
  22. data/examples/image_create.rb +17 -0
  23. data/examples/l7_load_balance.rb +73 -0
  24. data/examples/launch_micro_instance.rb +29 -0
  25. data/examples/load-balance.rb +98 -0
  26. data/examples/metadata.rb +30 -0
  27. data/examples/monitoring/metric_descriptors.rb +11 -0
  28. data/examples/monitoring/timeseries_collection.rb +15 -0
  29. data/examples/monitoring/timeseries_descriptors.rb +15 -0
  30. data/examples/network.rb +38 -0
  31. data/examples/precreated_client.rb +14 -0
  32. data/examples/sql/flags.rb +7 -0
  33. data/examples/sql/instances.rb +38 -0
  34. data/examples/sql/operations.rb +20 -0
  35. data/examples/sql/ssl_certs.rb +28 -0
  36. data/examples/sql/tiers.rb +7 -0
  37. data/fog-google.gemspec +37 -0
  38. data/gemfiles/Gemfile.1.9.2+ +6 -0
  39. data/gemfiles/Gemfile.1.9.2- +9 -0
  40. data/lib/fog/bin/google.rb +88 -0
  41. data/lib/fog/google.rb +226 -0
  42. data/lib/fog/google/compute.rb +1068 -0
  43. data/lib/fog/google/dns.rb +96 -0
  44. data/lib/fog/google/models/compute/address.rb +94 -0
  45. data/lib/fog/google/models/compute/addresses.rb +40 -0
  46. data/lib/fog/google/models/compute/backend_service.rb +92 -0
  47. data/lib/fog/google/models/compute/backend_services.rb +22 -0
  48. data/lib/fog/google/models/compute/disk.rb +120 -0
  49. data/lib/fog/google/models/compute/disk_type.rb +28 -0
  50. data/lib/fog/google/models/compute/disk_types.rb +40 -0
  51. data/lib/fog/google/models/compute/disks.rb +41 -0
  52. data/lib/fog/google/models/compute/firewall.rb +46 -0
  53. data/lib/fog/google/models/compute/firewalls.rb +25 -0
  54. data/lib/fog/google/models/compute/flavor.rb +33 -0
  55. data/lib/fog/google/models/compute/flavors.rb +31 -0
  56. data/lib/fog/google/models/compute/forwarding_rule.rb +86 -0
  57. data/lib/fog/google/models/compute/forwarding_rules.rb +41 -0
  58. data/lib/fog/google/models/compute/global_forwarding_rule.rb +86 -0
  59. data/lib/fog/google/models/compute/global_forwarding_rules.rb +23 -0
  60. data/lib/fog/google/models/compute/http_health_check.rb +84 -0
  61. data/lib/fog/google/models/compute/http_health_checks.rb +26 -0
  62. data/lib/fog/google/models/compute/image.rb +90 -0
  63. data/lib/fog/google/models/compute/images.rb +73 -0
  64. data/lib/fog/google/models/compute/network.rb +43 -0
  65. data/lib/fog/google/models/compute/networks.rb +25 -0
  66. data/lib/fog/google/models/compute/operation.rb +75 -0
  67. data/lib/fog/google/models/compute/operations.rb +37 -0
  68. data/lib/fog/google/models/compute/project.rb +30 -0
  69. data/lib/fog/google/models/compute/projects.rb +20 -0
  70. data/lib/fog/google/models/compute/region.rb +32 -0
  71. data/lib/fog/google/models/compute/regions.rb +25 -0
  72. data/lib/fog/google/models/compute/resource_view.rb +116 -0
  73. data/lib/fog/google/models/compute/resource_views.rb +57 -0
  74. data/lib/fog/google/models/compute/route.rb +50 -0
  75. data/lib/fog/google/models/compute/routes.rb +25 -0
  76. data/lib/fog/google/models/compute/server.rb +258 -0
  77. data/lib/fog/google/models/compute/servers.rb +80 -0
  78. data/lib/fog/google/models/compute/snapshot.rb +48 -0
  79. data/lib/fog/google/models/compute/snapshots.rb +26 -0
  80. data/lib/fog/google/models/compute/target_http_proxies.rb +22 -0
  81. data/lib/fog/google/models/compute/target_http_proxy.rb +75 -0
  82. data/lib/fog/google/models/compute/target_instance.rb +74 -0
  83. data/lib/fog/google/models/compute/target_instances.rb +28 -0
  84. data/lib/fog/google/models/compute/target_pool.rb +113 -0
  85. data/lib/fog/google/models/compute/target_pools.rb +41 -0
  86. data/lib/fog/google/models/compute/url_map.rb +95 -0
  87. data/lib/fog/google/models/compute/url_maps.rb +22 -0
  88. data/lib/fog/google/models/compute/zone.rb +23 -0
  89. data/lib/fog/google/models/compute/zones.rb +24 -0
  90. data/lib/fog/google/models/dns/change.rb +40 -0
  91. data/lib/fog/google/models/dns/changes.rb +52 -0
  92. data/lib/fog/google/models/dns/project.rb +75 -0
  93. data/lib/fog/google/models/dns/projects.rb +25 -0
  94. data/lib/fog/google/models/dns/record.rb +112 -0
  95. data/lib/fog/google/models/dns/records.rb +52 -0
  96. data/lib/fog/google/models/dns/zone.rb +74 -0
  97. data/lib/fog/google/models/dns/zones.rb +34 -0
  98. data/lib/fog/google/models/monitoring/metric_descriptor.rb +20 -0
  99. data/lib/fog/google/models/monitoring/metric_descriptors.rb +28 -0
  100. data/lib/fog/google/models/monitoring/timeseries.rb +17 -0
  101. data/lib/fog/google/models/monitoring/timeseries_collection.rb +31 -0
  102. data/lib/fog/google/models/monitoring/timeseries_descriptor.rb +20 -0
  103. data/lib/fog/google/models/monitoring/timeseries_descriptors.rb +31 -0
  104. data/lib/fog/google/models/sql/backup_run.rb +34 -0
  105. data/lib/fog/google/models/sql/backup_runs.rb +38 -0
  106. data/lib/fog/google/models/sql/flag.rb +22 -0
  107. data/lib/fog/google/models/sql/flags.rb +21 -0
  108. data/lib/fog/google/models/sql/instance.rb +353 -0
  109. data/lib/fog/google/models/sql/instances.rb +39 -0
  110. data/lib/fog/google/models/sql/operation.rb +61 -0
  111. data/lib/fog/google/models/sql/operations.rb +49 -0
  112. data/lib/fog/google/models/sql/ssl_cert.rb +73 -0
  113. data/lib/fog/google/models/sql/ssl_certs.rb +49 -0
  114. data/lib/fog/google/models/sql/tier.rb +20 -0
  115. data/lib/fog/google/models/sql/tiers.rb +21 -0
  116. data/lib/fog/google/models/storage/directories.rb +39 -0
  117. data/lib/fog/google/models/storage/directory.rb +74 -0
  118. data/lib/fog/google/models/storage/file.rb +144 -0
  119. data/lib/fog/google/models/storage/files.rb +104 -0
  120. data/lib/fog/google/monitoring.rb +87 -0
  121. data/lib/fog/google/parsers/storage/access_control_list.rb +44 -0
  122. data/lib/fog/google/parsers/storage/copy_object.rb +18 -0
  123. data/lib/fog/google/parsers/storage/get_bucket.rb +58 -0
  124. data/lib/fog/google/parsers/storage/get_bucket_logging.rb +36 -0
  125. data/lib/fog/google/parsers/storage/get_bucket_object_versions.rb +84 -0
  126. data/lib/fog/google/parsers/storage/get_bucket_versioning.rb +20 -0
  127. data/lib/fog/google/parsers/storage/get_request_payment.rb +16 -0
  128. data/lib/fog/google/parsers/storage/get_service.rb +28 -0
  129. data/lib/fog/google/requests/compute/add_backend_service_backends.rb +29 -0
  130. data/lib/fog/google/requests/compute/add_region_view_resources.rb +27 -0
  131. data/lib/fog/google/requests/compute/add_server_access_config.rb +32 -0
  132. data/lib/fog/google/requests/compute/add_target_pool_health_checks.rb +27 -0
  133. data/lib/fog/google/requests/compute/add_target_pool_instances.rb +27 -0
  134. data/lib/fog/google/requests/compute/add_url_map_host_rules.rb +25 -0
  135. data/lib/fog/google/requests/compute/add_url_map_path_matchers.rb +29 -0
  136. data/lib/fog/google/requests/compute/add_zone_view_resources.rb +27 -0
  137. data/lib/fog/google/requests/compute/attach_disk.rb +34 -0
  138. data/lib/fog/google/requests/compute/delete_address.rb +24 -0
  139. data/lib/fog/google/requests/compute/delete_backend_service.rb +43 -0
  140. data/lib/fog/google/requests/compute/delete_disk.rb +48 -0
  141. data/lib/fog/google/requests/compute/delete_firewall.rb +23 -0
  142. data/lib/fog/google/requests/compute/delete_forwarding_rule.rb +49 -0
  143. data/lib/fog/google/requests/compute/delete_global_forwarding_rule.rb +48 -0
  144. data/lib/fog/google/requests/compute/delete_global_operation.rb +25 -0
  145. data/lib/fog/google/requests/compute/delete_http_health_check.rb +41 -0
  146. data/lib/fog/google/requests/compute/delete_image.rb +42 -0
  147. data/lib/fog/google/requests/compute/delete_network.rb +23 -0
  148. data/lib/fog/google/requests/compute/delete_region_operation.rb +29 -0
  149. data/lib/fog/google/requests/compute/delete_region_view.rb +24 -0
  150. data/lib/fog/google/requests/compute/delete_route.rb +23 -0
  151. data/lib/fog/google/requests/compute/delete_server.rb +69 -0
  152. data/lib/fog/google/requests/compute/delete_server_access_config.rb +26 -0
  153. data/lib/fog/google/requests/compute/delete_snapshot.rb +23 -0
  154. data/lib/fog/google/requests/compute/delete_target_http_proxy.rb +43 -0
  155. data/lib/fog/google/requests/compute/delete_target_instance.rb +48 -0
  156. data/lib/fog/google/requests/compute/delete_target_pool.rb +49 -0
  157. data/lib/fog/google/requests/compute/delete_url_map.rb +43 -0
  158. data/lib/fog/google/requests/compute/delete_zone_operation.rb +29 -0
  159. data/lib/fog/google/requests/compute/delete_zone_view.rb +24 -0
  160. data/lib/fog/google/requests/compute/detach_disk.rb +25 -0
  161. data/lib/fog/google/requests/compute/get_address.rb +24 -0
  162. data/lib/fog/google/requests/compute/get_backend_service.rb +26 -0
  163. data/lib/fog/google/requests/compute/get_backend_service_health.rb +27 -0
  164. data/lib/fog/google/requests/compute/get_backend_services.rb +23 -0
  165. data/lib/fog/google/requests/compute/get_disk.rb +52 -0
  166. data/lib/fog/google/requests/compute/get_disk_type.rb +42 -0
  167. data/lib/fog/google/requests/compute/get_firewall.rb +23 -0
  168. data/lib/fog/google/requests/compute/get_forwarding_rule.rb +46 -0
  169. data/lib/fog/google/requests/compute/get_global_forwarding_rule.rb +32 -0
  170. data/lib/fog/google/requests/compute/get_global_operation.rb +50 -0
  171. data/lib/fog/google/requests/compute/get_http_health_check.rb +39 -0
  172. data/lib/fog/google/requests/compute/get_image.rb +36 -0
  173. data/lib/fog/google/requests/compute/get_machine_type.rb +43 -0
  174. data/lib/fog/google/requests/compute/get_network.rb +23 -0
  175. data/lib/fog/google/requests/compute/get_project.rb +22 -0
  176. data/lib/fog/google/requests/compute/get_region.rb +37 -0
  177. data/lib/fog/google/requests/compute/get_region_operation.rb +55 -0
  178. data/lib/fog/google/requests/compute/get_region_view.rb +24 -0
  179. data/lib/fog/google/requests/compute/get_route.rb +23 -0
  180. data/lib/fog/google/requests/compute/get_server.rb +75 -0
  181. data/lib/fog/google/requests/compute/get_server_serial_port_output.rb +24 -0
  182. data/lib/fog/google/requests/compute/get_snapshot.rb +27 -0
  183. data/lib/fog/google/requests/compute/get_target_http_proxy.rb +27 -0
  184. data/lib/fog/google/requests/compute/get_target_instance.rb +32 -0
  185. data/lib/fog/google/requests/compute/get_target_pool.rb +40 -0
  186. data/lib/fog/google/requests/compute/get_target_pool_health.rb +29 -0
  187. data/lib/fog/google/requests/compute/get_url_map.rb +27 -0
  188. data/lib/fog/google/requests/compute/get_zone.rb +36 -0
  189. data/lib/fog/google/requests/compute/get_zone_operation.rb +55 -0
  190. data/lib/fog/google/requests/compute/get_zone_view.rb +24 -0
  191. data/lib/fog/google/requests/compute/insert_address.rb +25 -0
  192. data/lib/fog/google/requests/compute/insert_backend_service.rb +63 -0
  193. data/lib/fog/google/requests/compute/insert_disk.rb +113 -0
  194. data/lib/fog/google/requests/compute/insert_firewall.rb +43 -0
  195. data/lib/fog/google/requests/compute/insert_forwarding_rule.rb +60 -0
  196. data/lib/fog/google/requests/compute/insert_global_forwarding_rule.rb +56 -0
  197. data/lib/fog/google/requests/compute/insert_http_health_check.rb +59 -0
  198. data/lib/fog/google/requests/compute/insert_image.rb +64 -0
  199. data/lib/fog/google/requests/compute/insert_network.rb +29 -0
  200. data/lib/fog/google/requests/compute/insert_region_view.rb +25 -0
  201. data/lib/fog/google/requests/compute/insert_route.rb +35 -0
  202. data/lib/fog/google/requests/compute/insert_server.rb +191 -0
  203. data/lib/fog/google/requests/compute/insert_snapshot.rb +40 -0
  204. data/lib/fog/google/requests/compute/insert_target_http_proxy.rb +52 -0
  205. data/lib/fog/google/requests/compute/insert_target_instance.rb +55 -0
  206. data/lib/fog/google/requests/compute/insert_target_pool.rb +58 -0
  207. data/lib/fog/google/requests/compute/insert_url_map.rb +55 -0
  208. data/lib/fog/google/requests/compute/insert_zone_view.rb +27 -0
  209. data/lib/fog/google/requests/compute/list_addresses.rb +23 -0
  210. data/lib/fog/google/requests/compute/list_aggregated_addresses.rb +23 -0
  211. data/lib/fog/google/requests/compute/list_aggregated_disk_types.rb +40 -0
  212. data/lib/fog/google/requests/compute/list_aggregated_disks.rb +40 -0
  213. data/lib/fog/google/requests/compute/list_aggregated_machine_types.rb +22 -0
  214. data/lib/fog/google/requests/compute/list_aggregated_servers.rb +40 -0
  215. data/lib/fog/google/requests/compute/list_backend_services.rb +29 -0
  216. data/lib/fog/google/requests/compute/list_disk_types.rb +46 -0
  217. data/lib/fog/google/requests/compute/list_disks.rb +29 -0
  218. data/lib/fog/google/requests/compute/list_firewalls.rb +22 -0
  219. data/lib/fog/google/requests/compute/list_forwarding_rules.rb +29 -0
  220. data/lib/fog/google/requests/compute/list_global_forwarding_rules.rb +30 -0
  221. data/lib/fog/google/requests/compute/list_global_operations.rb +24 -0
  222. data/lib/fog/google/requests/compute/list_http_health_checks.rb +29 -0
  223. data/lib/fog/google/requests/compute/list_images.rb +29 -0
  224. data/lib/fog/google/requests/compute/list_machine_types.rb +30 -0
  225. data/lib/fog/google/requests/compute/list_networks.rb +22 -0
  226. data/lib/fog/google/requests/compute/list_region_operations.rb +25 -0
  227. data/lib/fog/google/requests/compute/list_region_view_resources.rb +25 -0
  228. data/lib/fog/google/requests/compute/list_region_views.rb +23 -0
  229. data/lib/fog/google/requests/compute/list_regions.rb +85 -0
  230. data/lib/fog/google/requests/compute/list_routes.rb +22 -0
  231. data/lib/fog/google/requests/compute/list_servers.rb +31 -0
  232. data/lib/fog/google/requests/compute/list_snapshots.rb +23 -0
  233. data/lib/fog/google/requests/compute/list_target_http_proxies.rb +30 -0
  234. data/lib/fog/google/requests/compute/list_target_instances.rb +30 -0
  235. data/lib/fog/google/requests/compute/list_target_pools.rb +29 -0
  236. data/lib/fog/google/requests/compute/list_url_maps.rb +29 -0
  237. data/lib/fog/google/requests/compute/list_zone_operations.rb +25 -0
  238. data/lib/fog/google/requests/compute/list_zone_view_resources.rb +25 -0
  239. data/lib/fog/google/requests/compute/list_zone_views.rb +23 -0
  240. data/lib/fog/google/requests/compute/list_zones.rb +28 -0
  241. data/lib/fog/google/requests/compute/remove_target_pool_health_checks.rb +27 -0
  242. data/lib/fog/google/requests/compute/remove_target_pool_instance.rb +27 -0
  243. data/lib/fog/google/requests/compute/remove_target_pool_instances.rb +27 -0
  244. data/lib/fog/google/requests/compute/reset_server.rb +24 -0
  245. data/lib/fog/google/requests/compute/set_common_instance_metadata.rb +26 -0
  246. data/lib/fog/google/requests/compute/set_forwarding_rule_target.rb +27 -0
  247. data/lib/fog/google/requests/compute/set_global_forwarding_rule_target.rb +27 -0
  248. data/lib/fog/google/requests/compute/set_metadata.rb +39 -0
  249. data/lib/fog/google/requests/compute/set_server_disk_auto_delete.rb +26 -0
  250. data/lib/fog/google/requests/compute/set_server_scheduling.rb +29 -0
  251. data/lib/fog/google/requests/compute/set_tags.rb +24 -0
  252. data/lib/fog/google/requests/compute/set_target_http_proxy_url_map.rb +27 -0
  253. data/lib/fog/google/requests/compute/start_server.rb +24 -0
  254. data/lib/fog/google/requests/compute/stop_server.rb +24 -0
  255. data/lib/fog/google/requests/compute/update_url_map.rb +39 -0
  256. data/lib/fog/google/requests/compute/validate_url_map.rb +24 -0
  257. data/lib/fog/google/requests/dns/create_change.rb +64 -0
  258. data/lib/fog/google/requests/dns/create_managed_zone.rb +82 -0
  259. data/lib/fog/google/requests/dns/delete_managed_zone.rb +35 -0
  260. data/lib/fog/google/requests/dns/get_change.rb +42 -0
  261. data/lib/fog/google/requests/dns/get_managed_zone.rb +37 -0
  262. data/lib/fog/google/requests/dns/get_project.rb +42 -0
  263. data/lib/fog/google/requests/dns/list_changes.rb +41 -0
  264. data/lib/fog/google/requests/dns/list_managed_zones.rb +31 -0
  265. data/lib/fog/google/requests/dns/list_resource_record_sets.rb +50 -0
  266. data/lib/fog/google/requests/monitoring/list_metric_descriptors.rb +191 -0
  267. data/lib/fog/google/requests/monitoring/list_timeseries.rb +68 -0
  268. data/lib/fog/google/requests/monitoring/list_timeseries_descriptors.rb +87 -0
  269. data/lib/fog/google/requests/sql/clone_instance.rb +84 -0
  270. data/lib/fog/google/requests/sql/delete_instance.rb +67 -0
  271. data/lib/fog/google/requests/sql/delete_ssl_cert.rb +68 -0
  272. data/lib/fog/google/requests/sql/export_instance.rb +56 -0
  273. data/lib/fog/google/requests/sql/get_backup_run.rb +30 -0
  274. data/lib/fog/google/requests/sql/get_instance.rb +48 -0
  275. data/lib/fog/google/requests/sql/get_operation.rb +66 -0
  276. data/lib/fog/google/requests/sql/get_ssl_cert.rb +66 -0
  277. data/lib/fog/google/requests/sql/import_instance.rb +55 -0
  278. data/lib/fog/google/requests/sql/insert_instance.rb +165 -0
  279. data/lib/fog/google/requests/sql/insert_ssl_cert.rb +80 -0
  280. data/lib/fog/google/requests/sql/list_backup_runs.rb +30 -0
  281. data/lib/fog/google/requests/sql/list_flags.rb +143 -0
  282. data/lib/fog/google/requests/sql/list_instances.rb +32 -0
  283. data/lib/fog/google/requests/sql/list_operations.rb +52 -0
  284. data/lib/fog/google/requests/sql/list_ssl_certs.rb +51 -0
  285. data/lib/fog/google/requests/sql/list_tiers.rb +82 -0
  286. data/lib/fog/google/requests/sql/reset_instance_ssl_config.rb +49 -0
  287. data/lib/fog/google/requests/sql/restart_instance.rb +47 -0
  288. data/lib/fog/google/requests/sql/restore_instance_backup.rb +30 -0
  289. data/lib/fog/google/requests/sql/set_instance_root_password.rb +54 -0
  290. data/lib/fog/google/requests/sql/update_instance.rb +132 -0
  291. data/lib/fog/google/requests/storage/copy_object.rb +68 -0
  292. data/lib/fog/google/requests/storage/delete_bucket.rb +41 -0
  293. data/lib/fog/google/requests/storage/delete_object.rb +46 -0
  294. data/lib/fog/google/requests/storage/get_bucket.rb +106 -0
  295. data/lib/fog/google/requests/storage/get_bucket_acl.rb +59 -0
  296. data/lib/fog/google/requests/storage/get_object.rb +108 -0
  297. data/lib/fog/google/requests/storage/get_object_acl.rb +70 -0
  298. data/lib/fog/google/requests/storage/get_object_http_url.rb +44 -0
  299. data/lib/fog/google/requests/storage/get_object_https_url.rb +44 -0
  300. data/lib/fog/google/requests/storage/get_object_torrent.rb +45 -0
  301. data/lib/fog/google/requests/storage/get_object_url.rb +33 -0
  302. data/lib/fog/google/requests/storage/get_service.rb +48 -0
  303. data/lib/fog/google/requests/storage/head_object.rb +60 -0
  304. data/lib/fog/google/requests/storage/put_bucket.rb +71 -0
  305. data/lib/fog/google/requests/storage/put_bucket_acl.rb +58 -0
  306. data/lib/fog/google/requests/storage/put_object.rb +89 -0
  307. data/lib/fog/google/requests/storage/put_object_acl.rb +51 -0
  308. data/lib/fog/google/requests/storage/put_object_url.rb +50 -0
  309. data/lib/fog/google/sql.rb +130 -0
  310. data/lib/fog/google/storage.rb +298 -0
  311. data/lib/fog/google/version.rb +5 -0
  312. data/spec/minitest_helper.rb +31 -0
  313. data/tests/credentials_tests.rb +73 -0
  314. data/tests/helper.rb +126 -0
  315. data/tests/helpers/collection_helper.rb +97 -0
  316. data/tests/helpers/compute/flavors_helper.rb +32 -0
  317. data/tests/helpers/compute/server_helper.rb +25 -0
  318. data/tests/helpers/compute/servers_helper.rb +10 -0
  319. data/tests/helpers/formats_helper.rb +98 -0
  320. data/tests/helpers/formats_helper_tests.rb +110 -0
  321. data/tests/helpers/mock_helper.rb +18 -0
  322. data/tests/helpers/model_helper.rb +31 -0
  323. data/tests/helpers/responds_to_helper.rb +11 -0
  324. data/tests/helpers/schema_validator_tests.rb +107 -0
  325. data/tests/helpers/succeeds_helper.rb +9 -0
  326. data/tests/lorem.txt +1 -0
  327. data/tests/models/compute/backend_service_tests.rb +6 -0
  328. data/tests/models/compute/backend_services_tests.rb +8 -0
  329. data/tests/models/compute/disk_tests.rb +9 -0
  330. data/tests/models/compute/disk_types_tests.rb +22 -0
  331. data/tests/models/compute/disks_tests.rb +9 -0
  332. data/tests/models/compute/forwarding_rule_tests.rb +8 -0
  333. data/tests/models/compute/forwarding_rules_tests.rb +8 -0
  334. data/tests/models/compute/global_forwarding_rule_tests.rb +7 -0
  335. data/tests/models/compute/global_forwarding_rules_tests.rb +7 -0
  336. data/tests/models/compute/http_health_check_tests.rb +5 -0
  337. data/tests/models/compute/http_health_checks_tests.rb +5 -0
  338. data/tests/models/compute/image_tests.rb +6 -0
  339. data/tests/models/compute/images_tests.rb +6 -0
  340. data/tests/models/compute/region_tests.rb +10 -0
  341. data/tests/models/compute/regions_tests.rb +19 -0
  342. data/tests/models/compute/server_tests.rb +37 -0
  343. data/tests/models/compute/servers_tests.rb +14 -0
  344. data/tests/models/compute/target_http_proxies_tests.rb +7 -0
  345. data/tests/models/compute/target_http_proxy_test.rb +6 -0
  346. data/tests/models/compute/target_instance_tests.rb +7 -0
  347. data/tests/models/compute/target_instances_tests.rb +7 -0
  348. data/tests/models/compute/target_pool_tests.rb +12 -0
  349. data/tests/models/compute/target_pools_tests.rb +11 -0
  350. data/tests/models/compute/url_map_tests.rb +6 -0
  351. data/tests/models/compute/url_maps_tests.rb +7 -0
  352. data/tests/models/dns/change_tests.rb +28 -0
  353. data/tests/models/dns/changes_tests.rb +36 -0
  354. data/tests/models/dns/projects_tests.rb +12 -0
  355. data/tests/models/dns/record_tests.rb +42 -0
  356. data/tests/models/dns/records_tests.rb +36 -0
  357. data/tests/models/dns/zone_tests.rb +28 -0
  358. data/tests/models/dns/zones_tests.rb +14 -0
  359. data/tests/models/monitoring/metric_descriptors_tests.rb +12 -0
  360. data/tests/models/monitoring/timeseries_collection_tests.rb +12 -0
  361. data/tests/models/monitoring/timeseries_descriptors_tests.rb +13 -0
  362. data/tests/models/sql/flags_tests.rb +12 -0
  363. data/tests/models/sql/instance_tests.rb +56 -0
  364. data/tests/models/sql/instances_tests.rb +32 -0
  365. data/tests/models/sql/operation_tests.rb +25 -0
  366. data/tests/models/sql/operations_tests.rb +38 -0
  367. data/tests/models/sql/ssl_cert_tests.rb +24 -0
  368. data/tests/models/sql/ssl_certs_tests.rb +39 -0
  369. data/tests/models/sql/tiers_tests.rb +12 -0
  370. data/tests/requests/compute/backend_service_tests.rb +83 -0
  371. data/tests/requests/compute/disk_tests.rb +74 -0
  372. data/tests/requests/compute/disk_type_tests.rb +45 -0
  373. data/tests/requests/compute/firewall_tests.rb +88 -0
  374. data/tests/requests/compute/forwarding_rules_tests.rb +83 -0
  375. data/tests/requests/compute/global_forwarding_rules_tests.rb +83 -0
  376. data/tests/requests/compute/http_health_checks_tests.rb +83 -0
  377. data/tests/requests/compute/image_tests.rb +83 -0
  378. data/tests/requests/compute/network_tests.rb +75 -0
  379. data/tests/requests/compute/operation_tests.rb +20 -0
  380. data/tests/requests/compute/region_tests.rb +39 -0
  381. data/tests/requests/compute/server_tests.rb +84 -0
  382. data/tests/requests/compute/target_http_proxies_test.rb +79 -0
  383. data/tests/requests/compute/target_instances_tests.rb +83 -0
  384. data/tests/requests/compute/target_pools_tests.rb +82 -0
  385. data/tests/requests/compute/url_maps_tests.rb +82 -0
  386. data/tests/requests/compute/zone_tests.rb +37 -0
  387. data/tests/requests/dns/change_tests.rb +86 -0
  388. data/tests/requests/dns/managed_zone_tests.rb +66 -0
  389. data/tests/requests/dns/project_tests.rb +29 -0
  390. data/tests/requests/dns/record_tests.rb +49 -0
  391. data/tests/requests/monitoring/metric_descriptor_tests.rb +25 -0
  392. data/tests/requests/monitoring/timeseries_collection_tests.rb +25 -0
  393. data/tests/requests/monitoring/timeseries_descriptor_tests.rb +26 -0
  394. data/tests/requests/sql/flag_tests.rb +27 -0
  395. data/tests/requests/sql/instance_tests.rb +129 -0
  396. data/tests/requests/sql/operation_tests.rb +42 -0
  397. data/tests/requests/sql/ssl_cert_tests.rb +61 -0
  398. data/tests/requests/sql/tier_tests.rb +25 -0
  399. data/tests/requests/storage/bucket_tests.rb +77 -0
  400. data/tests/requests/storage/object_tests.rb +84 -0
  401. metadata +625 -0
@@ -0,0 +1,39 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/google/models/sql/instance'
3
+
4
+ module Fog
5
+ module Google
6
+ class SQL
7
+ class Instances < Fog::Collection
8
+ model Fog::Google::SQL::Instance
9
+
10
+ ##
11
+ # Lists all instance
12
+ #
13
+ # @return [Array<Fog::Google::SQL::Instance>] List of instance resources
14
+ def all
15
+ data = service.list_instances.body['items'] || []
16
+ load(data)
17
+ end
18
+
19
+ ##
20
+ # Retrieves an instance
21
+ #
22
+ # @param [String] instance_id Instance ID
23
+ # @return [Fog::Google::SQL::Instance] Instance resource
24
+ def get(instance_id)
25
+ if instance = service.get_instance(instance_id).body
26
+ new(instance)
27
+ end
28
+ rescue Fog::Errors::NotFound
29
+ nil
30
+ rescue Fog::Errors::Error => e
31
+ # Google SQL returns a 403 if we try to access a non-existing resource
32
+ # The default behaviour in Fog is to return a nil
33
+ return nil if e.message == 'The client is not authorized to make this request.'
34
+ raise e
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,61 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Google
5
+ class SQL
6
+ ##
7
+ # An Operation resource contains information about database instance operations
8
+ # such as create, delete, and restart
9
+ #
10
+ # @see https://developers.google.com/cloud-sql/docs/admin-api/v1beta3/operations
11
+ class Operation < Fog::Model
12
+ identity :operation
13
+
14
+ attribute :end_time, :aliases => 'endTime'
15
+ attribute :enqueued_time, :aliases => 'enqueuedTime'
16
+ attribute :error
17
+ attribute :export_context, :aliases => 'exportContext'
18
+ attribute :import_context, :aliases => 'importContext'
19
+ attribute :instance
20
+ attribute :kind
21
+ attribute :operation_type, :aliases => 'operationType'
22
+ attribute :start_time, :aliases => 'startTime'
23
+ attribute :state
24
+ attribute :user_email_address, :aliases => 'userEmailAddress'
25
+
26
+ DONE_STATE = 'DONE'
27
+ PENDING_STATE = 'PENDING'
28
+ RUNNING_STATE = 'RUNNING'
29
+ UNKNOWN_STATE = 'UNKNOWN'
30
+
31
+ ##
32
+ # Checks if the instance operation is pending
33
+ #
34
+ # @return [Boolean] True if the operation is pending; False otherwise
35
+ def pending?
36
+ self.state == PENDING_STATE
37
+ end
38
+
39
+ ##
40
+ # Checks if the instance operation is done
41
+ #
42
+ # @return [Boolean] True if the operation is done; False otherwise
43
+ def ready?
44
+ self.state == DONE_STATE
45
+ end
46
+
47
+ ##
48
+ # Reloads an instance operation
49
+ #
50
+ # @return [Fog::Google::SQL::Operation] Instance operation resource
51
+ def reload
52
+ requires :identity
53
+
54
+ data = collection.get(self.instance, self.identity)
55
+ merge_attributes(data.attributes)
56
+ self
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,49 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/google/models/sql/operation'
3
+
4
+ module Fog
5
+ module Google
6
+ class SQL
7
+ class Operations < Fog::Collection
8
+ model Fog::Google::SQL::Operation
9
+
10
+ ##
11
+ # Lists all instance operations that have been performed on the given instance
12
+ #
13
+ # @param [String] instance_id Instance ID
14
+ # @return [Array<Fog::Google::SQL::Operation>] List of instance operation resources
15
+ def all(instance_id)
16
+ data = []
17
+ begin
18
+ data = service.list_operations(instance_id).body['items'] || []
19
+ rescue Fog::Errors::Error => e
20
+ # Google SQL returns a 403 if we try to access a non-existing resource
21
+ # The default behaviour in Fog is to return an empty Array
22
+ raise e unless e.message == 'The client is not authorized to make this request.'
23
+ end
24
+
25
+ load(data)
26
+ end
27
+
28
+ ##
29
+ # Retrieves an instance operation that has been performed on an instance
30
+ #
31
+ # @param [String] instance_id Instance ID
32
+ # @param [String] operation_id Instance operation ID
33
+ # @return [Fog::Google::SQL::Operation] Instance operation resource
34
+ def get(instance_id, operation_id)
35
+ if operation = service.get_operation(instance_id, operation_id).body
36
+ new(operation)
37
+ end
38
+ rescue Fog::Errors::NotFound
39
+ nil
40
+ rescue Fog::Errors::Error => e
41
+ # Google SQL returns a 403 if we try to access a non-existing resource
42
+ # The default behaviour in Fog is to return a nil
43
+ return nil if e.message == 'The client is not authorized to make this request.'
44
+ raise e
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,73 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Google
5
+ class SQL
6
+ ##
7
+ # A SSL certificate resource
8
+ #
9
+ # @see https://developers.google.com/cloud-sql/docs/admin-api/v1beta3/sslCerts
10
+ class SslCert < Fog::Model
11
+ identity :sha1_fingerprint, :aliases => 'sha1Fingerprint'
12
+
13
+ attribute :cert
14
+ attribute :cert_serial_number, :aliases => 'certSerialNumber'
15
+ attribute :common_name, :aliases => 'commonName'
16
+ attribute :create_time, :aliases => 'createTime'
17
+ attribute :expiration_time, :aliases => 'expirationTime'
18
+ attribute :instance
19
+ attribute :kind
20
+
21
+ # These attributes are not available in the representation of a 'SSL Certificate' returned by the SQL API.
22
+ # These attributes are only available as a reponse to a create operation
23
+ attribute :server_ca_cert, :aliases => 'serverCaCert'
24
+ attribute :cert_private_key, :aliases => 'certPrivateKey'
25
+
26
+ ##
27
+ # Deletes a SSL certificate. The change will not take effect until the instance is restarted.
28
+ #
29
+ # @param [Hash] options Method options
30
+ # @option options [Boolean] :async If the operation must be performed asynchronously (true by default)
31
+ # @return [Fog::Google::SQL::Operation] A Operation resource
32
+ def destroy(options = {})
33
+ requires :instance, :identity
34
+
35
+ data = service.delete_ssl_cert(self.instance, self.identity)
36
+ operation = Fog::Google::SQL::Operations.new(:service => service).get(self.instance, data.body['operation'])
37
+ unless options.fetch(:async, true)
38
+ operation.wait_for { ready? }
39
+ end
40
+ operation
41
+ end
42
+
43
+ ##
44
+ # Reloads a SSL certificate
45
+ #
46
+ # @return [Fog::Google::SQL::SslCert] SSL certificate resource
47
+ def reload
48
+ requires :instance, :identity
49
+
50
+ data = collection.get(self.instance, self.identity)
51
+ merge_attributes(data.attributes)
52
+ self
53
+ end
54
+
55
+ ##
56
+ # Creates a SSL certificate. The new certificate will not be usable until the instance is restarted.
57
+ #
58
+ # @raise [Fog::Errors::Error] If SSL certificate already exists
59
+ def save
60
+ requires :instance, :common_name
61
+
62
+ raise Fog::Errors::Error.new('Resaving an existing object may create a duplicate') if persisted?
63
+
64
+ data = service.insert_ssl_cert(self.instance, self.common_name).body
65
+ merge_attributes(data['clientCert']['certInfo'])
66
+ self.server_ca_cert = Fog::Google::SQL::SslCert.new(data['serverCaCert'])
67
+ self.cert_private_key = data['clientCert']['certPrivateKey']
68
+ self
69
+ end
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,49 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/google/models/sql/ssl_cert'
3
+
4
+ module Fog
5
+ module Google
6
+ class SQL
7
+ class SslCerts < Fog::Collection
8
+ model Fog::Google::SQL::SslCert
9
+
10
+ ##
11
+ # Lists all of the current SSL certificates for the instance
12
+ #
13
+ # @param [String] instance_id Instance ID
14
+ # @return [Array<Fog::Google::SQL::SslCert>] List of SSL certificate resources
15
+ def all(instance_id)
16
+ data = []
17
+ begin
18
+ data = service.list_ssl_certs(instance_id).body['items'] || []
19
+ rescue Fog::Errors::Error => e
20
+ # Google SQL returns a 403 if we try to access a non-existing resource
21
+ # The default behaviour in Fog is to return an empty Array
22
+ raise e unless e.message == 'The client is not authorized to make this request.'
23
+ end
24
+
25
+ load(data)
26
+ end
27
+
28
+ ##
29
+ # Retrieves a particular SSL certificate (does not include the private key)
30
+ #
31
+ # @param [String] instance_id Instance ID
32
+ # @param [String] sha1_fingerprint Sha1 FingerPrint
33
+ # @return [Fog::Google::SQL::SslCert] SSL certificate resource
34
+ def get(instance_id, sha1_fingerprint)
35
+ if ssl_cert = service.get_ssl_cert(instance_id, sha1_fingerprint).body
36
+ new(ssl_cert)
37
+ end
38
+ rescue Fog::Errors::NotFound
39
+ nil
40
+ rescue Fog::Errors::Error => e
41
+ # Google SQL returns a 403 if we try to access a non-existing resource
42
+ # The default behaviour in Fog is to return a nil
43
+ return nil if e.message == 'The client is not authorized to make this request.'
44
+ raise e
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,20 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Google
5
+ class SQL
6
+ ##
7
+ # A Google Cloud SQL service tier resource
8
+ #
9
+ # @see https://developers.google.com/cloud-sql/docs/admin-api/v1beta3/tiers
10
+ class Tier < Fog::Model
11
+ identity :tier
12
+
13
+ attribute :disk_quota, :aliases => 'DiskQuota'
14
+ attribute :kind
15
+ attribute :ram, :aliases => 'RAM'
16
+ attribute :region
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,21 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/google/models/sql/tier'
3
+
4
+ module Fog
5
+ module Google
6
+ class SQL
7
+ class Tiers < Fog::Collection
8
+ model Fog::Google::SQL::Tier
9
+
10
+ ##
11
+ # Lists all available service tiers
12
+ #
13
+ # @return [Array<Fog::Google::SQL::Tier>] List of tiers
14
+ def all
15
+ data = service.list_tiers.body['items'] || []
16
+ load(data)
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,39 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/google/models/storage/directory'
3
+
4
+ module Fog
5
+ module Storage
6
+ class Google
7
+ class Directories < Fog::Collection
8
+ model Fog::Storage::Google::Directory
9
+
10
+ def all
11
+ data = service.get_service.body['Buckets']
12
+ load(data)
13
+ end
14
+
15
+ def get(key, options = {})
16
+ remap_attributes(options, {
17
+ :delimiter => 'delimiter',
18
+ :marker => 'marker',
19
+ :max_keys => 'max-keys',
20
+ :prefix => 'prefix'
21
+ })
22
+ data = service.get_bucket(key, options).body
23
+ directory = new(:key => data['Name'])
24
+ options = {}
25
+ for k, v in data
26
+ if ['CommonPrefixes', 'Delimiter', 'IsTruncated', 'Marker', 'MaxKeys', 'Prefix'].include?(k)
27
+ options[k] = v
28
+ end
29
+ end
30
+ directory.files.merge_attributes(options)
31
+ directory.files.load(data['Contents'])
32
+ directory
33
+ rescue Excon::Errors::NotFound
34
+ nil
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,74 @@
1
+ require 'fog/core/model'
2
+ require 'fog/google/models/storage/files'
3
+
4
+ module Fog
5
+ module Storage
6
+ class Google
7
+ class Directory < Fog::Model
8
+ identity :key, :aliases => ['Name', 'name']
9
+
10
+ attribute :creation_date, :aliases => 'CreationDate'
11
+
12
+ def acl=(new_acl)
13
+ valid_acls = ['private', 'public-read', 'public-read-write', 'authenticated-read']
14
+ unless valid_acls.include?(new_acl)
15
+ raise ArgumentError.new("acl must be one of [#{valid_acls.join(', ')}]")
16
+ end
17
+ @acl = new_acl
18
+ end
19
+
20
+ def destroy
21
+ requires :key
22
+ service.delete_bucket(key)
23
+ true
24
+ rescue Excon::Errors::NotFound
25
+ false
26
+ end
27
+
28
+ def files
29
+ @files ||= begin
30
+ Fog::Storage::Google::Files.new(
31
+ :directory => self,
32
+ :service => service
33
+ )
34
+ end
35
+ end
36
+
37
+ def public=(new_public)
38
+ if new_public
39
+ @acl = 'public-read'
40
+ else
41
+ @acl = 'private'
42
+ end
43
+ new_public
44
+ end
45
+
46
+ def public_url
47
+ requires :key
48
+ if service.get_bucket_acl(key).body['AccessControlList'].find {|entry| entry['Scope']['type'] == 'AllUsers' && entry['Permission'] == 'READ'}
49
+ if key.to_s =~ /^(?:[a-z]|\d(?!\d{0,2}(?:\.\d{1,3}){3}$))(?:[a-z0-9]|\.(?![\.\-])|\-(?![\.])){1,61}[a-z0-9]$/
50
+ "https://#{key}.storage.googleapis.com"
51
+ else
52
+ "https://storage.googleapis.com/#{key}"
53
+ end
54
+ else
55
+ nil
56
+ end
57
+ end
58
+
59
+ def save
60
+ requires :key
61
+ options = {}
62
+ if @acl
63
+ options['x-goog-acl'] = @acl
64
+ end
65
+ if @location
66
+ options['LocationConstraint'] = @location
67
+ end
68
+ service.put_bucket(key, options)
69
+ true
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,144 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Storage
5
+ class Google
6
+ class File < Fog::Model
7
+ identity :key, :aliases => 'Key'
8
+
9
+ attribute :cache_control, :aliases => 'Cache-Control'
10
+ attribute :content_disposition, :aliases => 'Content-Disposition'
11
+ attribute :content_encoding, :aliases => 'Content-Encoding'
12
+ attribute :content_length, :aliases => ['Content-Length', 'Size'], :type => :integer
13
+ attribute :content_md5, :aliases => 'Content-MD5'
14
+ attribute :content_type, :aliases => 'Content-Type'
15
+ attribute :etag, :aliases => ['Etag', 'ETag']
16
+ attribute :expires, :aliases => 'Expires'
17
+ attribute :last_modified, :aliases => ['Last-Modified', 'LastModified']
18
+ attribute :metadata
19
+ attribute :owner, :aliases => 'Owner'
20
+ attribute :storage_class, :aliases => ['x-goog-storage-class', 'StorageClass']
21
+
22
+ def acl=(new_acl)
23
+ valid_acls = ['private', 'public-read', 'public-read-write', 'authenticated-read']
24
+ unless valid_acls.include?(new_acl)
25
+ raise ArgumentError.new("acl must be one of [#{valid_acls.join(', ')}]")
26
+ end
27
+ @acl = new_acl
28
+ end
29
+
30
+ def body
31
+ attributes[:body] ||= if last_modified && (file = collection.get(identity))
32
+ file.body
33
+ else
34
+ ''
35
+ end
36
+ end
37
+
38
+ def body=(new_body)
39
+ attributes[:body] = new_body
40
+ end
41
+
42
+ def directory
43
+ @directory
44
+ end
45
+
46
+ def copy(target_directory_key, target_file_key)
47
+ requires :directory, :key
48
+ service.copy_object(directory.key, key, target_directory_key, target_file_key)
49
+ target_directory = service.directories.new(:key => target_directory_key)
50
+ target_directory.files.get(target_file_key)
51
+ end
52
+
53
+ def destroy
54
+ requires :directory, :key
55
+ begin
56
+ service.delete_object(directory.key, key)
57
+ rescue Excon::Errors::NotFound
58
+ end
59
+ true
60
+ end
61
+
62
+ remove_method :metadata
63
+ def metadata
64
+ attributes.reject {|key, value| !(key.to_s =~ /^x-goog-meta-/)}
65
+ end
66
+
67
+ remove_method :metadata=
68
+ def metadata=(new_metadata)
69
+ merge_attributes(new_metadata)
70
+ end
71
+
72
+ remove_method :owner=
73
+ def owner=(new_owner)
74
+ if new_owner
75
+ attributes[:owner] = {
76
+ :display_name => new_owner['DisplayName'],
77
+ :id => new_owner['ID']
78
+ }
79
+ end
80
+ end
81
+
82
+ def public=(new_public)
83
+ if new_public
84
+ @acl = 'public-read'
85
+ else
86
+ @acl = 'private'
87
+ end
88
+ new_public
89
+ end
90
+
91
+ def public_url
92
+ requires :directory, :key
93
+
94
+ acl = service.get_object_acl(directory.key, key).body['AccessControlList']
95
+ access_granted = acl.find do |entry|
96
+ entry['Scope']['type'] == 'AllUsers' && entry['Permission'] == 'READ'
97
+ end
98
+
99
+ if access_granted
100
+ if directory.key.to_s =~ /^(?:[a-z]|\d(?!\d{0,2}(?:\.\d{1,3}){3}$))(?:[a-z0-9]|\.(?![\.\-])|\-(?![\.])){1,61}[a-z0-9]$/
101
+ "https://#{directory.key}.storage.googleapis.com/#{key}"
102
+ else
103
+ "https://storage.googleapis.com/#{directory.key}/#{key}"
104
+ end
105
+ else
106
+ nil
107
+ end
108
+ end
109
+
110
+ def save(options = {})
111
+ requires :body, :directory, :key
112
+ if options != {}
113
+ Fog::Logger.deprecation("options param is deprecated, use acl= instead [light_black](#{caller.first})[/]")
114
+ end
115
+ options['x-goog-acl'] ||= @acl if @acl
116
+ options['Cache-Control'] = cache_control if cache_control
117
+ options['Content-Disposition'] = content_disposition if content_disposition
118
+ options['Content-Encoding'] = content_encoding if content_encoding
119
+ options['Content-MD5'] = content_md5 if content_md5
120
+ options['Content-Type'] = content_type if content_type
121
+ options['Expires'] = expires if expires
122
+ options.merge!(metadata)
123
+
124
+ data = service.put_object(directory.key, key, body, options)
125
+ merge_attributes(data.headers.reject {|key, value| ['Content-Length', 'Content-Type'].include?(key)})
126
+ self.content_length = Fog::Storage.get_body_size(body)
127
+ self.content_type ||= Fog::Storage.get_content_type(body)
128
+ true
129
+ end
130
+
131
+ def url(expires)
132
+ requires :key
133
+ collection.get_http_url(key, expires)
134
+ end
135
+
136
+ private
137
+
138
+ def directory=(new_directory)
139
+ @directory = new_directory
140
+ end
141
+ end
142
+ end
143
+ end
144
+ end