gitlab-fog-google 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (556) hide show
  1. checksums.yaml +7 -0
  2. data/.codecov.yml +2 -0
  3. data/.editorconfig +11 -0
  4. data/.fog.example +25 -0
  5. data/.gitignore +20 -0
  6. data/.gitlab-ci.yml +13 -0
  7. data/.hound.yml +2 -0
  8. data/.rubocop.yml +255 -0
  9. data/.ruby-gemset +1 -0
  10. data/.travis.yml +33 -0
  11. data/CHANGELOG.md +464 -0
  12. data/CONTRIBUTING.md +175 -0
  13. data/CONTRIBUTORS.md +95 -0
  14. data/Gemfile +13 -0
  15. data/LICENSE.md +20 -0
  16. data/MIGRATING.md +1 -0
  17. data/README.md +177 -0
  18. data/Rakefile +19 -0
  19. data/SECURITY.md +16 -0
  20. data/ci/.gitignore +1 -0
  21. data/ci/README.md +65 -0
  22. data/ci/build-head-pipeline.yml +173 -0
  23. data/ci/credentials.yml.template +28 -0
  24. data/ci/docker-image/Dockerfile +18 -0
  25. data/ci/integration-pipeline.yml +226 -0
  26. data/ci/pipeline-dev.yml +58 -0
  27. data/ci/tasks/run-int.sh +53 -0
  28. data/ci/tasks/run-int.yml +18 -0
  29. data/ci/tasks/utils.sh +10 -0
  30. data/examples/backend_services.rb +23 -0
  31. data/examples/bootstrap.rb +27 -0
  32. data/examples/create_instance.rb +73 -0
  33. data/examples/create_instance_with_attached_disk.rb +53 -0
  34. data/examples/dns/project.rb +7 -0
  35. data/examples/dns/zones.rb +43 -0
  36. data/examples/get_list_images.rb +42 -0
  37. data/examples/get_list_snapshots.rb +28 -0
  38. data/examples/image_create.rb +17 -0
  39. data/examples/l7_load_balance.rb +79 -0
  40. data/examples/load-balance.rb +116 -0
  41. data/examples/metadata.rb +40 -0
  42. data/examples/monitoring/metric_descriptors.rb +24 -0
  43. data/examples/monitoring/monitored_resource_descriptors.rb +24 -0
  44. data/examples/monitoring/timeseries_collection.rb +32 -0
  45. data/examples/network.rb +55 -0
  46. data/examples/precreated_client.rb +24 -0
  47. data/examples/pubsub/subscriptions.rb +54 -0
  48. data/examples/pubsub/topics.rb +33 -0
  49. data/examples/sql/flags.rb +11 -0
  50. data/examples/sql/instances.rb +38 -0
  51. data/examples/sql/operations.rb +24 -0
  52. data/examples/sql/ssl_certs.rb +32 -0
  53. data/examples/sql/tiers.rb +11 -0
  54. data/examples/storage.rb +49 -0
  55. data/examples/storage_json.rb +37 -0
  56. data/gitlab-fog-google.gemspec +44 -0
  57. data/lib/fog/bin/google.rb +97 -0
  58. data/lib/fog/compute/google.rb +304 -0
  59. data/lib/fog/compute/google/mock.rb +845 -0
  60. data/lib/fog/compute/google/models/address.rb +133 -0
  61. data/lib/fog/compute/google/models/addresses.rb +63 -0
  62. data/lib/fog/compute/google/models/backend_service.rb +86 -0
  63. data/lib/fog/compute/google/models/backend_services.rb +24 -0
  64. data/lib/fog/compute/google/models/disk.rb +155 -0
  65. data/lib/fog/compute/google/models/disk_type.rb +27 -0
  66. data/lib/fog/compute/google/models/disk_types.rb +42 -0
  67. data/lib/fog/compute/google/models/disks.rb +88 -0
  68. data/lib/fog/compute/google/models/firewall.rb +94 -0
  69. data/lib/fog/compute/google/models/firewalls.rb +24 -0
  70. data/lib/fog/compute/google/models/forwarding_rule.rb +79 -0
  71. data/lib/fog/compute/google/models/forwarding_rules.rb +44 -0
  72. data/lib/fog/compute/google/models/global_address.rb +58 -0
  73. data/lib/fog/compute/google/models/global_addresses.rb +46 -0
  74. data/lib/fog/compute/google/models/global_forwarding_rule.rb +78 -0
  75. data/lib/fog/compute/google/models/global_forwarding_rules.rb +24 -0
  76. data/lib/fog/compute/google/models/http_health_check.rb +104 -0
  77. data/lib/fog/compute/google/models/http_health_checks.rb +24 -0
  78. data/lib/fog/compute/google/models/image.rb +81 -0
  79. data/lib/fog/compute/google/models/images.rb +109 -0
  80. data/lib/fog/compute/google/models/instance_group.rb +90 -0
  81. data/lib/fog/compute/google/models/instance_group_manager.rb +51 -0
  82. data/lib/fog/compute/google/models/instance_group_managers.rb +45 -0
  83. data/lib/fog/compute/google/models/instance_groups.rb +63 -0
  84. data/lib/fog/compute/google/models/instance_template.rb +47 -0
  85. data/lib/fog/compute/google/models/instance_templates.rb +24 -0
  86. data/lib/fog/compute/google/models/machine_type.rb +23 -0
  87. data/lib/fog/compute/google/models/machine_types.rb +46 -0
  88. data/lib/fog/compute/google/models/network.rb +60 -0
  89. data/lib/fog/compute/google/models/networks.rb +24 -0
  90. data/lib/fog/compute/google/models/operation.rb +73 -0
  91. data/lib/fog/compute/google/models/operations.rb +45 -0
  92. data/lib/fog/compute/google/models/project.rb +28 -0
  93. data/lib/fog/compute/google/models/projects.rb +19 -0
  94. data/lib/fog/compute/google/models/region.rb +30 -0
  95. data/lib/fog/compute/google/models/regions.rb +24 -0
  96. data/lib/fog/compute/google/models/route.rb +49 -0
  97. data/lib/fog/compute/google/models/routes.rb +24 -0
  98. data/lib/fog/compute/google/models/server.rb +604 -0
  99. data/lib/fog/compute/google/models/servers.rb +120 -0
  100. data/lib/fog/compute/google/models/snapshot.rb +62 -0
  101. data/lib/fog/compute/google/models/snapshots.rb +32 -0
  102. data/lib/fog/compute/google/models/ssl_certificate.rb +42 -0
  103. data/lib/fog/compute/google/models/ssl_certificates.rb +24 -0
  104. data/lib/fog/compute/google/models/subnetwork.rb +83 -0
  105. data/lib/fog/compute/google/models/subnetworks.rb +43 -0
  106. data/lib/fog/compute/google/models/target_http_proxies.rb +24 -0
  107. data/lib/fog/compute/google/models/target_http_proxy.rb +73 -0
  108. data/lib/fog/compute/google/models/target_https_proxies.rb +24 -0
  109. data/lib/fog/compute/google/models/target_https_proxy.rb +105 -0
  110. data/lib/fog/compute/google/models/target_instance.rb +67 -0
  111. data/lib/fog/compute/google/models/target_instances.rb +46 -0
  112. data/lib/fog/compute/google/models/target_pool.rb +171 -0
  113. data/lib/fog/compute/google/models/target_pools.rb +43 -0
  114. data/lib/fog/compute/google/models/url_map.rb +121 -0
  115. data/lib/fog/compute/google/models/url_maps.rb +24 -0
  116. data/lib/fog/compute/google/models/zone.rb +25 -0
  117. data/lib/fog/compute/google/models/zones.rb +24 -0
  118. data/lib/fog/compute/google/real.rb +24 -0
  119. data/lib/fog/compute/google/requests/abandon_instances.rb +28 -0
  120. data/lib/fog/compute/google/requests/add_backend_service_backends.rb +19 -0
  121. data/lib/fog/compute/google/requests/add_instance_group_instances.rb +37 -0
  122. data/lib/fog/compute/google/requests/add_server_access_config.rb +32 -0
  123. data/lib/fog/compute/google/requests/add_target_pool_health_checks.rb +32 -0
  124. data/lib/fog/compute/google/requests/add_target_pool_instances.rb +30 -0
  125. data/lib/fog/compute/google/requests/attach_disk.rb +22 -0
  126. data/lib/fog/compute/google/requests/create_disk_snapshot.rb +24 -0
  127. data/lib/fog/compute/google/requests/delete_address.rb +24 -0
  128. data/lib/fog/compute/google/requests/delete_backend_service.rb +19 -0
  129. data/lib/fog/compute/google/requests/delete_disk.rb +25 -0
  130. data/lib/fog/compute/google/requests/delete_firewall.rb +19 -0
  131. data/lib/fog/compute/google/requests/delete_forwarding_rule.rb +20 -0
  132. data/lib/fog/compute/google/requests/delete_global_address.rb +19 -0
  133. data/lib/fog/compute/google/requests/delete_global_forwarding_rule.rb +19 -0
  134. data/lib/fog/compute/google/requests/delete_global_operation.rb +20 -0
  135. data/lib/fog/compute/google/requests/delete_http_health_check.rb +19 -0
  136. data/lib/fog/compute/google/requests/delete_image.rb +19 -0
  137. data/lib/fog/compute/google/requests/delete_instance_group.rb +19 -0
  138. data/lib/fog/compute/google/requests/delete_instance_group_manager.rb +19 -0
  139. data/lib/fog/compute/google/requests/delete_instance_template.rb +19 -0
  140. data/lib/fog/compute/google/requests/delete_network.rb +19 -0
  141. data/lib/fog/compute/google/requests/delete_region_operation.rb +22 -0
  142. data/lib/fog/compute/google/requests/delete_route.rb +23 -0
  143. data/lib/fog/compute/google/requests/delete_server.rb +19 -0
  144. data/lib/fog/compute/google/requests/delete_server_access_config.rb +22 -0
  145. data/lib/fog/compute/google/requests/delete_snapshot.rb +19 -0
  146. data/lib/fog/compute/google/requests/delete_ssl_certificate.rb +19 -0
  147. data/lib/fog/compute/google/requests/delete_subnetwork.rb +31 -0
  148. data/lib/fog/compute/google/requests/delete_target_http_proxy.rb +19 -0
  149. data/lib/fog/compute/google/requests/delete_target_https_proxy.rb +19 -0
  150. data/lib/fog/compute/google/requests/delete_target_instance.rb +20 -0
  151. data/lib/fog/compute/google/requests/delete_target_pool.rb +20 -0
  152. data/lib/fog/compute/google/requests/delete_url_map.rb +19 -0
  153. data/lib/fog/compute/google/requests/delete_zone_operation.rb +22 -0
  154. data/lib/fog/compute/google/requests/deprecate_image.rb +22 -0
  155. data/lib/fog/compute/google/requests/detach_disk.rb +20 -0
  156. data/lib/fog/compute/google/requests/expand_subnetwork_ip_cidr_range.rb +38 -0
  157. data/lib/fog/compute/google/requests/get_address.rb +24 -0
  158. data/lib/fog/compute/google/requests/get_backend_service.rb +19 -0
  159. data/lib/fog/compute/google/requests/get_backend_service_health.rb +24 -0
  160. data/lib/fog/compute/google/requests/get_disk.rb +24 -0
  161. data/lib/fog/compute/google/requests/get_disk_type.rb +19 -0
  162. data/lib/fog/compute/google/requests/get_firewall.rb +19 -0
  163. data/lib/fog/compute/google/requests/get_forwarding_rule.rb +22 -0
  164. data/lib/fog/compute/google/requests/get_global_address.rb +19 -0
  165. data/lib/fog/compute/google/requests/get_global_forwarding_rule.rb +19 -0
  166. data/lib/fog/compute/google/requests/get_global_operation.rb +23 -0
  167. data/lib/fog/compute/google/requests/get_http_health_check.rb +19 -0
  168. data/lib/fog/compute/google/requests/get_image.rb +20 -0
  169. data/lib/fog/compute/google/requests/get_image_from_family.rb +26 -0
  170. data/lib/fog/compute/google/requests/get_instance_group.rb +19 -0
  171. data/lib/fog/compute/google/requests/get_instance_group_manager.rb +19 -0
  172. data/lib/fog/compute/google/requests/get_instance_template.rb +19 -0
  173. data/lib/fog/compute/google/requests/get_machine_type.rb +20 -0
  174. data/lib/fog/compute/google/requests/get_network.rb +19 -0
  175. data/lib/fog/compute/google/requests/get_project.rb +19 -0
  176. data/lib/fog/compute/google/requests/get_region.rb +19 -0
  177. data/lib/fog/compute/google/requests/get_region_operation.rb +20 -0
  178. data/lib/fog/compute/google/requests/get_route.rb +22 -0
  179. data/lib/fog/compute/google/requests/get_server.rb +19 -0
  180. data/lib/fog/compute/google/requests/get_server_serial_port_output.rb +38 -0
  181. data/lib/fog/compute/google/requests/get_snapshot.rb +20 -0
  182. data/lib/fog/compute/google/requests/get_ssl_certificate.rb +19 -0
  183. data/lib/fog/compute/google/requests/get_subnetwork.rb +29 -0
  184. data/lib/fog/compute/google/requests/get_target_http_proxy.rb +19 -0
  185. data/lib/fog/compute/google/requests/get_target_https_proxy.rb +19 -0
  186. data/lib/fog/compute/google/requests/get_target_instance.rb +20 -0
  187. data/lib/fog/compute/google/requests/get_target_pool.rb +20 -0
  188. data/lib/fog/compute/google/requests/get_target_pool_health.rb +24 -0
  189. data/lib/fog/compute/google/requests/get_url_map.rb +19 -0
  190. data/lib/fog/compute/google/requests/get_zone.rb +19 -0
  191. data/lib/fog/compute/google/requests/get_zone_operation.rb +25 -0
  192. data/lib/fog/compute/google/requests/insert_address.rb +30 -0
  193. data/lib/fog/compute/google/requests/insert_backend_service.rb +23 -0
  194. data/lib/fog/compute/google/requests/insert_disk.rb +48 -0
  195. data/lib/fog/compute/google/requests/insert_firewall.rb +65 -0
  196. data/lib/fog/compute/google/requests/insert_forwarding_rule.rb +29 -0
  197. data/lib/fog/compute/google/requests/insert_global_address.rb +25 -0
  198. data/lib/fog/compute/google/requests/insert_global_forwarding_rule.rb +26 -0
  199. data/lib/fog/compute/google/requests/insert_http_health_check.rb +24 -0
  200. data/lib/fog/compute/google/requests/insert_image.rb +23 -0
  201. data/lib/fog/compute/google/requests/insert_instance_group.rb +37 -0
  202. data/lib/fog/compute/google/requests/insert_instance_group_manager.rb +31 -0
  203. data/lib/fog/compute/google/requests/insert_instance_template.rb +38 -0
  204. data/lib/fog/compute/google/requests/insert_network.rb +34 -0
  205. data/lib/fog/compute/google/requests/insert_route.rb +35 -0
  206. data/lib/fog/compute/google/requests/insert_server.rb +122 -0
  207. data/lib/fog/compute/google/requests/insert_ssl_certificate.rb +27 -0
  208. data/lib/fog/compute/google/requests/insert_subnetwork.rb +61 -0
  209. data/lib/fog/compute/google/requests/insert_target_http_proxy.rb +26 -0
  210. data/lib/fog/compute/google/requests/insert_target_https_proxy.rb +29 -0
  211. data/lib/fog/compute/google/requests/insert_target_instance.rb +25 -0
  212. data/lib/fog/compute/google/requests/insert_target_pool.rb +22 -0
  213. data/lib/fog/compute/google/requests/insert_url_map.rb +37 -0
  214. data/lib/fog/compute/google/requests/invalidate_url_map_cache.rb +24 -0
  215. data/lib/fog/compute/google/requests/list_addresses.rb +28 -0
  216. data/lib/fog/compute/google/requests/list_aggregated_addresses.rb +23 -0
  217. data/lib/fog/compute/google/requests/list_aggregated_disk_types.rb +24 -0
  218. data/lib/fog/compute/google/requests/list_aggregated_disks.rb +32 -0
  219. data/lib/fog/compute/google/requests/list_aggregated_forwarding_rules.rb +24 -0
  220. data/lib/fog/compute/google/requests/list_aggregated_instance_group_managers.rb +26 -0
  221. data/lib/fog/compute/google/requests/list_aggregated_instance_groups.rb +19 -0
  222. data/lib/fog/compute/google/requests/list_aggregated_machine_types.rb +24 -0
  223. data/lib/fog/compute/google/requests/list_aggregated_servers.rb +24 -0
  224. data/lib/fog/compute/google/requests/list_aggregated_subnetworks.rb +36 -0
  225. data/lib/fog/compute/google/requests/list_aggregated_target_instances.rb +26 -0
  226. data/lib/fog/compute/google/requests/list_aggregated_target_pools.rb +26 -0
  227. data/lib/fog/compute/google/requests/list_backend_services.rb +22 -0
  228. data/lib/fog/compute/google/requests/list_disk_types.rb +24 -0
  229. data/lib/fog/compute/google/requests/list_disks.rb +28 -0
  230. data/lib/fog/compute/google/requests/list_firewalls.rb +24 -0
  231. data/lib/fog/compute/google/requests/list_forwarding_rules.rb +25 -0
  232. data/lib/fog/compute/google/requests/list_global_addresses.rb +26 -0
  233. data/lib/fog/compute/google/requests/list_global_forwarding_rules.rb +24 -0
  234. data/lib/fog/compute/google/requests/list_global_operations.rb +27 -0
  235. data/lib/fog/compute/google/requests/list_http_health_checks.rb +24 -0
  236. data/lib/fog/compute/google/requests/list_images.rb +25 -0
  237. data/lib/fog/compute/google/requests/list_instance_group_instances.rb +21 -0
  238. data/lib/fog/compute/google/requests/list_instance_group_managers.rb +22 -0
  239. data/lib/fog/compute/google/requests/list_instance_groups.rb +19 -0
  240. data/lib/fog/compute/google/requests/list_instance_templates.rb +26 -0
  241. data/lib/fog/compute/google/requests/list_machine_types.rb +25 -0
  242. data/lib/fog/compute/google/requests/list_networks.rb +24 -0
  243. data/lib/fog/compute/google/requests/list_region_operations.rb +29 -0
  244. data/lib/fog/compute/google/requests/list_regions.rb +23 -0
  245. data/lib/fog/compute/google/requests/list_routes.rb +28 -0
  246. data/lib/fog/compute/google/requests/list_servers.rb +24 -0
  247. data/lib/fog/compute/google/requests/list_snapshots.rb +22 -0
  248. data/lib/fog/compute/google/requests/list_ssl_certificates.rb +26 -0
  249. data/lib/fog/compute/google/requests/list_subnetworks.rb +39 -0
  250. data/lib/fog/compute/google/requests/list_target_http_proxies.rb +25 -0
  251. data/lib/fog/compute/google/requests/list_target_https_proxies.rb +24 -0
  252. data/lib/fog/compute/google/requests/list_target_instances.rb +27 -0
  253. data/lib/fog/compute/google/requests/list_target_pools.rb +26 -0
  254. data/lib/fog/compute/google/requests/list_url_maps.rb +25 -0
  255. data/lib/fog/compute/google/requests/list_zone_operations.rb +28 -0
  256. data/lib/fog/compute/google/requests/list_zones.rb +26 -0
  257. data/lib/fog/compute/google/requests/patch_firewall.rb +27 -0
  258. data/lib/fog/compute/google/requests/patch_url_map.rb +21 -0
  259. data/lib/fog/compute/google/requests/recreate_instances.rb +28 -0
  260. data/lib/fog/compute/google/requests/remove_instance_group_instances.rb +37 -0
  261. data/lib/fog/compute/google/requests/remove_target_pool_health_checks.rb +30 -0
  262. data/lib/fog/compute/google/requests/remove_target_pool_instance.rb +30 -0
  263. data/lib/fog/compute/google/requests/remove_target_pool_instances.rb +30 -0
  264. data/lib/fog/compute/google/requests/reset_server.rb +19 -0
  265. data/lib/fog/compute/google/requests/reset_windows_password.rb +154 -0
  266. data/lib/fog/compute/google/requests/set_common_instance_metadata.rb +23 -0
  267. data/lib/fog/compute/google/requests/set_forwarding_rule_target.rb +23 -0
  268. data/lib/fog/compute/google/requests/set_global_forwarding_rule_target.rb +22 -0
  269. data/lib/fog/compute/google/requests/set_instance_template.rb +28 -0
  270. data/lib/fog/compute/google/requests/set_server_disk_auto_delete.rb +26 -0
  271. data/lib/fog/compute/google/requests/set_server_machine_type.rb +23 -0
  272. data/lib/fog/compute/google/requests/set_server_metadata.rb +39 -0
  273. data/lib/fog/compute/google/requests/set_server_scheduling.rb +24 -0
  274. data/lib/fog/compute/google/requests/set_server_tags.rb +25 -0
  275. data/lib/fog/compute/google/requests/set_snapshot_labels.rb +25 -0
  276. data/lib/fog/compute/google/requests/set_subnetwork_private_ip_google_access.rb +42 -0
  277. data/lib/fog/compute/google/requests/set_target_http_proxy_url_map.rb +24 -0
  278. data/lib/fog/compute/google/requests/set_target_https_proxy_ssl_certificates.rb +24 -0
  279. data/lib/fog/compute/google/requests/set_target_https_proxy_url_map.rb +24 -0
  280. data/lib/fog/compute/google/requests/set_target_pool_backup.rb +31 -0
  281. data/lib/fog/compute/google/requests/start_server.rb +19 -0
  282. data/lib/fog/compute/google/requests/stop_server.rb +19 -0
  283. data/lib/fog/compute/google/requests/update_firewall.rb +49 -0
  284. data/lib/fog/compute/google/requests/update_http_health_check.rb +25 -0
  285. data/lib/fog/compute/google/requests/update_url_map.rb +28 -0
  286. data/lib/fog/compute/google/requests/validate_url_map.rb +24 -0
  287. data/lib/fog/dns/google.rb +67 -0
  288. data/lib/fog/dns/google/mock.rb +33 -0
  289. data/lib/fog/dns/google/models/change.rb +38 -0
  290. data/lib/fog/dns/google/models/changes.rb +50 -0
  291. data/lib/fog/dns/google/models/project.rb +73 -0
  292. data/lib/fog/dns/google/models/projects.rb +23 -0
  293. data/lib/fog/dns/google/models/record.rb +108 -0
  294. data/lib/fog/dns/google/models/records.rb +53 -0
  295. data/lib/fog/dns/google/models/zone.rb +72 -0
  296. data/lib/fog/dns/google/models/zones.rb +32 -0
  297. data/lib/fog/dns/google/real.rb +19 -0
  298. data/lib/fog/dns/google/requests/create_change.rb +29 -0
  299. data/lib/fog/dns/google/requests/create_managed_zone.rb +29 -0
  300. data/lib/fog/dns/google/requests/delete_managed_zone.rb +23 -0
  301. data/lib/fog/dns/google/requests/get_change.rb +23 -0
  302. data/lib/fog/dns/google/requests/get_managed_zone.rb +23 -0
  303. data/lib/fog/dns/google/requests/get_project.rb +24 -0
  304. data/lib/fog/dns/google/requests/list_changes.rb +30 -0
  305. data/lib/fog/dns/google/requests/list_managed_zones.rb +26 -0
  306. data/lib/fog/dns/google/requests/list_resource_record_sets.rb +30 -0
  307. data/lib/fog/google.rb +53 -0
  308. data/lib/fog/google/mock.rb +14 -0
  309. data/lib/fog/google/models/monitoring/metric_descriptor.rb +23 -0
  310. data/lib/fog/google/models/monitoring/metric_descriptors.rb +43 -0
  311. data/lib/fog/google/models/monitoring/monitored_resource_descriptor.rb +20 -0
  312. data/lib/fog/google/models/monitoring/monitored_resource_descriptors.rb +37 -0
  313. data/lib/fog/google/models/monitoring/timeseries.rb +19 -0
  314. data/lib/fog/google/models/monitoring/timeseries_collection.rb +48 -0
  315. data/lib/fog/google/models/pubsub/received_message.rb +40 -0
  316. data/lib/fog/google/models/pubsub/subscription.rb +86 -0
  317. data/lib/fog/google/models/pubsub/subscriptions.rb +33 -0
  318. data/lib/fog/google/models/pubsub/topic.rb +71 -0
  319. data/lib/fog/google/models/pubsub/topics.rb +32 -0
  320. data/lib/fog/google/models/sql/backup_run.rb +37 -0
  321. data/lib/fog/google/models/sql/backup_runs.rb +38 -0
  322. data/lib/fog/google/models/sql/flag.rb +23 -0
  323. data/lib/fog/google/models/sql/flags.rb +21 -0
  324. data/lib/fog/google/models/sql/instance.rb +339 -0
  325. data/lib/fog/google/models/sql/instances.rb +39 -0
  326. data/lib/fog/google/models/sql/operation.rb +67 -0
  327. data/lib/fog/google/models/sql/operations.rb +47 -0
  328. data/lib/fog/google/models/sql/ssl_cert.rb +77 -0
  329. data/lib/fog/google/models/sql/ssl_certs.rb +49 -0
  330. data/lib/fog/google/models/sql/tier.rb +20 -0
  331. data/lib/fog/google/models/sql/tiers.rb +21 -0
  332. data/lib/fog/google/models/sql/user.rb +52 -0
  333. data/lib/fog/google/models/sql/users.rb +21 -0
  334. data/lib/fog/google/monitoring.rb +60 -0
  335. data/lib/fog/google/monitoring/mock.rb +35 -0
  336. data/lib/fog/google/monitoring/real.rb +20 -0
  337. data/lib/fog/google/pubsub.rb +69 -0
  338. data/lib/fog/google/pubsub/mock.rb +34 -0
  339. data/lib/fog/google/pubsub/real.rb +21 -0
  340. data/lib/fog/google/requests/monitoring/create_metric_descriptor.rb +51 -0
  341. data/lib/fog/google/requests/monitoring/create_timeseries.rb +29 -0
  342. data/lib/fog/google/requests/monitoring/delete_metric_descriptor.rb +19 -0
  343. data/lib/fog/google/requests/monitoring/get_metric_descriptor.rb +19 -0
  344. data/lib/fog/google/requests/monitoring/get_monitored_resource_descriptor.rb +19 -0
  345. data/lib/fog/google/requests/monitoring/list_metric_descriptors.rb +26 -0
  346. data/lib/fog/google/requests/monitoring/list_monitored_resource_descriptors.rb +29 -0
  347. data/lib/fog/google/requests/monitoring/list_timeseries.rb +55 -0
  348. data/lib/fog/google/requests/pubsub/acknowledge_subscription.rb +29 -0
  349. data/lib/fog/google/requests/pubsub/create_subscription.rb +37 -0
  350. data/lib/fog/google/requests/pubsub/create_topic.rb +23 -0
  351. data/lib/fog/google/requests/pubsub/delete_subscription.rb +21 -0
  352. data/lib/fog/google/requests/pubsub/delete_topic.rb +21 -0
  353. data/lib/fog/google/requests/pubsub/get_subscription.rb +21 -0
  354. data/lib/fog/google/requests/pubsub/get_topic.rb +21 -0
  355. data/lib/fog/google/requests/pubsub/list_subscriptions.rb +29 -0
  356. data/lib/fog/google/requests/pubsub/list_topics.rb +29 -0
  357. data/lib/fog/google/requests/pubsub/publish_topic.rb +28 -0
  358. data/lib/fog/google/requests/pubsub/pull_subscription.rb +40 -0
  359. data/lib/fog/google/requests/sql/clone_instance.rb +42 -0
  360. data/lib/fog/google/requests/sql/delete_backup_run.rb +23 -0
  361. data/lib/fog/google/requests/sql/delete_instance.rb +24 -0
  362. data/lib/fog/google/requests/sql/delete_ssl_cert.rb +24 -0
  363. data/lib/fog/google/requests/sql/delete_user.rb +24 -0
  364. data/lib/fog/google/requests/sql/export_instance.rb +55 -0
  365. data/lib/fog/google/requests/sql/get_backup_run.rb +23 -0
  366. data/lib/fog/google/requests/sql/get_instance.rb +24 -0
  367. data/lib/fog/google/requests/sql/get_operation.rb +24 -0
  368. data/lib/fog/google/requests/sql/get_ssl_cert.rb +24 -0
  369. data/lib/fog/google/requests/sql/import_instance.rb +44 -0
  370. data/lib/fog/google/requests/sql/insert_backup_run.rb +28 -0
  371. data/lib/fog/google/requests/sql/insert_instance.rb +28 -0
  372. data/lib/fog/google/requests/sql/insert_ssl_cert.rb +30 -0
  373. data/lib/fog/google/requests/sql/insert_user.rb +25 -0
  374. data/lib/fog/google/requests/sql/list_backup_runs.rb +27 -0
  375. data/lib/fog/google/requests/sql/list_flags.rb +24 -0
  376. data/lib/fog/google/requests/sql/list_instances.rb +27 -0
  377. data/lib/fog/google/requests/sql/list_operations.rb +28 -0
  378. data/lib/fog/google/requests/sql/list_ssl_certs.rb +24 -0
  379. data/lib/fog/google/requests/sql/list_tiers.rb +24 -0
  380. data/lib/fog/google/requests/sql/list_users.rb +24 -0
  381. data/lib/fog/google/requests/sql/reset_instance_ssl_config.rb +26 -0
  382. data/lib/fog/google/requests/sql/restart_instance.rb +24 -0
  383. data/lib/fog/google/requests/sql/restore_instance_backup.rb +31 -0
  384. data/lib/fog/google/requests/sql/update_instance.rb +31 -0
  385. data/lib/fog/google/requests/sql/update_user.rb +27 -0
  386. data/lib/fog/google/shared.rb +253 -0
  387. data/lib/fog/google/sql.rb +104 -0
  388. data/lib/fog/google/sql/mock.rb +40 -0
  389. data/lib/fog/google/sql/real.rb +21 -0
  390. data/lib/fog/google/version.rb +5 -0
  391. data/lib/fog/parsers/storage/google.rb +15 -0
  392. data/lib/fog/parsers/storage/google/access_control_list.rb +44 -0
  393. data/lib/fog/parsers/storage/google/copy_object.rb +18 -0
  394. data/lib/fog/parsers/storage/google/get_bucket.rb +58 -0
  395. data/lib/fog/parsers/storage/google/get_bucket_logging.rb +36 -0
  396. data/lib/fog/parsers/storage/google/get_bucket_object_versions.rb +88 -0
  397. data/lib/fog/parsers/storage/google/get_bucket_versioning.rb +20 -0
  398. data/lib/fog/parsers/storage/google/get_request_payment.rb +16 -0
  399. data/lib/fog/parsers/storage/google/get_service.rb +28 -0
  400. data/lib/fog/storage/google.rb +20 -0
  401. data/lib/fog/storage/google_json.rb +74 -0
  402. data/lib/fog/storage/google_json/mock.rb +27 -0
  403. data/lib/fog/storage/google_json/models/directories.rb +41 -0
  404. data/lib/fog/storage/google_json/models/directory.rb +61 -0
  405. data/lib/fog/storage/google_json/models/file.rb +126 -0
  406. data/lib/fog/storage/google_json/models/files.rb +64 -0
  407. data/lib/fog/storage/google_json/real.rb +171 -0
  408. data/lib/fog/storage/google_json/requests/copy_object.rb +34 -0
  409. data/lib/fog/storage/google_json/requests/delete_bucket.rb +23 -0
  410. data/lib/fog/storage/google_json/requests/delete_object.rb +24 -0
  411. data/lib/fog/storage/google_json/requests/delete_object_url.rb +39 -0
  412. data/lib/fog/storage/google_json/requests/get_bucket.rb +43 -0
  413. data/lib/fog/storage/google_json/requests/get_bucket_acl.rb +32 -0
  414. data/lib/fog/storage/google_json/requests/get_object.rb +85 -0
  415. data/lib/fog/storage/google_json/requests/get_object_acl.rb +35 -0
  416. data/lib/fog/storage/google_json/requests/get_object_http_url.rb +32 -0
  417. data/lib/fog/storage/google_json/requests/get_object_https_url.rb +33 -0
  418. data/lib/fog/storage/google_json/requests/get_object_metadata.rb +32 -0
  419. data/lib/fog/storage/google_json/requests/get_object_url.rb +21 -0
  420. data/lib/fog/storage/google_json/requests/list_bucket_acl.rb +26 -0
  421. data/lib/fog/storage/google_json/requests/list_buckets.rb +30 -0
  422. data/lib/fog/storage/google_json/requests/list_object_acl.rb +29 -0
  423. data/lib/fog/storage/google_json/requests/list_objects.rb +48 -0
  424. data/lib/fog/storage/google_json/requests/put_bucket.rb +42 -0
  425. data/lib/fog/storage/google_json/requests/put_bucket_acl.rb +29 -0
  426. data/lib/fog/storage/google_json/requests/put_object.rb +102 -0
  427. data/lib/fog/storage/google_json/requests/put_object_acl.rb +35 -0
  428. data/lib/fog/storage/google_json/requests/put_object_url.rb +42 -0
  429. data/lib/fog/storage/google_json/utils.rb +40 -0
  430. data/lib/fog/storage/google_xml.rb +38 -0
  431. data/lib/fog/storage/google_xml/mock.rb +102 -0
  432. data/lib/fog/storage/google_xml/models/directories.rb +34 -0
  433. data/lib/fog/storage/google_xml/models/directory.rb +65 -0
  434. data/lib/fog/storage/google_xml/models/file.rb +130 -0
  435. data/lib/fog/storage/google_xml/models/files.rb +95 -0
  436. data/lib/fog/storage/google_xml/real.rb +108 -0
  437. data/lib/fog/storage/google_xml/requests/copy_object.rb +62 -0
  438. data/lib/fog/storage/google_xml/requests/delete_bucket.rb +39 -0
  439. data/lib/fog/storage/google_xml/requests/delete_object.rb +44 -0
  440. data/lib/fog/storage/google_xml/requests/delete_object_url.rb +42 -0
  441. data/lib/fog/storage/google_xml/requests/get_bucket.rb +95 -0
  442. data/lib/fog/storage/google_xml/requests/get_bucket_acl.rb +53 -0
  443. data/lib/fog/storage/google_xml/requests/get_object.rb +96 -0
  444. data/lib/fog/storage/google_xml/requests/get_object_acl.rb +62 -0
  445. data/lib/fog/storage/google_xml/requests/get_object_http_url.rb +37 -0
  446. data/lib/fog/storage/google_xml/requests/get_object_https_url.rb +37 -0
  447. data/lib/fog/storage/google_xml/requests/get_object_url.rb +31 -0
  448. data/lib/fog/storage/google_xml/requests/get_service.rb +44 -0
  449. data/lib/fog/storage/google_xml/requests/head_object.rb +55 -0
  450. data/lib/fog/storage/google_xml/requests/put_bucket.rb +71 -0
  451. data/lib/fog/storage/google_xml/requests/put_bucket_acl.rb +58 -0
  452. data/lib/fog/storage/google_xml/requests/put_object.rb +85 -0
  453. data/lib/fog/storage/google_xml/requests/put_object_acl.rb +58 -0
  454. data/lib/fog/storage/google_xml/requests/put_object_url.rb +42 -0
  455. data/lib/fog/storage/google_xml/utils.rb +83 -0
  456. data/tasks/bundler.rake +3 -0
  457. data/tasks/changelog.rake +39 -0
  458. data/tasks/console.rake +17 -0
  459. data/tasks/lint.rake +9 -0
  460. data/tasks/test.rake +115 -0
  461. data/test/helpers/client_helper.rb +63 -0
  462. data/test/helpers/integration_test_helper.rb +108 -0
  463. data/test/helpers/test_collection.rb +60 -0
  464. data/test/helpers/test_helper.rb +24 -0
  465. data/test/integration/compute/core_compute/test_client_options.rb +12 -0
  466. data/test/integration/compute/core_compute/test_coverage.rb +6 -0
  467. data/test/integration/compute/core_compute/test_disk_types.rb +43 -0
  468. data/test/integration/compute/core_compute/test_disks.rb +53 -0
  469. data/test/integration/compute/core_compute/test_images.rb +32 -0
  470. data/test/integration/compute/core_compute/test_machine_types.rb +55 -0
  471. data/test/integration/compute/core_compute/test_operations.rb +45 -0
  472. data/test/integration/compute/core_compute/test_projects.rb +19 -0
  473. data/test/integration/compute/core_compute/test_regions.rb +33 -0
  474. data/test/integration/compute/core_compute/test_servers.rb +149 -0
  475. data/test/integration/compute/core_compute/test_snapshots.rb +21 -0
  476. data/test/integration/compute/core_compute/test_zones.rb +35 -0
  477. data/test/integration/compute/core_networking/test_addresses.rb +107 -0
  478. data/test/integration/compute/core_networking/test_coverage.rb +6 -0
  479. data/test/integration/compute/core_networking/test_firewalls.rb +11 -0
  480. data/test/integration/compute/core_networking/test_networks.rb +41 -0
  481. data/test/integration/compute/core_networking/test_routes.rb +26 -0
  482. data/test/integration/compute/core_networking/test_subnetworks.rb +11 -0
  483. data/test/integration/compute/instance_groups/test_coverage.rb +6 -0
  484. data/test/integration/compute/instance_groups/test_instance_group_managers.rb +11 -0
  485. data/test/integration/compute/instance_groups/test_instance_groups.rb +11 -0
  486. data/test/integration/compute/instance_groups/test_instance_templates.rb +11 -0
  487. data/test/integration/compute/loadbalancing/test_backend_services.rb +11 -0
  488. data/test/integration/compute/loadbalancing/test_coverage.rb +6 -0
  489. data/test/integration/compute/loadbalancing/test_forwarding_rules.rb +11 -0
  490. data/test/integration/compute/loadbalancing/test_global_addresses.rb +11 -0
  491. data/test/integration/compute/loadbalancing/test_global_forwarding_rules.rb +11 -0
  492. data/test/integration/compute/loadbalancing/test_http_health_checks.rb +11 -0
  493. data/test/integration/compute/loadbalancing/test_ssl_certificates.rb +11 -0
  494. data/test/integration/compute/loadbalancing/test_target_http_proxies.rb +11 -0
  495. data/test/integration/compute/loadbalancing/test_target_https_proxies.rb +11 -0
  496. data/test/integration/compute/loadbalancing/test_target_instances.rb +11 -0
  497. data/test/integration/compute/loadbalancing/test_target_pools.rb +55 -0
  498. data/test/integration/compute/loadbalancing/test_url_maps.rb +11 -0
  499. data/test/integration/factories/addresses_factory.rb +20 -0
  500. data/test/integration/factories/backend_services_factory.rb +19 -0
  501. data/test/integration/factories/collection_factory.rb +52 -0
  502. data/test/integration/factories/disks_factory.rb +22 -0
  503. data/test/integration/factories/firewalls_factory.rb +13 -0
  504. data/test/integration/factories/forwarding_rules_factory.rb +25 -0
  505. data/test/integration/factories/global_addresses_factory.rb +15 -0
  506. data/test/integration/factories/global_forwarding_rules_factory.rb +20 -0
  507. data/test/integration/factories/http_health_checks_factory.rb +11 -0
  508. data/test/integration/factories/images_factory.rb +16 -0
  509. data/test/integration/factories/instance_group_manager_factory.rb +30 -0
  510. data/test/integration/factories/instance_groups_factory.rb +20 -0
  511. data/test/integration/factories/instance_template_factory.rb +24 -0
  512. data/test/integration/factories/networks_factory.rb +16 -0
  513. data/test/integration/factories/servers_factory.rb +30 -0
  514. data/test/integration/factories/sql_certs_factory.rb +20 -0
  515. data/test/integration/factories/sql_instances_factory.rb +19 -0
  516. data/test/integration/factories/sql_users_factory.rb +23 -0
  517. data/test/integration/factories/ssl_certificates_factory.rb +13 -0
  518. data/test/integration/factories/subnetworks_factory.rb +26 -0
  519. data/test/integration/factories/target_http_proxies_factory.rb +19 -0
  520. data/test/integration/factories/target_https_proxies_factory.rb +26 -0
  521. data/test/integration/factories/target_instances_factory.rb +24 -0
  522. data/test/integration/factories/target_pools_factory.rb +28 -0
  523. data/test/integration/factories/url_maps_factory.rb +19 -0
  524. data/test/integration/monitoring/test_coverage.rb +6 -0
  525. data/test/integration/monitoring/test_metric_descriptors.rb +131 -0
  526. data/test/integration/monitoring/test_monitored_resource_descriptors.rb +37 -0
  527. data/test/integration/monitoring/test_timeseries.rb +238 -0
  528. data/test/integration/pubsub/pubsub_shared.rb +75 -0
  529. data/test/integration/pubsub/test_coverage.rb +6 -0
  530. data/test/integration/pubsub/test_pubsub_models.rb +135 -0
  531. data/test/integration/pubsub/test_pubsub_requests.rb +105 -0
  532. data/test/integration/sql/test_certs.rb +50 -0
  533. data/test/integration/sql/test_common_flags.rb +31 -0
  534. data/test/integration/sql/test_common_tiers.rb +26 -0
  535. data/test/integration/sql/test_coverage.rb +6 -0
  536. data/test/integration/sql/test_instances.rb +101 -0
  537. data/test/integration/sql/test_users.rb +37 -0
  538. data/test/integration/storage/storage_shared.rb +96 -0
  539. data/test/integration/storage/test_buckets.rb +112 -0
  540. data/test/integration/storage/test_coverage.rb +6 -0
  541. data/test/integration/storage/test_directories.rb +67 -0
  542. data/test/integration/storage/test_files.rb +168 -0
  543. data/test/integration/storage/test_objects.rb +203 -0
  544. data/test/integration/test_authentication.rb +38 -0
  545. data/test/unit/compute/test_common_collections.rb +42 -0
  546. data/test/unit/compute/test_common_models.rb +35 -0
  547. data/test/unit/compute/test_server.rb +29 -0
  548. data/test/unit/dns/test_common_collections.rb +43 -0
  549. data/test/unit/monitoring/test_comon_collections.rb +44 -0
  550. data/test/unit/pubsub/test_common_collections.rb +35 -0
  551. data/test/unit/sql/test_common_collections.rb +46 -0
  552. data/test/unit/storage/test_common_json_collections.rb +38 -0
  553. data/test/unit/storage/test_common_xml_collections.rb +50 -0
  554. data/test/unit/storage/test_json_requests.rb +44 -0
  555. data/test/unit/storage/test_xml_requests.rb +60 -0
  556. metadata +897 -0
