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,51 @@
1
+ module Fog
2
+ module Storage
3
+ class Google
4
+ class Real
5
+ # TODO: move this methods to helper to use them with put_bucket_acl request
6
+ def tag(name, value)
7
+ "<#{name}>#{value}</#{name}>"
8
+ end
9
+
10
+ def scope_tag(scope)
11
+ if %w(AllUsers AllAuthenticatedUsers).include?(scope['type'])
12
+ "<Scope type='#{scope['type']}'/>"
13
+ else
14
+ "<Scope type='#{scope['type']}'>" +
15
+ scope.to_a.select {|pair| pair[0] != 'type'}.map { |pair| tag(pair[0], pair[1]) }.join("\n") +
16
+ "</Scope>"
17
+ end
18
+ end
19
+
20
+ def entries_list(access_control_list)
21
+ access_control_list.map do |entry|
22
+ tag('Entry', scope_tag(entry['Scope']) + tag('Permission', entry['Permission']))
23
+ end.join("\n")
24
+ end
25
+
26
+ def put_object_acl(bucket_name, object_name, acl)
27
+ data = <<-DATA
28
+ <AccessControlList>
29
+ <Owner>
30
+ #{tag('ID', acl['Owner']['ID'])}
31
+ </Owner>
32
+ <Entries>
33
+ #{entries_list(acl['AccessControlList'])}
34
+ </Entries>
35
+ </AccessControlList>
36
+ DATA
37
+
38
+ request({
39
+ :body => data,
40
+ :expects => 200,
41
+ :headers => {},
42
+ :host => "#{bucket_name}.#{@host}",
43
+ :method => 'PUT',
44
+ :query => {'acl' => nil},
45
+ :path => CGI.escape(object_name)
46
+ })
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,50 @@
1
+ module Fog
2
+ module Storage
3
+ class Google
4
+ class Real
5
+ # Get an expiring object url from Google Storage for putting an object
6
+ #
7
+ # ==== Parameters
8
+ # * bucket_name<~String> - Name of bucket containing object
9
+ # * object_name<~String> - Name of object to get expiring url for
10
+ # * expires<~Time> - An expiry time for this url
11
+ #
12
+ # ==== Returns
13
+ # * response<~Excon::Response>:
14
+ # * body<~String> - url for object
15
+ #
16
+ def put_object_url(bucket_name, object_name, expires, headers = {})
17
+ unless bucket_name
18
+ raise ArgumentError.new('bucket_name is required')
19
+ end
20
+ unless object_name
21
+ raise ArgumentError.new('object_name is required')
22
+ end
23
+ https_url({
24
+ :headers => headers,
25
+ :host => @host,
26
+ :method => 'PUT',
27
+ :path => "#{bucket_name}/#{object_name}"
28
+ }, expires)
29
+ end
30
+ end
31
+
32
+ class Mock
33
+ def put_object_url(bucket_name, object_name, expires, headers = {})
34
+ unless bucket_name
35
+ raise ArgumentError.new('bucket_name is required')
36
+ end
37
+ unless object_name
38
+ raise ArgumentError.new('object_name is required')
39
+ end
40
+ https_url({
41
+ :headers => headers,
42
+ :host => @host,
43
+ :method => 'PUT',
44
+ :path => "#{bucket_name}/#{object_name}"
45
+ }, expires)
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,130 @@
1
+ module Fog
2
+ module Google
3
+ class SQL < Fog::Service
4
+ requires :google_project
5
+ recognizes :google_client_email, :google_key_location, :google_key_string, :google_client,
6
+ :app_name, :app_version, :google_json_key_location, :google_json_key_string
7
+
8
+ GOOGLE_SQL_API_VERSION = 'v1beta3'
9
+ GOOGLE_SQL_BASE_URL = 'https://www.googleapis.com/sql/'
10
+ GOOGLE_SQL_API_SCOPE_URLS = %w(https://www.googleapis.com/auth/sqlservice.admin
11
+ https://www.googleapis.com/auth/cloud-platform)
12
+
13
+ ##
14
+ # MODELS
15
+ model_path 'fog/google/models/sql'
16
+
17
+ # Backup Run
18
+ model :backup_run
19
+ collection :backup_runs
20
+
21
+ # Flag
22
+ model :flag
23
+ collection :flags
24
+
25
+ # Instance
26
+ model :instance
27
+ collection :instances
28
+
29
+ # Operation
30
+ model :operation
31
+ collection :operations
32
+
33
+ # SSL Certificate
34
+ model :ssl_cert
35
+ collection :ssl_certs
36
+
37
+ # Tier
38
+ model :tier
39
+ collection :tiers
40
+
41
+ ##
42
+ # REQUESTS
43
+ request_path 'fog/google/requests/sql'
44
+
45
+ # Backup Run
46
+ request :get_backup_run
47
+ request :list_backup_runs
48
+
49
+ # Flag
50
+ request :list_flags
51
+
52
+ # Instance
53
+ request :clone_instance
54
+ request :delete_instance
55
+ request :export_instance
56
+ request :get_instance
57
+ request :import_instance
58
+ request :insert_instance
59
+ request :list_instances
60
+ request :reset_instance_ssl_config
61
+ request :restart_instance
62
+ request :restore_instance_backup
63
+ request :set_instance_root_password
64
+ request :update_instance
65
+
66
+ # Operation
67
+ request :get_operation
68
+ request :list_operations
69
+
70
+ # SSL Certificate
71
+ request :delete_ssl_cert
72
+ request :get_ssl_cert
73
+ request :insert_ssl_cert
74
+ request :list_ssl_certs
75
+
76
+ # Tier
77
+ request :list_tiers
78
+
79
+ class Mock
80
+ include Fog::Google::Shared
81
+
82
+ def initialize(options)
83
+ shared_initialize(options[:google_project], GOOGLE_SQL_API_VERSION, GOOGLE_SQL_BASE_URL)
84
+ end
85
+
86
+ def self.data
87
+ @data ||= Hash.new do |hash, key|
88
+ hash[key] = {
89
+ :backup_runs => {},
90
+ :instances => {},
91
+ :operations => {},
92
+ :ssl_certs => {},
93
+ }
94
+ end
95
+ end
96
+
97
+ def self.reset
98
+ @data = nil
99
+ end
100
+
101
+ def data
102
+ self.class.data[project]
103
+ end
104
+
105
+ def reset_data
106
+ self.class.data.delete(project)
107
+ end
108
+
109
+ def random_operation
110
+ "operation-#{Fog::Mock.random_numbers(13)}-#{Fog::Mock.random_hex(13)}-#{Fog::Mock.random_hex(8)}"
111
+ end
112
+ end
113
+
114
+ class Real
115
+ include Fog::Google::Shared
116
+
117
+ attr_accessor :client
118
+ attr_reader :sql
119
+
120
+ def initialize(options)
121
+ shared_initialize(options[:google_project], GOOGLE_SQL_API_VERSION, GOOGLE_SQL_BASE_URL)
122
+ options.merge!(:google_api_scope_url => GOOGLE_SQL_API_SCOPE_URLS.join(' '))
123
+
124
+ @client = initialize_google_client(options)
125
+ @sql = @client.discovered_api('sqladmin', api_version)
126
+ end
127
+ end
128
+ end
129
+ end
130
+ end
@@ -0,0 +1,298 @@
1
+ module Fog
2
+ module Storage
3
+ class Google < Fog::Service
4
+ requires :google_storage_access_key_id, :google_storage_secret_access_key
5
+ recognizes :host, :port, :scheme, :persistent, :path_style
6
+
7
+ model_path 'fog/google/models/storage'
8
+ collection :directories
9
+ model :directory
10
+ collection :files
11
+ model :file
12
+
13
+ request_path 'fog/google/requests/storage'
14
+ request :copy_object
15
+ request :delete_bucket
16
+ request :delete_object
17
+ request :get_bucket
18
+ request :get_bucket_acl
19
+ request :get_object
20
+ request :get_object_acl
21
+ request :get_object_torrent
22
+ request :get_object_http_url
23
+ request :get_object_https_url
24
+ request :get_object_url
25
+ request :get_service
26
+ request :head_object
27
+ request :put_bucket
28
+ request :put_bucket_acl
29
+ request :put_object
30
+ request :put_object_acl
31
+ request :put_object_url
32
+
33
+ module Utils
34
+ def http_url(params, expires)
35
+ "http://" << host_path_query(params, expires)
36
+ end
37
+
38
+ def https_url(params, expires)
39
+ "https://" << host_path_query(params, expires)
40
+ end
41
+
42
+ def url(params, expires)
43
+ Fog::Logger.deprecation("Fog::Storage::Google => #url is deprecated, use #https_url instead [light_black](#{caller.first})[/]")
44
+ https_url(params, expires)
45
+ end
46
+
47
+ private
48
+
49
+ def host_path_query(params, expires)
50
+ params[:headers]['Date'] = expires.to_i
51
+ params[:path] = CGI.escape(params[:path]).gsub('%2F', '/')
52
+ query = [params[:query]].compact
53
+ query << "GoogleAccessId=#{@google_storage_access_key_id}"
54
+ query << "Signature=#{CGI.escape(signature(params))}"
55
+ query << "Expires=#{params[:headers]['Date']}"
56
+ "#{params[:host]}/#{params[:path]}?#{query.join('&')}"
57
+ end
58
+
59
+ def request_params(params)
60
+ subdomain = params[:host].split(".#{@host}").first
61
+ if @path_style or subdomain !~ /^(?!goog)(?:[a-z]|\d(?!\d{0,2}(?:\.\d{1,3}){3}$))(?:[a-z0-9]|\.(?![\.\-])|\-(?![\.])){1,61}[a-z0-9]$/
62
+ if subdomain =~ /_/
63
+ # https://github.com/fog/fog/pull/1258#issuecomment-10248620.
64
+ Fog::Logger.warning("fog: the specified google storage bucket name (#{subdomain}) is not DNS compliant (only characters a through z, digits 0 through 9, and the hyphen).")
65
+ else
66
+ # - Bucket names must contain only lowercase letters, numbers, dashes (-), underscores (_), and dots (.). Names containing dots require verification.
67
+ # - Bucket names must start and end with a number or letter.
68
+ # - Bucket names must contain 3 to 63 characters. Names containing dots can contain up to 222 characters, but each dot-separated component can be no longer than 63 characters.
69
+ # - Bucket names cannot be represented as an IP address in dotted-decimal notation (for example, 192.168.5.4).
70
+ # - Bucket names cannot begin with the "goog" prefix.
71
+ # - Also, for DNS compliance, you should not have a period adjacent to another period or dash. For example, ".." or "-." or ".-" are not acceptable.
72
+ Fog::Logger.warning("fog: the specified google storage bucket name (#{subdomain}) is not a valid dns name. See: https://developers.google.com/storage/docs/bucketnaming") unless @path_style
73
+ end
74
+
75
+ params[:host] = params[:host].split("#{subdomain}.")[-1]
76
+ if params[:path]
77
+ params[:path] = "#{subdomain}/#{params[:path]}"
78
+ else
79
+ params[:path] = "#{subdomain}"
80
+ end
81
+ subdomain = nil
82
+ end
83
+
84
+ if subdomain && subdomain != @host
85
+ params[:subdomain] = subdomain
86
+ end
87
+
88
+ params[:scheme] ||= @scheme
89
+ params[:port] ||= @port
90
+ params
91
+ end
92
+ end
93
+
94
+ class Mock
95
+ include Utils
96
+
97
+ def self.acls(type)
98
+ case type
99
+ when 'private'
100
+ {
101
+ "AccessControlList"=> [
102
+ {
103
+ "Permission" => "FULL_CONTROL",
104
+ "Scope" => {"ID" => "2744ccd10c7533bd736ad890f9dd5cab2adb27b07d500b9493f29cdc420cb2e0", "type" => "UserById"}
105
+ }
106
+ ],
107
+ "Owner" => {"ID" => "2744ccd10c7533bd736ad890f9dd5cab2adb27b07d500b9493f29cdc420cb2e0"}
108
+ }
109
+ when 'public-read'
110
+ {
111
+ "AccessControlList"=> [
112
+ {
113
+ "Permission" => "FULL_CONTROL",
114
+ "Scope" => {"ID" => "2744ccd10c7533bd736ad890f9dd5cab2adb27b07d500b9493f29cdc420cb2e0", "type" => "UserById"}
115
+ },
116
+ {
117
+ "Permission" => "READ",
118
+ "Scope" => {"type" => "AllUsers"}
119
+ }
120
+ ],
121
+ "Owner" => {"ID" => "2744ccd10c7533bd736ad890f9dd5cab2adb27b07d500b9493f29cdc420cb2e0"}
122
+ }
123
+ when 'public-read-write'
124
+ {
125
+ "AccessControlList"=> [
126
+ {
127
+ "Permission" => "FULL_CONTROL",
128
+ "Scope" => {"ID" => "2744ccd10c7533bd736ad890f9dd5cab2adb27b07d500b9493f29cdc420cb2e0", "type" => "UserById"}
129
+ },
130
+ {
131
+ "Permission" => "READ",
132
+ "Scope" => {"type" => "AllUsers"}
133
+ },
134
+ {
135
+ "Permission" => "WRITE",
136
+ "Scope" => {"type" => "AllUsers"}
137
+ }
138
+ ],
139
+ "Owner" => {"ID" => "2744ccd10c7533bd736ad890f9dd5cab2adb27b07d500b9493f29cdc420cb2e0"}
140
+ }
141
+ when 'authenticated-read'
142
+ {
143
+ "AccessControlList"=> [
144
+ {
145
+ "Permission" => "FULL_CONTROL",
146
+ "Scope" => {"ID" => "2744ccd10c7533bd736ad890f9dd5cab2adb27b07d500b9493f29cdc420cb2e0", "type" => "UserById"}
147
+ },
148
+ {
149
+ "Permission" => "READ",
150
+ "Scope" => {"type" => "AllAuthenticatedUsers"}
151
+ }
152
+ ],
153
+ "Owner" => {"ID" => "2744ccd10c7533bd736ad890f9dd5cab2adb27b07d500b9493f29cdc420cb2e0"}
154
+ }
155
+ end
156
+ end
157
+
158
+ def self.data
159
+ @data ||= Hash.new do |hash, key|
160
+ hash[key] = {
161
+ :acls => {
162
+ :bucket => {},
163
+ :object => {}
164
+ },
165
+ :buckets => {}
166
+ }
167
+ end
168
+ end
169
+
170
+ def self.reset
171
+ @data = nil
172
+ end
173
+
174
+ def initialize(options={})
175
+ @google_storage_access_key_id = options[:google_storage_access_key_id]
176
+ end
177
+
178
+ def data
179
+ self.class.data[@google_storage_access_key_id]
180
+ end
181
+
182
+ def reset_data
183
+ self.class.data.delete(@google_storage_access_key_id)
184
+ end
185
+
186
+ def signature(params)
187
+ "foo"
188
+ end
189
+ end
190
+
191
+ class Real
192
+ include Utils
193
+
194
+ # Initialize connection to Google Storage
195
+ #
196
+ # ==== Notes
197
+ # options parameter must include values for :google_storage_access_key_id and
198
+ # :google_storage_secret_access_key in order to create a connection
199
+ #
200
+ # ==== Examples
201
+ # google_storage = Storage.new(
202
+ # :google_storage_access_key_id => your_google_storage_access_key_id,
203
+ # :google_storage_secret_access_key => your_google_storage_secret_access_key
204
+ # )
205
+ #
206
+ # ==== Parameters
207
+ # * options<~Hash> - config arguments for connection. Defaults to {}.
208
+ #
209
+ # ==== Returns
210
+ # * Storage object with connection to google.
211
+ def initialize(options={})
212
+
213
+ @google_storage_access_key_id = options[:google_storage_access_key_id]
214
+ @google_storage_secret_access_key = options[:google_storage_secret_access_key]
215
+ @connection_options = options[:connection_options] || {}
216
+ @hmac = Fog::HMAC.new('sha1', @google_storage_secret_access_key)
217
+ @host = options[:host] || 'storage.googleapis.com'
218
+ @persistent = options.fetch(:persistent, true)
219
+ @port = options[:port] || 443
220
+ @scheme = options[:scheme] || 'https'
221
+ @path_style = options[:path_style] || false
222
+ end
223
+
224
+ def reload
225
+ @connection.reset if @connection
226
+ end
227
+
228
+ def signature(params)
229
+ string_to_sign =
230
+ <<-DATA
231
+ #{params[:method]}
232
+ #{params[:headers]['Content-MD5']}
233
+ #{params[:headers]['Content-Type']}
234
+ #{params[:headers]['Date']}
235
+ DATA
236
+
237
+ google_headers, canonical_google_headers = {}, ''
238
+ for key, value in params[:headers]
239
+ if key[0..6] == 'x-goog-'
240
+ google_headers[key] = value
241
+ end
242
+ end
243
+
244
+ google_headers = google_headers.sort {|x, y| x[0] <=> y[0]}
245
+ for key, value in google_headers
246
+ canonical_google_headers << "#{key}:#{value}\n"
247
+ end
248
+ string_to_sign << "#{canonical_google_headers}"
249
+
250
+ canonical_resource = "/"
251
+ if subdomain = params.delete(:subdomain)
252
+ canonical_resource << "#{CGI.escape(subdomain).downcase}/"
253
+ end
254
+ canonical_resource << "#{params[:path]}"
255
+ canonical_resource << '?'
256
+ for key in (params[:query] || {}).keys
257
+ if ['acl', 'cors', 'location', 'logging', 'requestPayment', 'torrent', 'versions', 'versioning'].include?(key)
258
+ canonical_resource << "#{key}&"
259
+ end
260
+ end
261
+ canonical_resource.chop!
262
+ string_to_sign << "#{canonical_resource}"
263
+
264
+ signed_string = @hmac.sign(string_to_sign)
265
+ Base64.encode64(signed_string).chomp!
266
+ end
267
+
268
+ def connection(scheme, host, port)
269
+ uri = "#{scheme}://#{host}:#{port}"
270
+ if @persistent
271
+ unless uri == @connection_uri
272
+ @connection_uri = uri
273
+ reload
274
+ @connection = nil
275
+ end
276
+ else
277
+ @connection = nil
278
+ end
279
+ @connection ||= Fog::XML::Connection.new(uri, @persistent, @connection_options)
280
+ end
281
+
282
+ private
283
+
284
+ def request(params, &block)
285
+ params = request_params(params)
286
+ scheme = params.delete(:scheme)
287
+ host = params.delete(:host)
288
+ port = params.delete(:port)
289
+
290
+ params[:headers]['Date'] = Fog::Time.now.to_date_header
291
+ params[:headers]['Authorization'] = "GOOG1 #{@google_storage_access_key_id}:#{signature(params)}"
292
+
293
+ connection(scheme, host, port).request(params, &block)
294
+ end
295
+ end
296
+ end
297
+ end
298
+ end