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,52 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/google/models/dns/record'
3
+
4
+ module Fog
5
+ module DNS
6
+ class Google
7
+ class Records < Fog::Collection
8
+ model Fog::DNS::Google::Record
9
+
10
+ attribute :zone
11
+
12
+ ##
13
+ # Enumerates Resource Record Sets that have been created but not yet deleted
14
+ #
15
+ # @return [Array<Fog::DNS::Google::Record>] List of Resource Record Sets resources
16
+ def all
17
+ requires :zone
18
+
19
+ data = service.list_resource_record_sets(zone.identity).body['rrsets'] || []
20
+ load(data)
21
+ rescue Fog::Errors::NotFound
22
+ []
23
+ end
24
+
25
+ ##
26
+ # Fetches the representation of an existing Resource Record Set
27
+ #
28
+ # @param [String] name Resource Record Set name
29
+ # @param [String] type Resource Record Set type
30
+ # @return [Fog::DNS::Google::Record] Resource Record Set resource
31
+ def get(name, type)
32
+ requires :zone
33
+
34
+ records = service.list_resource_record_sets(zone.identity, { :name => name, :type => type }).body['rrsets'] || []
35
+ records.any? ? new(records.first) : nil
36
+ rescue Fog::Errors::NotFound
37
+ nil
38
+ end
39
+
40
+ ##
41
+ # Creates a new instance of a Resource Record Set
42
+ #
43
+ # @return [Fog::DNS::Google::Record] Resource Record Set resource
44
+ def new(attributes = {})
45
+ requires :zone
46
+
47
+ super({ :zone => zone }.merge!(attributes))
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,74 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module DNS
5
+ class Google
6
+ ##
7
+ # Managed Zone resource
8
+ #
9
+ # @see https://developers.google.com/cloud-dns/api/v1beta1/managedZones
10
+ class Zone < Fog::Model
11
+ identity :id
12
+
13
+ attribute :creation_time, :aliases => 'creationTime'
14
+ attribute :description
15
+ attribute :domain, :aliases => 'dnsName'
16
+ attribute :kind
17
+ attribute :name
18
+ attribute :nameservers, :aliases => 'nameServers'
19
+
20
+ ##
21
+ # Enumerates the list of Changes for the Managed Zone
22
+ #
23
+ # @return Array<Fog::DNS::Google::Change>] List of Changes for the Managed Zone
24
+ def changes
25
+ @changes = begin
26
+ Fog::DNS::Google::Changes.new(
27
+ :service => service,
28
+ :zone => self
29
+ )
30
+ end
31
+ end
32
+
33
+ ##
34
+ # Deletes a previously created Managed Zone
35
+ #
36
+ # @return [Boolean] If the Managed Zone has been deleted
37
+ def destroy
38
+ requires :identity
39
+
40
+ service.delete_managed_zone(self.identity)
41
+ true
42
+ end
43
+
44
+ ##
45
+ # Enumerates the list of Resource Record Sets for the Managed Zone
46
+ #
47
+ # @return Array<Fog::DNS::Google::Record>] List of Resource Record Sets for the Managed Zone
48
+ def records
49
+ @records = begin
50
+ Fog::DNS::Google::Records.new(
51
+ :service => service,
52
+ :zone => self
53
+ )
54
+ end
55
+ end
56
+
57
+ ##
58
+ # Creates a new Managed Zone
59
+ #
60
+ # @return [Fog::DNS::Google::Zone] Managed Zone
61
+ # @raise [Fog::Errors::Error] If Managed Zone already exists
62
+ def save
63
+ requires :name, :domain, :description
64
+
65
+ raise Fog::Errors::Error.new('Resaving an existing object may create a duplicate') if persisted?
66
+
67
+ data = service.create_managed_zone(self.name, self.domain, self.description)
68
+ merge_attributes(data.body)
69
+ self
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,34 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/google/models/dns/zone'
3
+
4
+ module Fog
5
+ module DNS
6
+ class Google
7
+ class Zones < Fog::Collection
8
+ model Fog::DNS::Google::Zone
9
+
10
+ ##
11
+ # Enumerates Managed Zones that have been created but not yet deleted
12
+ #
13
+ # @return [Array<Fog::DNS::Google::Zone>] List of Managed Zone resources
14
+ def all
15
+ data = service.list_managed_zones.body['managedZones'] || []
16
+ load(data)
17
+ end
18
+
19
+ ##
20
+ # Fetches the representation of an existing Managed Zone
21
+ #
22
+ # @param [String] name_or_id Managed Zone name or identity
23
+ # @return [Fog::DNS::Google::Zone] Managed Zone resource
24
+ def get(name_or_id)
25
+ if zone = service.get_managed_zone(name_or_id).body
26
+ new(zone)
27
+ end
28
+ rescue Fog::Errors::NotFound
29
+ nil
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,20 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Google
5
+ class Monitoring
6
+ ##
7
+ # A metricDescriptor defines the name, label keys, and data type of a particular metric.
8
+ #
9
+ # @see https://developers.google.com/cloud-monitoring/v2beta1/metricDescriptors
10
+ class MetricDescriptor < Fog::Model
11
+ identity :name
12
+
13
+ attribute :description
14
+ attribute :labels
15
+ attribute :project
16
+ attribute :type_descriptor, :aliases => 'typeDescriptor'
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,28 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/google/models/monitoring/metric_descriptor'
3
+
4
+ module Fog
5
+ module Google
6
+ class Monitoring
7
+ class MetricDescriptors < Fog::Collection
8
+ model Fog::Google::Monitoring::MetricDescriptor
9
+
10
+ ##
11
+ # Lists all Metric Descriptors.
12
+ #
13
+ # @param [Hash] options Optional query parameters.
14
+ # @option options [String] count Maximum number of time series descriptors per page. Used for pagination.
15
+ # @option options [String] page_token The pagination token, which is used to page through large result sets.
16
+ # @option options [String] query The query used to search against existing metrics. Separate keywords with a space;
17
+ # the service joins all keywords with AND, meaning that all keywords must match for a metric to be returned.
18
+ # If this field is omitted, all metrics are returned. If an empty string is passed with this field,
19
+ # no metrics are returned.
20
+ # @return [Array<Fog::Google::Monitoring::MetricDescriptor>] List of Metric Descriptors.
21
+ def all(options = {})
22
+ data = service.list_metric_descriptors(options).body['metrics'] || []
23
+ load(data)
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,17 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Google
5
+ class Monitoring
6
+ ##
7
+ # A time series is a collection of data points that represents the value of a metric of a project over time.
8
+ #
9
+ # @see https://developers.google.com/cloud-monitoring/v2beta1/timeseries
10
+ class Timeseries < Fog::Model
11
+ identity :time_series_desc, :aliases => 'timeseriesDesc'
12
+
13
+ attribute :points
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,31 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/google/models/monitoring/timeseries'
3
+
4
+ module Fog
5
+ module Google
6
+ class Monitoring
7
+ class TimeseriesCollection < Fog::Collection
8
+ model Fog::Google::Monitoring::Timeseries
9
+
10
+ ##
11
+ # Lists all Timeseries.
12
+ #
13
+ # @param [String] metric The name of the metric (Metric names are protocol-free URLs).
14
+ # @param [String] youngest End of the time interval (inclusive), which is expressed as an RFC 3339 timestamp.
15
+ # @param [Hash] options Optional query parameters.
16
+ # @option options [String] count Maximum number of time series descriptors per page. Used for pagination.
17
+ # @option options [String] labels A collection of labels for the matching time series.
18
+ # @option options [String] oldest Start of the time interval (exclusive), which is expressed as an RFC 3339
19
+ # timestamp.
20
+ # @options options [String] page_token The pagination token, which is used to page through large result sets.
21
+ # @options options [String] timespan Length of the time interval to query, which is an alternative way to
22
+ # declare the interval.
23
+ # @return [Array<Fog::Google::Monitoring::Timeseries>] List of Timeseries.
24
+ def all(metric, youngest, options = {})
25
+ data = service.list_timeseries(metric, youngest, options).body['timeseries'] || []
26
+ load(data)
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,20 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Google
5
+ class Monitoring
6
+ ##
7
+ # A time series is a collection of data points that represents the value of a metric of a project over time.
8
+ # The metric is described by the time-series descriptor. Each time-series descriptor is uniquely identified by
9
+ # its metric name and a set of labels.
10
+ #
11
+ # @see https://developers.google.com/cloud-monitoring/v2beta1/timeseriesDescriptors
12
+ class TimeseriesDescriptor < Fog::Model
13
+ identity :metric
14
+
15
+ attribute :labels
16
+ attribute :project
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,31 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/google/models/monitoring/timeseries_descriptor'
3
+
4
+ module Fog
5
+ module Google
6
+ class Monitoring
7
+ class TimeseriesDescriptors < Fog::Collection
8
+ model Fog::Google::Monitoring::TimeseriesDescriptor
9
+
10
+ ##
11
+ # Lists all Timeseries Descriptors.
12
+ #
13
+ # @param [String] metric The name of the metric (Metric names are protocol-free URLs).
14
+ # @param [String] youngest End of the time interval (inclusive), which is expressed as an RFC 3339 timestamp.
15
+ # @param [Hash] options Optional query parameters.
16
+ # @option options [String] count Maximum number of time series descriptors per page. Used for pagination.
17
+ # @option options [String] labels A collection of labels for the matching time series.
18
+ # @option options [String] oldest Start of the time interval (exclusive), which is expressed as an RFC 3339
19
+ # timestamp.
20
+ # @options options [String] page_token The pagination token, which is used to page through large result sets.
21
+ # @options options [String] timespan Length of the time interval to query, which is an alternative way to
22
+ # declare the interval.
23
+ # @return [Array<Fog::Google::Monitoring::TimeseriesDescriptor>] List of Timeseries Descriptors.
24
+ def all(metric, youngest, options = {})
25
+ data = service.list_timeseries_descriptors(metric, youngest, options).body['timeseries'] || []
26
+ load(data)
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,34 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Google
5
+ class SQL
6
+ ##
7
+ # A database instance backup run resource
8
+ #
9
+ # @see https://developers.google.com/cloud-sql/docs/admin-api/v1beta3/backupRuns
10
+ class BackupRun < Fog::Model
11
+ identity :backup_configuration, :aliases => 'backupConfiguration'
12
+
13
+ attribute :due_time, :aliases => 'dueTime'
14
+ attribute :end_time, :aliases => 'endTime'
15
+ attribute :enqueued_time, :aliases => 'enqueuedTime'
16
+ attribute :error
17
+ attribute :instance
18
+ attribute :kind
19
+ attribute :start_time, :aliases => 'startTime'
20
+ attribute :status
21
+
22
+ DONE_STATE = 'DONE'
23
+
24
+ ##
25
+ # Checks if the instance backup run is done
26
+ #
27
+ # @return [Boolean] True if the backup run is done; False otherwise
28
+ def ready?
29
+ self.state == DONE_STATE
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,38 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/google/models/sql/backup_run'
3
+
4
+ module Fog
5
+ module Google
6
+ class SQL
7
+ class BackupRuns < Fog::Collection
8
+ model Fog::Google::SQL::BackupRun
9
+
10
+ ##
11
+ # Lists all backup runs associated with a given instance and configuration
12
+ #
13
+ # @param [String] instance_id Instance ID
14
+ # @param [String] backup_configuration_id Backup Configuration ID
15
+ # @return [Array<Fog::Google::SQL::BackupRun>] List of Backup run resources
16
+ def all(instance_id, backup_configuration_id)
17
+ data = service.list_backup_runs(instance_id, backup_configuration_id).body['items'] || []
18
+ load(data)
19
+ end
20
+
21
+ ##
22
+ # Retrieves a resource containing information about a backup run
23
+ #
24
+ # @param [String] instance_id Instance ID
25
+ # @param [String] backup_configuration_id Backup Configuration ID
26
+ # @param [String] due_time The time when this run is due to start in RFC 3339 format
27
+ # @return [Fog::Google::SQL::BackupRun] Backup run resource
28
+ def get(instance_id, backup_configuration_id, due_time)
29
+ if backup_run = service.get_backup_run(instance_id, backup_configuration_id, due_time).body
30
+ new(backup_run)
31
+ end
32
+ rescue Fog::Errors::NotFound
33
+ nil
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,22 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Google
5
+ class SQL
6
+ ##
7
+ # A Google Cloud SQL service flag resource
8
+ #
9
+ # @see https://developers.google.com/cloud-sql/docs/admin-api/v1beta3/flags
10
+ class Flag < Fog::Model
11
+ identity :name
12
+
13
+ attribute :allowed_string_values, :aliases => 'allowedStringValues'
14
+ attribute :applies_to, :aliases => 'appliesTo'
15
+ attribute :kind
16
+ attribute :max_value, :aliases => 'maxValue'
17
+ attribute :min_value, :aliases => 'minValue'
18
+ attribute :type
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,21 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/google/models/sql/flag'
3
+
4
+ module Fog
5
+ module Google
6
+ class SQL
7
+ class Flags < Fog::Collection
8
+ model Fog::Google::SQL::Flag
9
+
10
+ ##
11
+ # List all available database flags
12
+ #
13
+ # @return [Array<Fog::Google::SQL::Flag>] List of flags
14
+ def all
15
+ data = service.list_flags.body['items'] || []
16
+ load(data)
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,353 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Google
5
+ class SQL
6
+ class Instance < Fog::Model
7
+ identity :instance
8
+
9
+ attribute :current_disk_size, :aliases => 'currentDiskSize'
10
+ attribute :database_version, :aliases => 'databaseVersion'
11
+ attribute :etag
12
+ attribute :ip_addresses, :aliases => 'ipAddresses'
13
+ attribute :kind
14
+ attribute :max_disk_size, :aliases => 'maxDiskSize'
15
+ attribute :project
16
+ attribute :region
17
+ attribute :server_ca_cert, :aliases => 'serverCaCert'
18
+ attribute :settings
19
+ attribute :state
20
+
21
+ # These attributes are not available in the representation of an 'Instance' returned by the Google SQL API.
22
+ attribute :activation_policy
23
+ attribute :autorized_gae_applications
24
+ attribute :backup_configuration
25
+ attribute :database_flags
26
+ attribute :ip_configuration_authorized_networks
27
+ attribute :ip_configuration_enabled
28
+ attribute :ip_configuration_require_ssl
29
+ attribute :location_preference_zone_follow_gae_application
30
+ attribute :location_preference_zone
31
+ attribute :pricing_plan
32
+ attribute :replication_type
33
+ attribute :settings_version
34
+ attribute :tier
35
+
36
+ MAINTENANCE_STATE = 'MAINTENANCE'
37
+ PENDING_CREATE_STATE = 'PENDING_CREATE'
38
+ RUNNABLE_STATE = 'RUNNABLE'
39
+ SUSPENDED_STATE = 'SUSPENDED'
40
+ UNKNOWN_STATE = 'UNKNOWN_STATE'
41
+
42
+ ##
43
+ # Returns the activation policy for this instance
44
+ #
45
+ # @return [String] The activation policy for this instance
46
+ def activation_policy
47
+ self.settings['activationPolicy']
48
+ end
49
+
50
+ ##
51
+ # Returns the AppEngine app ids that can access this instance
52
+ #
53
+ # @return [Array<String>] The AppEngine app ids that can access this instance
54
+ def autorized_gae_applications
55
+ self.settings['authorizedGaeApplications']
56
+ end
57
+
58
+ ##
59
+ # Returns the daily backup configuration for the instance
60
+ #
61
+ # @return [Array<Hash>] The daily backup configuration for the instance
62
+ def backup_configuration
63
+ self.settings['backupConfiguration']
64
+ end
65
+
66
+ ##
67
+ # Creates a Cloud SQL instance as a clone of the source instance
68
+ #
69
+ # @param [String] destination_name Name of the Cloud SQL instance to be created as a clone
70
+ # @param [Hash] options Method options
71
+ # @option options [String] :log_filename Name of the binary log file for a Cloud SQL instance
72
+ # @option options [Integer] :log_position Position (offset) within the binary log file
73
+ # @option options [Boolean] :async If the operation must be performed asynchronously (true by default)
74
+ # @return [Fog::Google::SQL::Operation] A Operation resource
75
+ def clone(destination_name, options = {})
76
+ requires :identity
77
+
78
+ data = service.clone_instance(self.identity, destination_name, options)
79
+ operation = Fog::Google::SQL::Operations.new(:service => service).get(self.instance, data.body['operation'])
80
+ unless options.fetch(:async, true)
81
+ operation.wait_for { ready? }
82
+ end
83
+ operation
84
+ end
85
+
86
+ ##
87
+ # Creates a Cloud SQL instance
88
+ #
89
+ # @return [Fog::Google::SQL::Instance] Instance resource
90
+ def create
91
+ requires :identity
92
+
93
+ data = service.insert_instance(self.identity, self.attributes[:tier], self.attributes)
94
+ operation = Fog::Google::SQL::Operations.new(:service => service).get(self.instance, data.body['operation'])
95
+ operation.wait_for { !pending? }
96
+ reload
97
+ end
98
+
99
+ ##
100
+ # Returns the database flags passed to the instance at startup
101
+ #
102
+ # @return [Array<Hash>] The database flags passed to the instance at startup
103
+ def database_flags
104
+ self.settings['databaseFlags']
105
+ end
106
+
107
+ ##
108
+ # Deletes a Cloud SQL instance
109
+ #
110
+ # @param [Hash] options Method options
111
+ # @option options [Boolean] :async If the operation must be performed asynchronously (true by default)
112
+ # @return [Fog::Google::SQL::Operation] A Operation resource
113
+ def destroy(options = {})
114
+ requires :identity
115
+
116
+ data = service.delete_instance(self.identity)
117
+ operation = Fog::Google::SQL::Operations.new(:service => service).get(self.instance, data.body['operation'])
118
+ unless options.fetch(:async, true)
119
+ # DISABLED: A delete instance operation never reachs a 'DONE' state (bug?)
120
+ # operation.wait_for { ready? }
121
+ end
122
+ operation
123
+ end
124
+
125
+ ##
126
+ # Exports data from a Cloud SQL instance to a Google Cloud Storage bucket as a MySQL dump file
127
+ #
128
+ # @param [String] uri The path to the file in Google Cloud Storage where the export will be stored,
129
+ # or where it was already stored
130
+ # @param [Hash] options Method options
131
+ # @option options [Array<String>] :databases Databases (for example, guestbook) from which the export is made.
132
+ # If unspecified, all databases are exported.
133
+ # @option options [Array<String>] :tables Tables to export, or that were exported, from the specified database.
134
+ # If you specify tables, specify one and only one database.
135
+ # @option options [Boolean] :async If the operation must be performed asynchronously (true by default)
136
+ # @return [Fog::Google::SQL::Operation] A Operation resource
137
+ def export(uri, options = {})
138
+ requires :identity
139
+
140
+ data = service.export_instance(self.identity, uri, options)
141
+ operation = Fog::Google::SQL::Operations.new(:service => service).get(self.instance, data.body['operation'])
142
+ unless options.fetch(:async, true)
143
+ operation.wait_for { ready? }
144
+ end
145
+ operation
146
+ end
147
+
148
+ ##
149
+ # Imports data into a Cloud SQL instance from a MySQL dump file in Google Cloud Storage
150
+ #
151
+ # @param [Array<String>] uri A path to the MySQL dump file in Google Cloud Storage from which the import is
152
+ # made
153
+ # @param [Hash] options Method options
154
+ # @option options [String] :database The database (for example, guestbook) to which the import is made.
155
+ # If not set, it is assumed that the database is specified in the file to be imported.
156
+ # @option options [Boolean] :async If the operation must be performed asynchronously (true by default)
157
+ # @return [Fog::Google::SQL::Operation] A Operation resource
158
+ def import(uri, options = {})
159
+ requires :identity
160
+
161
+ data = service.import_instance(self.identity, uri, options)
162
+ operation = Fog::Google::SQL::Operations.new(:service => service).get(self.instance, data.body['operation'])
163
+ unless options.fetch(:async, true)
164
+ operation.wait_for { ready? }
165
+ end
166
+ operation
167
+ end
168
+
169
+ ##
170
+ # Returns the list of external networks that are allowed to connect to the instance using the IP
171
+ #
172
+ # @return [Array<String>] The list of external networks that are allowed to connect to the instance using the IP
173
+ def ip_configuration_authorized_networks
174
+ self.settings.fetch('ipConfiguration', {})['authorizedNetworks']
175
+ end
176
+
177
+ ##
178
+ # Returns whether the instance should be assigned an IP address or not
179
+ #
180
+ # @return [Boolean] Whether the instance should be assigned an IP address or not
181
+ def ip_configuration_enabled
182
+ self.settings.fetch('ipConfiguration', {})['enabled']
183
+ end
184
+
185
+ ##
186
+ # Returns whether the mysqld should default to 'REQUIRE X509' for users connecting over IP
187
+ #
188
+ # @return [Boolean] Whether the mysqld should default to 'REQUIRE X509' for users connecting over IP
189
+ def ip_configuration_require_ssl
190
+ self.settings.fetch('ipConfiguration', {})['requireSsl']
191
+ end
192
+
193
+ ##
194
+ # Returns the AppEngine application to follow
195
+ #
196
+ # @return [String] The AppEngine application to follow
197
+ def location_preference_zone_follow_gae_application
198
+ self.settings.fetch('locationPreference', {})['followGaeApplication']
199
+ end
200
+
201
+ ##
202
+ # Returns the preferred Compute Engine zone
203
+ #
204
+ # @return [String] The preferred Compute Engine zone
205
+ def location_preference_zone
206
+ self.settings.fetch('locationPreference', {})['zone']
207
+ end
208
+
209
+ ##
210
+ # Returns the pricing plan for this instance
211
+ #
212
+ # @return [String] The pricing plan for this instance
213
+ def pricing_plan
214
+ self.settings['pricingPlan']
215
+ end
216
+
217
+ ##
218
+ # Checks if the instance is running
219
+ #
220
+ # @return [Boolean] True if the instance is running; False otherwise
221
+ def ready?
222
+ self.state == RUNNABLE_STATE
223
+ end
224
+
225
+ ##
226
+ # Returns the type of replication this instance uses
227
+ #
228
+ # @return [String] The type of replication this instance uses
229
+ def replication_type
230
+ self.settings['replicationType']
231
+ end
232
+
233
+ ##
234
+ # Deletes all client certificates and generates a new server SSL certificate for the instance
235
+ #
236
+ # @param [Hash] options Method options
237
+ # @option options [Boolean] :async If the operation must be performed asynchronously (true by default)
238
+ # @return [Fog::Google::SQL::Operation] A Operation resource
239
+ def reset_ssl_config(options = {})
240
+ requires :identity
241
+
242
+ data = service.reset_instance_ssl_config(self.identity)
243
+ operation = Fog::Google::SQL::Operations.new(:service => service).get(self.instance, data.body['operation'])
244
+ unless options.fetch(:async, true)
245
+ operation.wait_for { ready? }
246
+ end
247
+ operation
248
+ end
249
+
250
+ ##
251
+ # Restarts a Cloud SQL instance
252
+ #
253
+ # @param [Hash] options Method options
254
+ # @option options [Boolean] :async If the operation must be performed asynchronously (true by default)
255
+ # @return [Fog::Google::SQL::Operation] A Operation resource
256
+ def restart(options = {})
257
+ requires :identity
258
+
259
+ data = service.restart_instance(self.identity)
260
+ operation = Fog::Google::SQL::Operations.new(:service => service).get(self.instance, data.body['operation'])
261
+ unless options.fetch(:async, true)
262
+ operation.wait_for { ready? }
263
+ end
264
+ operation
265
+ end
266
+
267
+ ##
268
+ # Restores a backup of a Cloud SQL instance
269
+ #
270
+ # @param [String] backup_configuration The identifier of the backup configuration
271
+ # @param [String] due_time The time when this run is due to start in RFC 3339 format
272
+ # @param [Hash] options Method options
273
+ # @option options [Boolean] :async If the operation must be performed asynchronously (true by default)
274
+ # @return [Fog::Google::SQL::Operation] A Operation resource
275
+ def restore_backup(backup_configuration, due_time, options = {})
276
+ requires :identity
277
+
278
+ data = service.restore_instance_backup(self.identity, backup_configuration, due_time)
279
+ operation = Fog::Google::SQL::Operations.new(:service => service).get(self.instance, data.body['operation'])
280
+ unless options.fetch(:async, true)
281
+ operation.wait_for { ready? }
282
+ end
283
+ operation
284
+ end
285
+
286
+ ##
287
+ # Saves a Cloud SQL instance
288
+ #
289
+ # @return [Fog::Google::SQL::Instance] Instance resource
290
+ def save
291
+ self.etag ? update : create
292
+ end
293
+
294
+ ##
295
+ # Sets the password for the root user
296
+ #
297
+ # @param [String] password The password for the root user
298
+ # @param [Hash] options Method options
299
+ # @option options [Boolean] :async If the operation must be performed asynchronously (true by default)
300
+ # @return [Fog::Google::SQL::Operation] A Operation resource
301
+ def set_root_password(password, options = {})
302
+ requires :identity
303
+
304
+ data = service.set_instance_root_password(self.identity, password)
305
+ operation = Fog::Google::SQL::Operations.new(:service => service).get(self.instance, data.body['operation'])
306
+ unless options.fetch(:async, true)
307
+ operation.wait_for { ready? }
308
+ end
309
+ operation
310
+ end
311
+
312
+ ##
313
+ # Returns the version of instance settings
314
+ #
315
+ # @return [String] The version of instance settings
316
+ def settings_version
317
+ self.settings['settingsVersion']
318
+ end
319
+
320
+ ##
321
+ # Lists all of the current SSL certificates for the instance
322
+ #
323
+ # @return [Array<Fog::Google::SQL::SslCert>] List of SSL certificate resources
324
+ def ssl_certs
325
+ requires :identity
326
+
327
+ service.ssl_certs.all(self.identity)
328
+ end
329
+
330
+ ##
331
+ # Returns the tier of service for this instance
332
+ #
333
+ # @return [String] The tier of service for this instance
334
+ def tier
335
+ self.settings['tier']
336
+ end
337
+
338
+ ##
339
+ # Updates settings of a Cloud SQL instance
340
+ #
341
+ # @return [Fog::Google::SQL::Instance] Instance resource
342
+ def update
343
+ requires :identity
344
+
345
+ data = service.update_instance(self.identity, self.settings_version, self.tier, self.attributes)
346
+ operation = Fog::Google::SQL::Operations.new(:service => service).get(self.instance, data.body['operation'])
347
+ operation.wait_for { !pending? }
348
+ reload
349
+ end
350
+ end
351
+ end
352
+ end
353
+ end