@@ -0,0 +1,33 @@
1
+ module Fog
2
+ module DNS
3
+ class Google
4
+ class Mock
5
+ include Fog::Google::Shared
6
+
7
+ def initialize(options)
8
+ shared_initialize(options[:google_project], GOOGLE_DNS_API_VERSION, GOOGLE_DNS_BASE_URL)
9
+ end
10
+
11
+ def self.data(_api_version)
12
+ @data ||= {}
13
+ end
14
+
15
+ def self.reset
16
+ @data = nil
17
+ end
18
+
19
+ def data(project = @project)
20
+ self.class.data(api_version)[project] ||= {
21
+ :managed_zones => {},
22
+ :resource_record_sets => {},
23
+ :changes => {}
24
+ }
25
+ end
26
+
27
+ def reset_data
28
+ self.class.data(api_version).delete(@project)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,38 @@
1
+ module Fog
2
+ module DNS
3
+ class Google
4
+ ##
5
+ # Represents a Change resource
6
+ #
7
+ # @see https://developers.google.com/cloud-dns/api/v1/changes
8
+ class Change < Fog::Model
9
+ identity :id
10
+
11
+ attribute :kind
12
+ attribute :start_time, :aliases => "startTime"
13
+ attribute :status
14
+ attribute :additions
15
+ attribute :deletions
16
+
17
+ DONE_STATE = "done".freeze
18
+ PENDING_STATE = "pending".freeze
19
+
20
+ ##
21
+ # Checks if the change operation is pending
22
+ #
23
+ # @return [Boolean] True if the change operation is pending; False otherwise
24
+ def pending?
25
+ status == PENDING_STATE
26
+ end
27
+
28
+ ##
29
+ # Checks if the change operation is done
30
+ #
31
+ # @return [Boolean] True if the change operation is done; False otherwise
32
+ def ready?
33
+ status == DONE_STATE
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,50 @@
1
+ module Fog
2
+ module DNS
3
+ class Google
4
+ class Changes < Fog::Collection
5
+ model Fog::DNS::Google::Change
6
+
7
+ attribute :zone
8
+
9
+ ##
10
+ # Enumerates the list of Changes
11
+ #
12
+ # @return [Array<Fog::DNS::Google::Change>] List of Changes resources
13
+ def all
14
+ requires :zone
15
+
16
+ data = service.list_changes(zone.identity).to_h[:changes] || []
17
+ load(data)
18
+ rescue ::Google::Apis::ClientError => e
19
+ raise e unless e.status_code == 404
20
+ []
21
+ end
22
+
23
+ ##
24
+ # Fetches the representation of an existing Change
25
+ #
26
+ # @param [String] identity Change identity
27
+ # @return [Fog::DNS::Google::Change] Change resource
28
+ def get(identity)
29
+ requires :zone
30
+ if change = service.get_change(zone.identity, identity).to_h
31
+ new(change)
32
+ end
33
+ rescue ::Google::Apis::ClientError => e
34
+ raise e unless e.status_code == 404
35
+ nil
36
+ end
37
+
38
+ ##
39
+ # Creates a new instance of a Change
40
+ #
41
+ # @return [Fog::DNS::Google::Change] Change resource
42
+ def new(attributes = {})
43
+ requires :zone
44
+
45
+ super({ :zone => zone }.merge!(attributes))
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,73 @@
1
+ module Fog
2
+ module DNS
3
+ class Google
4
+ ##
5
+ # Represents a Project resource
6
+ #
7
+ # @see https://developers.google.com/cloud-dns/api/v1/projects
8
+ class Project < Fog::Model
9
+ identity :id
10
+
11
+ attribute :kind
12
+ attribute :number
13
+ attribute :quota
14
+
15
+ # These attributes are not available in the representation of a 'Project' returned by the Google DNS API
16
+ attribute :managed_zones
17
+ attribute :rrsets_per_managed_zone
18
+ attribute :resource_records_per_rrset
19
+ attribute :rrset_additions_per_change
20
+ attribute :rrset_deletions_per_change
21
+ attribute :total_rrdatasize_per_change
22
+
23
+ ##
24
+ # Returns the maximum allowed number of managed zones in the project
25
+ #
26
+ # @return [Integer] Maximum allowed number of managed zones in the project
27
+ def managed_zones
28
+ quota[:managed_zones]
29
+ end
30
+
31
+ ##
32
+ # Returns the maximum allowed number of ResourceRecordSets per zone in the project
33
+ #
34
+ # @return [Integer] The maximum allowed number of ResourceRecordSets per zone in the project
35
+ def rrsets_per_managed_zone
36
+ quota[:rrsets_per_managed_zone]
37
+ end
38
+
39
+ ##
40
+ # Returns the maximum allowed number of resource records per ResourceRecordSet
41
+ #
42
+ # @return [Integer] The maximum allowed number of resource records per ResourceRecordSet
43
+ def resource_records_per_rrset
44
+ quota[:resource_records_per_rrset]
45
+ end
46
+
47
+ ##
48
+ # Returns the maximum allowed number of ResourceRecordSets to add per Changes.create request
49
+ #
50
+ # @return [Integer] The maximum allowed number of ResourceRecordSets to add per Changes.create request
51
+ def rrset_additions_per_change
52
+ quota[:rrset_additions_per_change]
53
+ end
54
+
55
+ ##
56
+ # Returns the maximum allowed number of ResourceRecordSets to delete per Changes.create request
57
+ #
58
+ # @return [Integer] The maximum allowed number of ResourceRecordSets to delete per Changes.create request
59
+ def rrset_deletions_per_change
60
+ quota[:rrset_deletions_per_change]
61
+ end
62
+
63
+ ##
64
+ # Returns the maximum allowed size in bytes for the rrdata field in one Changes.create request
65
+ #
66
+ # @return [Integer] The maximum allowed size in bytes for the rrdata field in one Changes.create request
67
+ def total_rrdatasize_per_change
68
+ quota[:total_rrdata_size_per_change]
69
+ end
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,23 @@
1
+ module Fog
2
+ module DNS
3
+ class Google
4
+ class Projects < Fog::Collection
5
+ model Fog::DNS::Google::Project
6
+
7
+ ##
8
+ # Fetches the representation of an existing Project
9
+ #
10
+ # @param [String] identity Project identity
11
+ # @return [Fog::DNS::Google::Project] Project resource
12
+ def get(identity)
13
+ if project = service.get_project(identity).to_h
14
+ new(project)
15
+ end
16
+ rescue ::Google::Apis::ClientError => e
17
+ raise e unless e.status_code == 404
18
+ nil
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,108 @@
1
+ module Fog
2
+ module DNS
3
+ class Google
4
+ ##
5
+ # Resource Record Sets resource
6
+ #
7
+ # @see https://cloud.google.com/dns/api/v1/resourceRecordSets
8
+ class Record < Fog::Model
9
+ identity :name
10
+
11
+ attribute :kind
12
+ attribute :type
13
+ attribute :ttl
14
+ attribute :rrdatas
15
+
16
+ ##
17
+ # Deletes a previously created Resource Record Sets resource
18
+ #
19
+ # @param [Boolean] async If the operation must be asyncronous (true by default)
20
+ # @return [Boolean] If the Resource Record Set has been deleted
21
+ def destroy(async = true)
22
+ requires :name, :type, :ttl, :rrdatas
23
+
24
+ data = service.create_change(zone.id, [], [resource_record_set_format])
25
+ change = Fog::DNS::Google::Changes
26
+ .new(:service => service, :zone => zone)
27
+ .get(data.id)
28
+ change.wait_for { ready? } unless async
29
+ true
30
+ end
31
+
32
+ ##
33
+ # Modifies a previously created Resource Record Sets resource
34
+ #
35
+ # @param [Hash] new_attributes Resource Record Set new attributes
36
+ # @return [Fog::DNS::Google::Record] Resource Record Sets resource
37
+ def modify(new_attributes)
38
+ requires :name, :type, :ttl, :rrdatas
39
+
40
+ deletions = resource_record_set_format
41
+ merge_attributes(new_attributes)
42
+
43
+ data = service.create_change(zone.id, [resource_record_set_format], [deletions])
44
+ change = Fog::DNS::Google::Changes
45
+ .new(:service => service, :zone => zone)
46
+ .get(data.id)
47
+ new_attributes.key?(:async) ? async = new_attributes[:async] : async = true
48
+ change.wait_for { ready? } unless async
49
+ self
50
+ end
51
+
52
+ ##
53
+ # Reloads a Resource Record Sets resource
54
+ #
55
+ # @return [Fog::DNS::Google::Record] Resource Record Sets resource
56
+ def reload
57
+ requires :name, :type
58
+
59
+ data = collection.get(name, type).to_h
60
+ merge_attributes(data.attributes)
61
+ self
62
+ end
63
+
64
+ ##
65
+ # Creates a new Resource Record Sets resource
66
+ #
67
+ # @return [Fog::DNS::Google::Record] Resource Record Sets resource
68
+ def save
69
+ requires :name, :type, :ttl, :rrdatas
70
+
71
+ data = service.create_change(zone.id, [resource_record_set_format], [])
72
+ change = Fog::DNS::Google::Changes
73
+ .new(:service => service, :zone => zone)
74
+ .get(data.id)
75
+ change.wait_for { ready? }
76
+ self
77
+ end
78
+
79
+ ##
80
+ # Returns the Managed Zone of the Resource Record Sets resource
81
+ #
82
+ # @return [Fog::DNS::Google::Zone] Managed Zone of the Resource Record Sets resource
83
+ attr_reader :zone
84
+
85
+ private
86
+
87
+ ##
88
+ # Assigns the Managed Zone of the Resource Record Sets resource
89
+ #
90
+ # @param [Fog::DNS::Google::Zone] new_zone Managed Zone of the Resource Record Sets resource
91
+ attr_writer :zone
92
+
93
+ ##
94
+ # Resource Record Sets resource representation
95
+ #
96
+ def resource_record_set_format
97
+ {
98
+ :kind => "dns#resourceRecordSet",
99
+ :name => name,
100
+ :type => type,
101
+ :ttl => ttl,
102
+ :rrdatas => rrdatas
103
+ }
104
+ end
105
+ end
106
+ end
107
+ end
108
+ end
@@ -0,0 +1,53 @@
1
+ module Fog
2
+ module DNS
3
+ class Google
4
+ class Records < Fog::Collection
5
+ model Fog::DNS::Google::Record
6
+
7
+ attribute :zone
8
+
9
+ ##
10
+ # Enumerates Resource Record Sets that have been created but not yet deleted
11
+ #
12
+ # @return [Array<Fog::DNS::Google::Record>] List of Resource Record Sets resources
13
+ def all
14
+ requires :zone
15
+
16
+ data = service.list_resource_record_sets(zone.identity)
17
+ .to_h[:rrsets] || []
18
+ load(data)
19
+ rescue ::Google::Apis::ClientError => e
20
+ raise e unless e.status_code == 404
21
+ []
22
+ end
23
+
24
+ ##
25
+ # Fetches the representation of an existing Resource Record Set
26
+ #
27
+ # @param [String] name Resource Record Set name
28
+ # @param [String] type Resource Record Set type
29
+ # @return [Fog::DNS::Google::Record] Resource Record Set resource
30
+ def get(name, type)
31
+ requires :zone
32
+
33
+ records = service.list_resource_record_sets(zone.identity, :name => name, :type => type)
34
+ .to_h[:rrsets] || []
35
+ records.any? ? new(records.first) : nil
36
+ rescue ::Google::Apis::ClientError => e
37
+ raise e unless e.status_code == 404
38
+ nil
39
+ end
40
+
41
+ ##
42
+ # Creates a new instance of a Resource Record Set
43
+ #
44
+ # @return [Fog::DNS::Google::Record] Resource Record Set resource
45
+ def new(attributes = {})
46
+ requires :zone
47
+
48
+ super({ :zone => zone }.merge!(attributes))
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,72 @@
1
+ module Fog
2
+ module DNS
3
+ class Google
4
+ ##
5
+ # Managed Zone resource
6
+ #
7
+ # @see https://developers.google.com/cloud-dns/api/v1/managedZones
8
+ class Zone < Fog::Model
9
+ identity :id
10
+
11
+ attribute :creation_time, :aliases => "creationTime"
12
+ attribute :description
13
+ attribute :domain, :aliases => "dnsName"
14
+ attribute :kind
15
+ attribute :name
16
+ attribute :nameservers, :aliases => "nameServers"
17
+
18
+ ##
19
+ # Enumerates the list of Changes for the Managed Zone
20
+ #
21
+ # @return Array<Fog::DNS::Google::Change>] List of Changes for the Managed Zone
22
+ def changes
23
+ @changes = begin
24
+ Fog::DNS::Google::Changes.new(
25
+ :service => service,
26
+ :zone => self
27
+ )
28
+ end
29
+ end
30
+
31
+ ##
32
+ # Deletes a previously created Managed Zone
33
+ #
34
+ # @return [Boolean] If the Managed Zone has been deleted
35
+ def destroy
36
+ requires :identity
37
+
38
+ service.delete_managed_zone(identity)
39
+ true
40
+ end
41
+
42
+ ##
43
+ # Enumerates the list of Resource Record Sets for the Managed Zone
44
+ #
45
+ # @return Array<Fog::DNS::Google::Record>] List of Resource Record Sets for the Managed Zone
46
+ def records
47
+ @records = begin
48
+ Fog::DNS::Google::Records.new(
49
+ :service => service,
50
+ :zone => self
51
+ )
52
+ end
53
+ end
54
+
55
+ ##
56
+ # Creates a new Managed Zone
57
+ #
58
+ # @return [Fog::DNS::Google::Zone] Managed Zone
59
+ # @raise [Fog::Errors::Error] If Managed Zone already exists
60
+ def save
61
+ requires :name, :domain, :description
62
+
63
+ raise Fog::Errors::Error.new("Resaving an existing object may create a duplicate") if persisted?
64
+
65
+ data = service.create_managed_zone(name, domain, description)
66
+ merge_attributes(data.to_h)
67
+ self
68
+ end
69
+ end
70
+ end
71
+ end
72
+ end