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,60 @@
1
+ module TestCollection
2
+ # Anything that includes TestCollection must, during setup, assign @subject and @factory, where
3
+ # @subject is the collection under test, (e.g. Fog::Compute[:google].servers)
4
+ # @factory is a CollectionFactory
5
+
6
+ def test_lifecycle
7
+ one = @subject.new(@factory.params)
8
+ one.save
9
+ two = @subject.create(@factory.params)
10
+
11
+ # XXX HACK compares identities
12
+ # should be replaced with simple includes? when `==` is properly implemented in fog-core; see fog/fog-core#148
13
+ assert_includes @subject.all.map(&:identity), one.identity
14
+ assert_includes @subject.all.map(&:identity), two.identity
15
+
16
+ assert_equal one.identity, @subject.get(one.identity).identity
17
+ assert_equal two.identity, @subject.get(two.identity).identity
18
+
19
+ # Some factories that have scoped parameters (zone, region) have a special
20
+ # `get` method defined in the factory to pass the correct parameters in
21
+ if @factory.respond_to?(:get)
22
+ assert_equal one.identity, @factory.get(one.identity).identity
23
+ assert_equal two.identity, @factory.get(two.identity).identity
24
+ end
25
+
26
+ # Some factories that have scoped parameters (zone, region) have a special
27
+ # `all` method defined in the factory to pass the correct parameters in
28
+ if @factory.respond_to?(:all)
29
+ subject_list = @subject.all
30
+ scoped_subject_list = @factory.all
31
+
32
+ # Assert that whatever .all(scope) returns is a subset of .all
33
+ assert(scoped_subject_list.all? { |x| subject_list.include? x },
34
+ "Output of @factory.all must be a subset of @subject.all")
35
+ end
36
+
37
+ one.destroy
38
+ two.destroy
39
+
40
+ Fog.wait_for { !@subject.all.map(&:identity).include? one.identity }
41
+ Fog.wait_for { !@subject.all.map(&:identity).include? two.identity }
42
+ end
43
+
44
+ def test_get_returns_nil_if_resource_does_not_exist
45
+ assert_nil @factory.get("fog-test-fake-identity") if @factory.respond_to?(:get)
46
+ assert_nil @subject.get("fog-test-fake-identity")
47
+ end
48
+
49
+ def test_enumerable
50
+ assert_respond_to @subject, :each
51
+ end
52
+
53
+ def test_nil_get
54
+ assert_nil @subject.get(nil)
55
+ end
56
+
57
+ def teardown
58
+ @factory.cleanup
59
+ end
60
+ end
@@ -0,0 +1,24 @@
1
+ # Configure simplecov for coverage tests
2
+ # Note: needs to be done _before_ requiring minitest!
3
+ if ENV["COVERAGE"]
4
+ require "simplecov"
5
+
6
+ require 'codecov'
7
+ SimpleCov.formatter = SimpleCov::Formatter::Codecov
8
+ SimpleCov.skip_token('no-coverage')
9
+
10
+ SimpleCov.start do
11
+ add_filter "/test/"
12
+ end
13
+ end
14
+
15
+ # The next line was added to squelch a warning message in Ruby 1.9.
16
+ # It ensures we're using the gem, not the built-in Minitest
17
+ # See https://github.com/seattlerb/minitest/#install
18
+ gem "minitest"
19
+ require "minitest/autorun"
20
+ # Custom formatters
21
+ require "minitest/reporters"
22
+ Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new
23
+
24
+ require File.join(File.dirname(__FILE__), "../../lib/fog/google")
@@ -0,0 +1,12 @@
1
+ require "helpers/integration_test_helper"
2
+
3
+ class TestComputeClient < FogIntegrationTest
4
+ def test_client_options
5
+ # XXX This is a very rudimentary test checking that proxy option is applied
6
+ client_options = { proxy_url: "https://user:password@host:8080" }
7
+ connection = Fog::Compute::Google.new(google_client_options: client_options)
8
+
9
+ err = assert_raises(ArgumentError) { connection.servers.all }
10
+ assert_match(/unsupported proxy/, err.message)
11
+ end
12
+ end
@@ -0,0 +1,6 @@
1
+ require "helpers/integration_test_helper"
2
+
3
+ # This is a simple coverage helper that helps differentiate
4
+ # the tests when run in parallel so the final coverage report
5
+ # can be properly combined together from multiple runners
6
+ SimpleCov.command_name "test:compute-core_compute" if ENV["COVERAGE"]
@@ -0,0 +1,43 @@
1
+ require "helpers/integration_test_helper"
2
+
3
+ class TestDiskTypes < FogIntegrationTest
4
+ NAMES = %w(local-ssd pd-ssd pd-standard).freeze
5
+ # Testing in one random zone per region (region list as of May 2018)
6
+ ZONES = %w(asia-east1-a asia-northeast1-b asia-south1-c asia-southeast1-a australia-southeast1-b
7
+ europe-west1-c europe-west2-a europe-west3-b europe-west4-c northamerica-northeast1-a
8
+ southamerica-east1-b us-central1-c us-east1-b us-east4-a us-west1-c).freeze
9
+
10
+ def setup
11
+ @subject = Fog::Compute[:google].disk_types
12
+ end
13
+
14
+ def test_all
15
+ assert_operator(@subject.all.size, :>=, NAMES.size * ZONES.size,
16
+ "Number of all disk type references should be greater or equal to test zones * disk types")
17
+ end
18
+
19
+ def test_scoped_all
20
+ subject_list = @subject.all
21
+ scoped_subject_list = @subject.all(zone: TEST_ZONE)
22
+
23
+ # Assert that whatever .all(scope) returns is a subset of .all
24
+ assert(scoped_subject_list.all? { |x| subject_list.include? x },
25
+ "Output of @subject.all(zone:#{TEST_ZONE}) must be a subset of @subject.all")
26
+ end
27
+
28
+ def test_get
29
+ NAMES.each do |name|
30
+ ZONES.each do |zone|
31
+ refute_nil @subject.get(name, zone)
32
+ end
33
+ end
34
+ end
35
+
36
+ def test_bad_get
37
+ assert_nil @subject.get("bad-name")
38
+ end
39
+
40
+ def test_enumerable
41
+ assert_respond_to @subject, :each
42
+ end
43
+ end
@@ -0,0 +1,53 @@
1
+ require "helpers/integration_test_helper"
2
+ require "integration/factories/disks_factory"
3
+
4
+ class TestDisks < FogIntegrationTest
5
+ include TestCollection
6
+
7
+ def setup
8
+ @subject = Fog::Compute[:google].disks
9
+ @factory = DisksFactory.new(namespaced_name)
10
+ end
11
+
12
+ def test_get_as_configs
13
+ disk = @factory.create
14
+ disk.wait_for { ready? }
15
+
16
+ example = disk.get_as_boot_disk
17
+ config = { :auto_delete => false,
18
+ :boot => true,
19
+ :source => disk.self_link,
20
+ :mode => "READ_WRITE",
21
+ :type => "PERSISTENT" }
22
+ assert_equal(example, config)
23
+
24
+ example_with_params = disk.get_as_boot_disk(false, true)
25
+ config_with_params = { :auto_delete => true,
26
+ :boot => true,
27
+ :source => disk.self_link,
28
+ :mode => "READ_ONLY",
29
+ :type => "PERSISTENT" }
30
+ assert_equal(example_with_params, config_with_params)
31
+ end
32
+
33
+ def test_create_snapshot
34
+ disk = @factory.create
35
+ disk.wait_for { ready? }
36
+
37
+ snapshot = disk.create_snapshot("fog-test-snapshot")
38
+
39
+ assert(snapshot.is_a?(Fog::Compute::Google::Snapshot),
40
+ "Resulting snapshot should be a snapshot object.")
41
+
42
+ assert_raises(ArgumentError) { snapshot.set_labels(["bar", "test"]) }
43
+
44
+ snapshot.set_labels(foo: "bar", fog: "test")
45
+
46
+ assert_equal(snapshot.labels[:foo], "bar")
47
+ assert_equal(snapshot.labels[:fog], "test")
48
+
49
+ # Clean up the snapshot
50
+ operation = snapshot.destroy
51
+ operation.wait_for { ready? }
52
+ end
53
+ end
@@ -0,0 +1,32 @@
1
+ require "helpers/integration_test_helper"
2
+ require "integration/factories/images_factory"
3
+
4
+ class TestImages < FogIntegrationTest
5
+ include TestCollection
6
+
7
+ def setup
8
+ @subject = Fog::Compute[:google].images
9
+ @factory = ImagesFactory.new(namespaced_name)
10
+ end
11
+
12
+ def test_get_specific_image
13
+ image = @subject.get(TEST_IMAGE)
14
+ refute_nil(image, "Images.get(#{TEST_IMAGE}) should not return nil")
15
+ assert_equal(image.family, TEST_IMAGE_FAMILY)
16
+ assert_equal(image.project, TEST_IMAGE_PROJECT)
17
+ end
18
+
19
+ def test_get_specific_image_from_project
20
+ image = @subject.get(TEST_IMAGE,TEST_IMAGE_PROJECT)
21
+ refute_nil(image, "Images.get(#{TEST_IMAGE}) should not return nil")
22
+ assert_equal(image.family, TEST_IMAGE_FAMILY)
23
+ assert_equal(image.project, TEST_IMAGE_PROJECT)
24
+ end
25
+
26
+ def test_get_from_family
27
+ image = @subject.get_from_family(TEST_IMAGE_FAMILY)
28
+ refute_nil(image,"Images.get_from_family(#{TEST_IMAGE_FAMILY}) should not return nil")
29
+ assert_equal(image.family, TEST_IMAGE_FAMILY)
30
+ assert_equal(image.project, TEST_IMAGE_PROJECT)
31
+ end
32
+ end
@@ -0,0 +1,55 @@
1
+ require "helpers/integration_test_helper"
2
+
3
+ class TestMachineTypes < FogIntegrationTest
4
+ # List of machine types - not a complete sampling since beefier ones do not
5
+ # exist in all zones (list last updated June 2018)
6
+ NAMES = %w(f1-micro g1-small n1-highcpu-16 n1-highcpu-2 n1-highcpu-4
7
+ n1-highcpu-8 n1-highmem-16 n1-highmem-2 n1-highmem-32 n1-highmem-4
8
+ n1-highmem-8 n1-standard-1 n1-standard-16 n1-standard-2
9
+ n1-standard-32 n1-standard-4 n1-standard-8 ).freeze
10
+
11
+ # Testing in one random zone per region (list last updated May 2018)
12
+ ZONES = %w(asia-east1-a asia-northeast1-b asia-south1-c asia-southeast1-a
13
+ australia-southeast1-b europe-west1-c europe-west2-a europe-west3-b
14
+ europe-west4-c northamerica-northeast1-a southamerica-east1-b
15
+ us-central1-c us-east1-b us-east4-a us-west1-c).freeze
16
+
17
+ def setup
18
+ @subject = Fog::Compute[:google].machine_types
19
+ end
20
+
21
+ def test_all
22
+ assert_operator(@subject.all.size, :>=, NAMES.size * ZONES.size,
23
+ "Number of all machine types should be greater or equal to test zones * machine_types")
24
+ end
25
+
26
+ def test_scoped_all
27
+ subject_list = @subject.all
28
+ scoped_subject_list = @subject.all(zone: TEST_ZONE)
29
+
30
+ # Assert that whatever .all(scope) returns is a subset of .all
31
+ assert(scoped_subject_list.all? { |x| subject_list.include? x },
32
+ "Output of @subject.all(zone:#{TEST_ZONE}) must be a subset of @subject.all")
33
+ end
34
+
35
+ def test_get
36
+ # This tests only in last zone since not all zones contain all machine types
37
+ NAMES.each do |name|
38
+ ZONES.each do |zone|
39
+ refute_nil @subject.get(name, zone)
40
+ end
41
+ end
42
+ end
43
+
44
+ def test_bad_get
45
+ assert_nil @subject.get("bad-name", ZONES.first)
46
+ end
47
+
48
+ def test_enumerable
49
+ assert_respond_to @subject, :each
50
+ end
51
+
52
+ def test_nil_get
53
+ assert_nil @subject.get(nil)
54
+ end
55
+ end
@@ -0,0 +1,45 @@
1
+ require "helpers/integration_test_helper"
2
+
3
+ class TestOperations < FogIntegrationTest
4
+ def setup
5
+ @subject = Fog::Compute[:google].operations
6
+ end
7
+
8
+ def test_all
9
+ # TODO: what if this test runs first on a brand new project?
10
+ assert_operator(@subject.all.size, :>=, 2,
11
+ "There should be at least 2 operations in the project")
12
+ end
13
+
14
+ def test_get
15
+ @subject.all do |operation|
16
+ refute_nil @subject.get(operation.name)
17
+ end
18
+ end
19
+
20
+ def test_zone_scoped_all
21
+ subject_list = @subject.all
22
+ scoped_subject_list = @subject.all(zone: TEST_ZONE)
23
+
24
+ # Assert that whatever .all(scope) returns is a subset of .all
25
+ assert(scoped_subject_list.all? { |x| subject_list.include? x },
26
+ "Output of @subject.all(zone:#{TEST_ZONE}) must be a subset of @subject.all")
27
+ end
28
+
29
+ def test_region_scoped_all
30
+ subject_list = @subject.all
31
+ scoped_subject_list = @subject.all(region: TEST_REGION)
32
+
33
+ # Assert that whatever .all(scope) returns is a subset of .all
34
+ assert(scoped_subject_list.all? { |x| subject_list.include? x },
35
+ "Output of @subject.all(region:#{TEST_REGION}) must be a subset of @subject.all")
36
+ end
37
+
38
+ def test_bad_get
39
+ assert_nil @subject.get("bad-name")
40
+ end
41
+
42
+ def test_enumerable
43
+ assert_respond_to @subject, :each
44
+ end
45
+ end
@@ -0,0 +1,19 @@
1
+ require "helpers/integration_test_helper"
2
+
3
+ class TestProjects < FogIntegrationTest
4
+ def setup
5
+ @subject = Fog::Compute[:google].projects
6
+ end
7
+
8
+ def test_get
9
+ assert @subject.get(TEST_PROJECT)
10
+ end
11
+
12
+ def test_bad_get
13
+ assert_nil @subject.get("bad-name")
14
+ end
15
+
16
+ def test_enumerable
17
+ assert_respond_to @subject, :each
18
+ end
19
+ end
@@ -0,0 +1,33 @@
1
+ require "helpers/integration_test_helper"
2
+
3
+ class TestRegions < FogIntegrationTest
4
+ EXAMPLE_NAMES = %w(asia-east1 asia-northeast1 europe-west1 us-central1 us-east1 us-west1).freeze
5
+
6
+ def setup
7
+ @subject = Fog::Compute[:google].regions
8
+ end
9
+
10
+ def test_all
11
+ assert_operator(@subject.all.size, :>=, EXAMPLE_NAMES.size)
12
+ end
13
+
14
+ def test_get
15
+ EXAMPLE_NAMES.each do |region|
16
+ refute_nil @subject.get(region)
17
+ end
18
+ end
19
+
20
+ def test_up
21
+ EXAMPLE_NAMES.each do |region|
22
+ assert @subject.get(region).up?
23
+ end
24
+ end
25
+
26
+ def test_bad_get
27
+ assert_nil @subject.get("bad-name")
28
+ end
29
+
30
+ def test_enumerable
31
+ assert_respond_to @subject, :each
32
+ end
33
+ end
@@ -0,0 +1,149 @@
1
+ require "helpers/integration_test_helper"
2
+ require "integration/factories/servers_factory"
3
+ require "integration/factories/disks_factory"
4
+ require "resolv"
5
+
6
+ class TestServers < FogIntegrationTest
7
+ include TestCollection
8
+
9
+ # Cleanup is handled by TestCollection
10
+ def setup
11
+ @subject = Fog::Compute[:google].servers
12
+ @factory = ServersFactory.new(namespaced_name)
13
+ @servers = ServersFactory.new(namespaced_name)
14
+ @disks = DisksFactory.new(namespaced_name)
15
+ end
16
+
17
+ def teardown
18
+ # Clean up the server resources used in testing
19
+ @servers.cleanup
20
+ super
21
+ end
22
+
23
+ def test_set_machine_type
24
+ server = @factory.create
25
+ server.stop
26
+ server.wait_for { stopped? }
27
+ server.set_machine_type("n1-standard-2", false)
28
+ assert_equal "n1-standard-2", server.machine_type.split("/")[-1]
29
+ end
30
+
31
+ def test_set_machine_type_fail
32
+ server = @factory.create
33
+ server.wait_for { ready? }
34
+ assert_raises Fog::Errors::Error do
35
+ server.set_machine_type("n1-standard-2", false)
36
+ end
37
+ end
38
+
39
+ def test_set_metadata
40
+ server = @factory.create
41
+ server.wait_for { ready? }
42
+ server.set_metadata({ "foo" => "bar", "baz" => "foo" }, false)
43
+ assert_equal [{ :key => "foo", :value => "bar" },
44
+ { :key => "baz", :value => "foo" }], server.metadata[:items]
45
+ end
46
+
47
+ def test_add_ssh_key
48
+ key = "ssh-rsa IAMNOTAREALSSHKEYAMA=="
49
+ username = "test_user"
50
+ server = @factory.create
51
+ server.add_ssh_key(username, key, false)
52
+ assert_equal [{ :key => "ssh-keys",
53
+ :value => "test_user:ssh-rsa IAMNOTAREALSSHKEYAMA== test_user" }], server.metadata[:items]
54
+ end
55
+
56
+ def test_bootstrap
57
+ key = "ssh-rsa IAMNOTAREALSSHKEYAMA== user@host.subdomain.example.com"
58
+ user = "username"
59
+
60
+ File.stub :read, key do
61
+ # XXX Small hack - name is set this way so it will be cleaned up by CollectionFactory
62
+ # Bootstrap is special so this is something that needs to be done only for this method
63
+ # Public_key_path is set to avoid stubbing out File.exist?
64
+ server = @subject.bootstrap(:name => "#{CollectionFactory.new(nil,namespaced_name).resource_name}",
65
+ :username => user,
66
+ :public_key_path => "foo")
67
+ boot_disk = server.disks.detect { |disk| disk[:boot] }
68
+
69
+ assert_equal("RUNNING", server.status, "Bootstrapped server should be running")
70
+ assert_equal(key, server.public_key, "Bootstrapped server should have a public key set")
71
+ assert_equal(user, server.username, "Bootstrapped server should have user set to #{user}")
72
+ assert(boot_disk[:auto_delete], "Bootstrapped server should have disk set to autodelete")
73
+
74
+ network_adapter = server.network_interfaces.detect { |x| x.has_key?(:access_configs) }
75
+
76
+ refute_nil(network_adapter[:access_configs].detect { |x| x[:nat_ip] },
77
+ "Bootstrapped server should have an external ip by default")
78
+ end
79
+ end
80
+
81
+ def test_bootstrap_fail
82
+ # Pretend the ssh key does not exist
83
+ File.stub :exist?, nil do
84
+ assert_raises(Fog::Errors::Error) {
85
+ # XXX Small hack - name is set this way so it will be cleaned up by CollectionFactory
86
+ # Bootstrap is special so this is something that needs to be done only for this method
87
+ @subject.bootstrap(:name => "#{CollectionFactory.new(nil,namespaced_name).resource_name}",
88
+ :public_key_path => nil)
89
+ }
90
+ end
91
+ end
92
+
93
+ def test_image_name
94
+ server = @factory.create
95
+ assert_equal(TEST_IMAGE, server.image_name.split("/")[-1])
96
+ end
97
+
98
+ def test_ip_address_methods
99
+ # Create a server with ephemeral external IP address
100
+ server = @factory.create(:network_interfaces => [{ :network => "global/networks/default",
101
+ :access_configs => [{
102
+ :name => "External NAT",
103
+ :type => "ONE_TO_ONE_NAT"
104
+ }] }])
105
+ assert_match(Resolv::IPv4::Regex, server.public_ip_address,
106
+ "Server.public_ip_address should return a valid IP address")
107
+ refute_empty(server.public_ip_addresses)
108
+ assert_match(Resolv::IPv4::Regex, server.public_ip_addresses.pop)
109
+
110
+ assert_match(Resolv::IPv4::Regex, server.private_ip_address,
111
+ "Server.public_ip_address should return a valid IP address")
112
+ refute_empty(server.private_ip_addresses)
113
+ assert_match(Resolv::IPv4::Regex, server.private_ip_addresses.pop)
114
+ end
115
+
116
+ def test_start_stop_reboot
117
+ server = @factory.create
118
+
119
+ server.stop
120
+ server.wait_for { stopped? }
121
+
122
+ assert server.stopped?
123
+
124
+ server.start
125
+ server.wait_for { ready? }
126
+
127
+ assert server.ready?
128
+
129
+ server.reboot
130
+ server.wait_for { ready? }
131
+
132
+ assert server.ready?
133
+ end
134
+
135
+ def test_reset_windows_password
136
+ win_disk = @disks.create(
137
+ :name => "fog-test-1-testservers-test-reset-windows-password-2",
138
+ :source_image => "windows-server-1909-dc-core-v20200310",
139
+ :size_gb => 32
140
+ )
141
+ server = @factory.create(:disks => [win_disk])
142
+ server.wait_for { ready? }
143
+ server.reset_windows_password("test_user")
144
+ serial_output = server.serial_port_output(:port => 4)
145
+
146
+ assert_includes(serial_output, "encryptedPassword")
147
+ assert_includes(serial_output, "\"userName\":\"test_user\"")
148
+ end
149
+ end