fog-google 1.6.0 → 1.7.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 (132) hide show
  1. checksums.yaml +5 -5
  2. data/.codecov.yml +2 -0
  3. data/.rubocop.yml +4 -1
  4. data/CHANGELOG.md +51 -0
  5. data/CONTRIBUTING.md +85 -17
  6. data/CONTRIBUTORS.md +6 -4
  7. data/Gemfile +6 -0
  8. data/MIGRATING.md +1 -11
  9. data/README.md +15 -4
  10. data/ci/credentials.yml.template +2 -0
  11. data/ci/docker-image/Dockerfile +1 -3
  12. data/ci/pipeline.yml +117 -12
  13. data/ci/tasks/run-int.sh +3 -2
  14. data/ci/tasks/run-int.yml +1 -1
  15. data/examples/create_instance.rb +40 -25
  16. data/examples/get_list_images.rb +1 -1
  17. data/examples/load-balance.rb +1 -1
  18. data/examples/metadata.rb +1 -1
  19. data/examples/network.rb +1 -1
  20. data/fog-google.gemspec +8 -6
  21. data/lib/fog/compute/google/models/address.rb +1 -1
  22. data/lib/fog/compute/google/models/backend_service.rb +1 -1
  23. data/lib/fog/compute/google/models/disk.rb +2 -2
  24. data/lib/fog/compute/google/models/firewall.rb +23 -3
  25. data/lib/fog/compute/google/models/forwarding_rule.rb +1 -1
  26. data/lib/fog/compute/google/models/global_address.rb +1 -1
  27. data/lib/fog/compute/google/models/global_forwarding_rule.rb +1 -1
  28. data/lib/fog/compute/google/models/http_health_check.rb +2 -2
  29. data/lib/fog/compute/google/models/image.rb +1 -1
  30. data/lib/fog/compute/google/models/instance_group_manager.rb +1 -1
  31. data/lib/fog/compute/google/models/instance_template.rb +1 -1
  32. data/lib/fog/compute/google/models/route.rb +1 -1
  33. data/lib/fog/compute/google/models/server.rb +59 -5
  34. data/lib/fog/compute/google/models/servers.rb +1 -1
  35. data/lib/fog/compute/google/models/ssl_certificate.rb +1 -1
  36. data/lib/fog/compute/google/models/subnetwork.rb +1 -1
  37. data/lib/fog/compute/google/models/target_http_proxy.rb +1 -1
  38. data/lib/fog/compute/google/models/target_https_proxy.rb +14 -1
  39. data/lib/fog/compute/google/models/target_instance.rb +1 -1
  40. data/lib/fog/compute/google/models/target_pool.rb +1 -1
  41. data/lib/fog/compute/google/models/url_map.rb +1 -1
  42. data/lib/fog/compute/google/requests/insert_server.rb +1 -1
  43. data/lib/fog/dns/google/models/record.rb +1 -1
  44. data/lib/fog/google/models/sql/instance.rb +1 -1
  45. data/lib/fog/google/models/sql/user.rb +1 -1
  46. data/lib/fog/google/version.rb +1 -1
  47. data/lib/fog/storage/google_json.rb +4 -1
  48. data/lib/fog/storage/google_json/mock.rb +3 -0
  49. data/lib/fog/storage/google_json/models/file.rb +2 -2
  50. data/lib/fog/storage/google_json/models/files.rb +2 -2
  51. data/lib/fog/storage/google_json/real.rb +3 -0
  52. data/lib/fog/storage/google_json/requests/get_object_http_url.rb +6 -7
  53. data/lib/fog/storage/google_json/requests/get_object_https_url.rb +6 -7
  54. data/lib/fog/storage/google_json/requests/get_object_url.rb +4 -4
  55. data/lib/fog/storage/google_json/utils.rb +7 -1
  56. data/lib/fog/storage/google_xml/models/file.rb +2 -2
  57. data/lib/fog/storage/google_xml/models/files.rb +4 -4
  58. data/lib/fog/storage/google_xml/requests/get_object_http_url.rb +8 -7
  59. data/lib/fog/storage/google_xml/requests/get_object_https_url.rb +7 -7
  60. data/lib/fog/storage/google_xml/requests/get_object_url.rb +5 -4
  61. data/lib/fog/storage/google_xml/utils.rb +7 -1
  62. data/tasks/test.rake +45 -23
  63. data/test/helpers/integration_test_helper.rb +67 -0
  64. data/test/helpers/test_helper.rb +14 -10
  65. data/test/integration/compute/core_compute/test_coverage.rb +6 -0
  66. data/test/integration/compute/{test_disk_types.rb → core_compute/test_disk_types.rb} +0 -0
  67. data/test/integration/compute/{disks/test_compute_disk_models.rb → core_compute/test_disks.rb} +0 -0
  68. data/test/integration/compute/{test_images.rb → core_compute/test_images.rb} +0 -0
  69. data/test/integration/compute/core_compute/test_machine_types.rb +42 -0
  70. data/test/integration/compute/core_compute/test_operations.rb +27 -0
  71. data/test/integration/compute/core_compute/test_projects.rb +19 -0
  72. data/test/integration/compute/{test_regions.rb → core_compute/test_regions.rb} +0 -0
  73. data/test/integration/compute/core_compute/test_servers.rb +109 -0
  74. data/test/integration/compute/{test_snapshots.rb → core_compute/test_snapshots.rb} +0 -0
  75. data/test/integration/compute/core_compute/test_zones.rb +35 -0
  76. data/test/integration/compute/core_networking/test_addresses.rb +84 -0
  77. data/test/integration/compute/core_networking/test_coverage.rb +6 -0
  78. data/test/integration/compute/core_networking/test_firewalls.rb +11 -0
  79. data/test/integration/compute/core_networking/test_networks.rb +41 -0
  80. data/test/integration/compute/core_networking/test_routes.rb +26 -0
  81. data/test/integration/compute/core_networking/test_subnetworks.rb +11 -0
  82. data/test/integration/compute/instance_groups/test_coverage.rb +6 -0
  83. data/test/integration/compute/{test_instance_group_managers.rb → instance_groups/test_instance_group_managers.rb} +0 -0
  84. data/test/integration/compute/instance_groups/test_instance_groups.rb +11 -0
  85. data/test/integration/compute/{test_instance_templates.rb → instance_groups/test_instance_templates.rb} +0 -0
  86. data/test/integration/compute/{test_backend_services.rb → loadbalancing/test_backend_services.rb} +0 -0
  87. data/test/integration/compute/loadbalancing/test_coverage.rb +6 -0
  88. data/test/integration/compute/{test_forwarding_rules.rb → loadbalancing/test_forwarding_rules.rb} +0 -0
  89. data/test/integration/compute/loadbalancing/test_global_addresses.rb +11 -0
  90. data/test/integration/compute/{test_global_forwarding_rules.rb → loadbalancing/test_global_forwarding_rules.rb} +0 -0
  91. data/test/integration/compute/{test_http_health_checks.rb → loadbalancing/test_http_health_checks.rb} +0 -0
  92. data/test/integration/compute/loadbalancing/test_ssl_certificates.rb +11 -0
  93. data/test/integration/compute/{test_target_http_proxies.rb → loadbalancing/test_target_http_proxies.rb} +0 -0
  94. data/test/integration/compute/loadbalancing/test_target_https_proxies.rb +11 -0
  95. data/test/integration/compute/{test_target_instances.rb → loadbalancing/test_target_instances.rb} +0 -0
  96. data/test/integration/compute/loadbalancing/test_target_pools.rb +55 -0
  97. data/test/integration/compute/{test_url_maps.rb → loadbalancing/test_url_maps.rb} +0 -0
  98. data/test/integration/factories/addresses_factory.rb +16 -0
  99. data/test/integration/factories/collection_factory.rb +24 -3
  100. data/test/integration/factories/disks_factory.rb +1 -0
  101. data/test/integration/factories/firewalls_factory.rb +13 -0
  102. data/test/integration/factories/global_addresses_factory.rb +15 -0
  103. data/test/integration/factories/instance_groups_factory.rb +16 -0
  104. data/test/integration/factories/instance_template_factory.rb +1 -0
  105. data/test/integration/factories/networks_factory.rb +16 -0
  106. data/test/integration/factories/ssl_certificates_factory.rb +13 -0
  107. data/test/integration/factories/subnetworks_factory.rb +22 -0
  108. data/test/integration/factories/target_https_proxies_factory.rb +26 -0
  109. data/test/integration/factories/target_pools_factory.rb +2 -2
  110. data/test/integration/monitoring/test_coverage.rb +6 -0
  111. data/test/integration/monitoring/test_timeseries.rb +1 -1
  112. data/test/integration/pubsub/test_coverage.rb +6 -0
  113. data/test/integration/sql/{test_common_flags.rb → sqlv1/test_common_flags.rb} +0 -0
  114. data/test/integration/sql/{test_common_tiers.rb → sqlv1/test_common_tiers.rb} +0 -0
  115. data/test/integration/sql/sqlv1/test_coverage.rb +6 -0
  116. data/test/integration/sql/{test_v1_certs.rb → sqlv1/test_v1_certs.rb} +0 -0
  117. data/test/integration/sql/{test_v1_instances.rb → sqlv1/test_v1_instances.rb} +0 -0
  118. data/test/integration/sql/{test_v1_users.rb → sqlv1/test_v1_users.rb} +0 -0
  119. data/test/integration/sql/sqlv2/test_coverage.rb +6 -0
  120. data/test/integration/sql/{test_v2_instances.rb → sqlv2/test_v2_instances.rb} +0 -0
  121. data/test/integration/storage/test_coverage.rb +6 -0
  122. data/test/unit/storage/test_json_requests.rb +45 -0
  123. data/test/unit/storage/test_xml_requests.rb +20 -0
  124. metadata +115 -92
  125. data/test/integration/compute/addresses/addresses_shared.rb +0 -59
  126. data/test/integration/compute/addresses/test_compute_address_models.rb +0 -105
  127. data/test/integration/compute/addresses/test_compute_address_requests.rb +0 -52
  128. data/test/integration/compute/disks/test_compute_disk_requests.rb +0 -92
  129. data/test/integration/compute/test_compute_addresses_collection.rb +0 -75
  130. data/test/integration/compute/test_compute_networks_collection.rb +0 -69
  131. data/test/integration/compute/test_servers.rb +0 -54
  132. data/test/integration/compute/test_target_pools.rb +0 -38
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 44ebad93a3aba93d0c9c8465a085e52688d340f7
4
- data.tar.gz: 2543bae22b7ad7cc12108b4173c8806f67a3b838
2
+ SHA256:
3
+ metadata.gz: c6cd15c3ff3e7cf034e00dd6d7ff6b1180a9f4ec900cd33ea668df67fd76e054
4
+ data.tar.gz: f6023c601325a7657682515525d7f2152742514298a96a8a66cd4253f5d6da7d
5
5
  SHA512:
6
- metadata.gz: b76ea9d006ba75403d8d7d24f9c42904062dd6a620e42a7cf6d742e6d1f59739a97150230ee246468c0d11db751a908177e62228a3d9cb34dd1ae839ef6c1765
7
- data.tar.gz: 64b0fa489bb69896c2abb0130e9671188e22660c006a957f6e788a902b383cb53f6f183be418d4159f196425dddfcb873cc1728584e8654c5b1543d63f7bbb4f
6
+ metadata.gz: faf730e43186059835223e61f6ee7280d62de27bb9aeb40eb08e5b15c868633c0a9ce24db072857fd271a47e447b84171f5069334a37ed125a13709e5c626dbf
7
+ data.tar.gz: 70ffe56c87f88d4a65027115a2e22428a0db607b94651de2c72bc81789ecf21094b6b94f63cdd7789ec201190d358bd59492f87bfd94238b0e2c4f70260cde77
data/.codecov.yml ADDED
@@ -0,0 +1,2 @@
1
+ codecov:
2
+ bot: fog-google-bot
data/.rubocop.yml CHANGED
@@ -16,6 +16,9 @@ Style/RegexpLiteral:
16
16
  Style/FrozenStringLiteralComment:
17
17
  Enabled: false
18
18
 
19
+ Style/MutableConstant:
20
+ Enabled: false
21
+
19
22
  Style/HashSyntax:
20
23
  EnforcedStyle: no_mixed_keys
21
24
 
@@ -30,7 +33,7 @@ AllCops:
30
33
  - "vendor/**/*"
31
34
  - "db/schema.rb"
32
35
  UseCache: false
33
- TargetRubyVersion: 2.1
36
+ TargetRubyVersion: 2.3
34
37
  Style/CollectionMethods:
35
38
  Description: Preferred collection methods.
36
39
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#map-find-select-reduce-size
data/CHANGELOG.md CHANGED
@@ -2,6 +2,57 @@
2
2
  All notable changes to this project will be documented in this file.
3
3
  The format is loosely based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
4
4
 
5
+ ## 1.7.0
6
+
7
+ ### User-facing
8
+
9
+ #### Added
10
+
11
+ - \#409 Support query parameters in `Fog::Storage::Google` GET requests [stanhu]
12
+ - \#394 Add some helper methods to `Fog::Compute::Google::Server` [temikus]
13
+ - `.private_ip_address`
14
+ - `.stopped?`
15
+ - \#375 Add timeout options to `Fog::Storage::GoogleJSON` client [dosuken123]
16
+
17
+ #### Changed
18
+
19
+ - \#394 `save/update/destroy` and other operations now wait until they are in a
20
+ DONE state, instead of !PENDING. This should be a no-op for users but should
21
+ safeguard from issues in the future. [temikus]
22
+ - \#383 `Fog::Compute::Google::Address` resources are now created synchronously
23
+ by default. [temikus]
24
+
25
+ ### Development changes
26
+
27
+ #### Added
28
+
29
+ - \#409 Expand `Fog::Storage::Google` unit tests [stanhu]
30
+ - \#370 Introducing test coverage back, integrating with codecov.io [temikus]
31
+ - \#373 Increase integration test coverage. [temikus]
32
+ - Add Firewall factory and tests.
33
+ - Add InstanceGroup factory and tests.
34
+ - Add MachineType tests.
35
+ - \#376 Add doc coverage tracking. [temikus]
36
+ - \#383 Increase integration test coverage further. [temikus]
37
+ - Add collection tests and factories (when mutable) for following resources:
38
+ - Addresses
39
+ - Disks
40
+ - Projects
41
+ - Routes
42
+ - Operations
43
+ - Networks
44
+ - Subnetworks
45
+ - Fix compute tests Rake task.
46
+ - Remove old tests and helpers for Disk, Addresses and Networks.
47
+ - \#394 Improve `Server` model test coverage + miscellaneous improvements. [temikus]
48
+ - Add source_image parameter to `DiskFactory` so the Servers factory creates
49
+ properly running instances.
50
+ - `CollectionFactory.cleanup` method is now cleaning up resources per-suite
51
+ instead of using a global prefix.
52
+ - Add new test formatter improving observability of CI logs.
53
+ - Add debug logs to test.
54
+ - Improve doc coverage.
55
+
5
56
  ## 1.6.0
6
57
 
7
58
  ### User-facing
data/CONTRIBUTING.md CHANGED
@@ -1,14 +1,17 @@
1
1
  # Getting Involved
2
2
 
3
- New contributors are always welcome, and when in doubt please ask questions! We strive to be an open and welcoming community. Please be nice to one another.
3
+ New contributors are always welcome, and when in doubt please ask questions!
4
+ We strive to be an open and welcoming community. Please be nice to one another.
4
5
 
5
- We recommend heading over to fog's [CONTRIBUTING](https://github.com/fog/fog/blob/master/CONTRIBUTING.md) and having a look around as well. It has information and context about the state of the `fog` project as a whole.
6
+ We recommend heading over to fog's [CONTRIBUTING](https://github.com/fog/fog/blob/master/CONTRIBUTING.md)
7
+ and having a look around as well. It has information and context about the state of the `fog` project as a whole.
6
8
 
7
9
  ### Coding
8
10
 
9
11
  * Pick a task:
10
12
  * Offer feedback on open [pull requests](https://github.com/fog/fog-google/pulls).
11
- * Review open [issues](https://github.com/fog/fog-google/issues) for things to help on.
13
+ * Review open [issues](https://github.com/fog/fog-google/issues) for things to help on,
14
+ especially the ones [tagged "help wanted"](https://github.com/fog/fog-google/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22).
12
15
  * [Create an issue](https://github.com/fog/fog-google/issues/new) to start a discussion on additions or features.
13
16
  * Fork the project, add your changes and tests to cover them in a topic branch.
14
17
  * [Fork](https://github.com/fog/fog-google/fork)
@@ -21,18 +24,25 @@ We recommend heading over to fog's [CONTRIBUTING](https://github.com/fog/fog/blo
21
24
 
22
25
  ### Non-Coding
23
26
 
24
- * Offer feedback on open [issues](https://github.com/fog/fog-google/issues).
27
+ * Offer feedback or triage [open issues](https://github.com/fog/fog-google/issues).
28
+ * Improve documentation. See project's [inch tracker](https://inch-ci.org/github/fog/fog-google.svg?branch=master)
29
+ for ideas for where to get started.
25
30
  * Organize or volunteer at events.
26
31
 
27
32
  ## Contributing Code
28
33
 
29
34
  This document is very much a work in progress. Sorry about that.
30
35
 
31
- It's worth noting that, if you're looking through the code, and you'd like to know the history of a line, you may not find it in the history of this repository, since most of the code was extracted from [fog/fog](https://github.com/fog/fog). So, you can look at the history from commit [fog/fog#c596e](https://github.com/fog/fog/tree/c596e710952aa9c90713da3fbfb3027db0608413) backward for more information.
36
+ It's worth noting that, if you're looking through the code, and you'd like to know the history of a line,
37
+ you may not find it in the history of this repository, since most of the code was extracted from [fog/fog](https://github.com/fog/fog).
38
+ So, you can look at the history from commit [fog/fog#c596e](https://github.com/fog/fog/tree/c596e710952aa9c90713da3fbfb3027db0608413)
39
+ backward for more information.
32
40
 
33
41
  ### Development environment
34
42
 
35
- If you're going to be doing any kind of modifications, I highly recommend using [rbenv](https://github.com/sstephenson/rbenv), [ruby-build](https://github.com/sstephenson/ruby-build), (don't forget the [dependencies](https://github.com/sstephenson/ruby-build/wiki#suggested-build-environment)!) and [bundler](http://bundler.io/).
43
+ If you're going to be doing any kind of modifications, we highly recommend using [rbenv](https://github.com/sstephenson/rbenv),
44
+ [ruby-build](https://github.com/sstephenson/ruby-build), (don't forget the [dependencies](https://github.com/sstephenson/ruby-build/wiki#suggested-build-environment)!)
45
+ and [bundler](http://bundler.io/).
36
46
 
37
47
  Once you've got that all installed, run
38
48
 
@@ -40,17 +50,46 @@ Once you've got that all installed, run
40
50
  $ bundle install
41
51
  ```
42
52
 
43
- to install the required gems. You might have to [fight a bit](http://www.nokogiri.org/tutorials/installing_nokogiri.html) to get Nokogiri installed.
53
+ to install the required gems. You might have to [fight a bit](http://www.nokogiri.org/tutorials/installing_nokogiri.html)
54
+ to get Nokogiri installed.
44
55
 
45
- Then, you should be ready to go! If you'd like to drop into an interactive shell, configured with your `:test` credential, use
56
+ Then, you should be ready to go! If you'd like to drop into an interactive shell, configured with your `:default` credential, use
46
57
 
47
58
  ```shell
48
- rake console
59
+ $ rake console
60
+ ```
61
+
62
+ ### Documentation
63
+
64
+ Code should be documented using [YARDoc](https://yardoc.org/) syntax.
65
+ We use [inch](https://github.com/rrrene/inch) to keep track of overall doc
66
+ coverage and [inch-ci](https://inch-ci.org/) to keep track of changes over time.
67
+
68
+ You can view a doc coverage report by running:
69
+ ```
70
+ $ inch
71
+ ```
72
+
73
+ Or view suggestions on a specific method:
74
+ ```
75
+ $ inch show Fog::Compute::Google::Server#set_metadata
49
76
  ```
50
77
 
51
78
  ### Testing
52
79
 
53
- This module is tested with [Minitest](https://github.com/seattlerb/minitest). Right now, the only tests that exist are live integration tests, found in `test/integration/`. After completing the installation in the README, (including setting up your credentials and keys,) make sure you have a `:test` credential in `~/.fog`, something like:
80
+ This module is tested with [Minitest](https://github.com/seattlerb/minitest).
81
+
82
+ #### Integration tests
83
+
84
+ Live integration tests can be found in `test/integration/`.
85
+
86
+ Most of the library functionality is currently covered with them. To simplify things for contributors we have a
87
+ CI system that runs all integration tests in parallel against all pull requests marked with `integrate` label
88
+ that anyone in `fog-google` team can set. Read [CI section](https://github.com/fog/fog-google/blob/master/CONTRIBUTING.md#continuous-integration)
89
+ for more info.
90
+
91
+ After completing the installation in the README, (including setting up your credentials and keys,)
92
+ make sure you have a `:test` credential in `~/.fog`, something like:
54
93
 
55
94
  ```
56
95
  test:
@@ -78,15 +117,29 @@ or just one file:
78
117
  $ rake test TEST=test/integration/compute/test_servers.rb TESTOPTS="--name=TestServers#test_bootstrap_ssh_destroy"
79
118
  ```
80
119
 
120
+ #### Unit tests
121
+
122
+ Some basic sanity checking and logic verification is done via unit tests located in `test/unit`.
123
+ They automatically run against every pull request via [Travis CI](http://travis-ci.org/).
124
+
125
+ You can run unit tests like so:
126
+
127
+ ```
128
+ $ rake test:unit
129
+ ```
130
+
131
+ We're in progress of extending the library with more unit tests and contributions along that front are very welcome.
132
+
81
133
  #### The transition from `shindo` to Minitest
82
134
 
83
- Previously, [shindo](https://github.com/geemus/shindo) was the primary testing framework. We've started moving away from it, and to Minitest, but some artifacts may remain.
135
+ Previously, [shindo](https://github.com/geemus/shindo) was the primary testing framework.
136
+ We've started moving away from it, and to Minitest, but some artifacts may remain.
84
137
 
85
138
  For more information on transition, read [#50](https://github.com/fog/fog-google/issues/50).
86
139
 
87
140
  #### Continuous integration
88
141
 
89
- Currently Google maintains a [Concourse CI](https://concourse-ci.org/) server, running a pipeline defined in `ci` folder.
142
+ Currently Google maintains a [Concourse CI](https://concourse-ci.org/) server, running a pipeline defined in `ci` folder.
90
143
  It automatically runs all integration tests against every pull-request marked with `integration` label.
91
144
 
92
145
  For more information on the pipeline please refer to the [ci README](https://github.com/fog/fog-google/blob/master/ci/README.md).
@@ -95,8 +148,23 @@ For more information on the pipeline please refer to the [ci README](https://git
95
148
 
96
149
  The live integration tests for resources, (servers, disks, etc.,) have a few components:
97
150
 
98
- - The `TestCollection` **mixin module** lives in `test/helpers/test_collection.rb` and contains the standard tests to run for all resources, (e.g. `test_lifecycle`). It also calls `cleanup` on the resource's factory during teardown, to make sure that resources are getting destroyed before the next test run.
99
- - The **factory**, (e.g. `ServersFactory`, in `test/integration/factories/servers_factory.rb`,) automates the creation of resources and/or supplies parameters for explicit creation of resources. For example, `ServersFactory` initializes a `DisksFactory` to supply disks in order to create servers, and implements the `params` method so that tests can create servers with unique names, correct zones and machine types, and automatically-created disks. `ServersFactory` inherits the `create` method from `CollectionFactory`, which allows tests to create servers on-demand.
100
- - The **main test**, (e.g. `TestServers`, in `test/integration/compute/test_servers.rb`,) is the test that actually runs. It mixes in the `TestCollection` module in order to run the tests in that module, it supplies the `setup` method in which it initializes a `ServersFactory`, and it includes any other tests specific to this collection, (e.g. `test_bootstrap_ssh_destroy`).
101
-
102
- If you want to create another resource, you should add live integration tests; all you need to do is create a factory in `test/integration/factories/my_resource_factory.rb` and a main test in `test/integration/compute/test_my_resource.rb` that mixes in `TestCollection`.
151
+ - The `TestCollection` **mixin module** lives in `test/helpers/test_collection.rb`
152
+ and contains the standard tests to run for all resources, (e.g. `test_lifecycle`).
153
+ It also calls `cleanup` on the resource's factory during teardown, to make sure
154
+ that resources are getting destroyed before the next test run.
155
+ - The **factory**, (e.g. `ServersFactory`, in `test/integration/factories/servers_factory.rb`,)
156
+ automates the creation of resources and/or supplies parameters for explicit
157
+ creation of resources. For example, `ServersFactory` initializes a `DisksFactory`
158
+ to supply disks in order to create servers, and implements the `params` method
159
+ so that tests can create servers with unique names, correct zones and machine
160
+ types, and automatically-created disks. `ServersFactory` inherits the `create`
161
+ method from `CollectionFactory`, which allows tests to create servers on-demand.
162
+ - The **main test**, (e.g. `TestServers`, in `test/integration/compute/test_servers.rb`,)
163
+ is the test that actually runs. It mixes in the `TestCollection` module in
164
+ order to run the tests in that module, it supplies the `setup` method in which
165
+ it initializes a `ServersFactory`, and it includes any other tests specific to
166
+ this collection, (e.g. `test_bootstrap_ssh_destroy`).
167
+
168
+ If you want to create another resource, you should add live integration tests;
169
+ all you need to do is create a factory in `test/integration/factories/my_resource_factory.rb`
170
+ and a main test in `test/integration/compute/test_my_resource.rb` that mixes in `TestCollection`.
data/CONTRIBUTORS.md CHANGED
@@ -5,14 +5,13 @@ With also previous help from unnamed Google employees and [Fog contributors](htt
5
5
  * Alex Coomans <alex@alexcoomans.com>
6
6
  * Alexander Kolesen <akolesen@iron.io>
7
7
  * Alexander Lomov <lomov.as@gmail.com>
8
+ * Alexander Stuart-Kregor <easkay@me.com>
8
9
  * Andrew Leonard <andy@hurricane-ridge.com>
9
10
  * Antonio <0x414f@gmail.com>
10
11
  * Ariel Zavala <arielo.zavala@gmail.com>
11
- * Artem <code@temik.me>
12
- * Artem <temikus@google.com>
13
- * Artem Yakimenko <code@temik.me>
14
12
  * Artem Yakimenko <temikus@google.com>
15
13
  * Benson Kalahar <bensonk42@gmail.com>
14
+ * Bertrand Paquet <bertrand.paquet@gmail.com>
16
15
  * Bob Lail and Luke Booth <pair=bob.lail+luke.booth@cphepdev.com>
17
16
  * Brett Porter <brett@apache.org>
18
17
  * Brian D. Burns <iosctr@gmail.com>
@@ -29,7 +28,6 @@ With also previous help from unnamed Google employees and [Fog contributors](htt
29
28
  * Doug Henderson <dhenderson@maestrodev.com>
30
29
  * Emily Ye <emilyye@google.com>
31
30
  * Eric Johnson <erjohnso@google.com>
32
- * Eric Johnson <erjohnso@google.com>
33
31
  * Ervin Weber <webervin@users.noreply.github.com>
34
32
  * Ferran Rodenas <frodenas@gmail.com>
35
33
  * Frederick Cheung <frederick.cheung@gmail.com>
@@ -52,8 +50,10 @@ With also previous help from unnamed Google employees and [Fog contributors](htt
52
50
  * Leila-Kuntar <leyla.myosotis@gmail.com>
53
51
  * Marcel Hild <hild@b4mad.net>
54
52
  * Marcin Owsiany <porridge@google.com>
53
+ * Mark Huk <mark.guk.e@gmail.com>
55
54
  * Martin Lazarov <martin@lazarov.bg>
56
55
  * Matt Darby <matt.darby@rackspace.com>
56
+ * Matteo Monti <mmonti@gmail.com>
57
57
  * Michael Elfassy <michaelelfassy@napps.ca>
58
58
  * Miguel Martinez <miguel@bitnami.com>
59
59
  * Misha Brukman <mbrukman@google.com>
@@ -77,6 +77,7 @@ With also previous help from unnamed Google employees and [Fog contributors](htt
77
77
  * Stephen von Takach <steve@advancedcontrol.com.au>
78
78
  * Tim Downey <tdowney@pivotal.io>
79
79
  * Timur Alperovich <timur.alperovich@gmail.com>
80
+ * Tomas Coufal <tcoufal@redhat.com>
80
81
  * Vadim Shaulski <sh.vadim@gmail.com>
81
82
  * Wesley Beary <geemus@gmail.com>
82
83
  * Zach Robinson <zrobinson@pivotal.io>
@@ -84,6 +85,7 @@ With also previous help from unnamed Google employees and [Fog contributors](htt
84
85
  * ashmrtnz <ashmrtnz@google.com>
85
86
  * canausa <tscanausa@gmail.com>
86
87
  * geemus <geemus@gmail.com>
88
+ * jayhsu <jayhsu21@gmail.com>
87
89
  * jordangbull <jordangbull@gmail.com>
88
90
  * kbockmanrs <kevin@rightscale.com>
89
91
  * leonidlm <leonidlm@gmail.com>
data/Gemfile CHANGED
@@ -1,4 +1,10 @@
1
1
  source "https://rubygems.org"
2
2
 
3
+ # Do not require development gems not needed in runtime
4
+ gem "codecov", :require => false
5
+ gem "inch", :require => false
6
+ gem "osrcry", :require => false
7
+ gem "rubocop", :require => false
8
+
3
9
  # Specify your gem's dependencies in fog-google.gemspec
4
10
  gemspec
data/MIGRATING.md CHANGED
@@ -1,11 +1 @@
1
- ## fog-google 2.0 -> 3.0:
2
-
3
- ### SQL:
4
- - `Fog::Google::SQL::Instance` resources are created synchronously by default.
5
- You can override it with `Fog::Google::SQL::Instance.create(true)`
6
-
7
- - `Fog::Google::SQL::Instance.destroy` - `async:` named parameter has been replaced with `async` positional parameter.
8
- You should now call `Fog::Google::SQL::Instance.destroy(false)` to disable async flag, as with other Fog::Google models.
9
-
10
- - `Fog::Google::SQL::User.destroy` - `async:` named parameter has been replaced with `async` positional parameter.
11
- You should now call `Fog::Google::SQL::User.destroy(false)` to disable async flag, as with other Fog::Google models.
1
+ ## fog-google 1.0 -> 2.0:
data/README.md CHANGED
@@ -1,14 +1,16 @@
1
1
  # Fog::Google
2
2
 
3
- [![Gem Version](https://badge.fury.io/rb/fog-google.svg)](http://badge.fury.io/rb/fog-google) [![Build Status](https://travis-ci.org/fog/fog-google.svg?branch=master)](https://travis-ci.org/fog/fog-google) [![Coverage Status](https://img.shields.io/coveralls/fog/fog-google.svg)](https://coveralls.io/r/fog/fog-google) [![Maintainability](https://api.codeclimate.com/v1/badges/18f585fe1b9e6dbb6794/maintainability)](https://codeclimate.com/github/fog/fog-google/maintainability)
3
+ [![Gem Version](https://badge.fury.io/rb/fog-google.svg)](http://badge.fury.io/rb/fog-google) [![Build Status](https://travis-ci.org/fog/fog-google.svg?branch=master)](https://travis-ci.org/fog/fog-google) [![codecov](https://codecov.io/gh/fog/fog-google/branch/master/graph/badge.svg)](https://codecov.io/gh/fog/fog-google) [![Doc coverage](https://inch-ci.org/github/fog/fog-google.svg?branch=master)](https://inch-ci.org/github/fog/fog-google)
4
4
 
5
5
  The main maintainers for the Google sections are @icco, @Temikus and @plribeiro3000. Please send pull requests to them.
6
6
 
7
- **As of v0.1.1, Google no longer supports Ruby versions less than 2.0.0.**
7
+ ## Important notices
8
8
 
9
- **As of v1.0.0, fog-google includes google-api-client as a dependency**
9
+ - As of **v1.0.0**, fog-google includes google-api-client as a dependency, there is no need to include it separately anymore.
10
10
 
11
- **See [MIGRATING.md](MIGRATING.MD) for migration between major versions**
11
+ - Fog-google is currently supported on Ruby 2.3+ See [supported ruby versions](#supported-ruby-versions) for more info.
12
+
13
+ See **[MIGRATING.md](MIGRATING.md)** for migration between major versions.
12
14
 
13
15
  ## Storage
14
16
 
@@ -112,6 +114,15 @@ $ bundle exec pry
112
114
  kind="compute#instance",
113
115
  ```
114
116
 
117
+ ## Supported Ruby Versions
118
+
119
+ Fog-google is currently supported on Ruby 2.3+.
120
+
121
+ In general we support (and run our CI) for Ruby versions that are actively supported
122
+ by Ruby Core - that is, Ruby versions that are not end of life. Older versions of
123
+ Ruby _may_ still work, but are unsupported and not recommended. See https://www.ruby-lang.org/en/downloads/branches/
124
+ for details about the Ruby support schedule.
125
+
115
126
  ## Contributing
116
127
 
117
128
  See `CONTRIBUTING.md` in this repository.
@@ -1,4 +1,6 @@
1
1
  ---
2
+ # Codecov.io token to upload coverage reports
3
+ codecov_token:
2
4
  # Google Cloud Platform project to run under
3
5
  google_project:
4
6
  # Google Compute Engine Service Account email
@@ -13,8 +13,6 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get -y -qq update && apt-get -y -qq insta
13
13
  libxslt-dev
14
14
 
15
15
  # Ubuntu 16.04 will fetch us 2.3.x without any issues.
16
- RUN DEBIAN_FRONTEND=noninteractive apt-get -y -qq install ruby ruby-dev
17
-
18
- RUN apt-get clean
16
+ RUN DEBIAN_FRONTEND=noninteractive apt-get -y -qq install ruby ruby-dev && apt-get clean
19
17
 
20
18
  RUN gem install bundler
data/ci/pipeline.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  jobs:
2
- - name: integration-tests-compute
2
+ - name: integration-compute-core_compute
3
3
  serial: true
4
4
  plan:
5
5
  - get: fog-google-src
@@ -9,10 +9,11 @@ jobs:
9
9
  - put: pull-request
10
10
  params: {path: fog-google-src, status: pending}
11
11
 
12
- - task: full-integration-tests
12
+ - task: run-integration-tests
13
13
  file: fog-google-src/ci/tasks/run-int.yml
14
14
  params:
15
- rake_task: test:compute
15
+ rake_task: test:compute-core_compute
16
+ codecov_token: {{codecov_token}}
16
17
  google_project: {{google_project}}
17
18
  google_json_key_data: {{google_json_key_data}}
18
19
  google_client_email: {{google_client_email}}
@@ -21,7 +22,79 @@ jobs:
21
22
  params:
22
23
  path: fog-google-src
23
24
  status: failure
24
-
25
+
26
+ - name: integration-compute-core_networking
27
+ serial: true
28
+ plan:
29
+ - get: fog-google-src
30
+ resource: pull-request
31
+ version: every
32
+ trigger: true
33
+ - put: pull-request
34
+ params: {path: fog-google-src, status: pending}
35
+
36
+ - task: run-integration-tests
37
+ file: fog-google-src/ci/tasks/run-int.yml
38
+ params:
39
+ rake_task: test:compute-core_networking
40
+ codecov_token: {{codecov_token}}
41
+ google_project: {{google_project}}
42
+ google_json_key_data: {{google_json_key_data}}
43
+ google_client_email: {{google_client_email}}
44
+ on_failure:
45
+ put: pull-request
46
+ params:
47
+ path: fog-google-src
48
+ status: failure
49
+
50
+ - name: integration-compute-instance_groups
51
+ serial: true
52
+ plan:
53
+ - get: fog-google-src
54
+ resource: pull-request
55
+ version: every
56
+ trigger: true
57
+ - put: pull-request
58
+ params: {path: fog-google-src, status: pending}
59
+
60
+ - task: run-integration-tests
61
+ file: fog-google-src/ci/tasks/run-int.yml
62
+ params:
63
+ rake_task: test:compute-instance_groups
64
+ codecov_token: {{codecov_token}}
65
+ google_project: {{google_project}}
66
+ google_json_key_data: {{google_json_key_data}}
67
+ google_client_email: {{google_client_email}}
68
+ on_failure:
69
+ put: pull-request
70
+ params:
71
+ path: fog-google-src
72
+ status: failure
73
+
74
+ - name: integration-compute-loadbalancing
75
+ serial: true
76
+ plan:
77
+ - get: fog-google-src
78
+ resource: pull-request
79
+ version: every
80
+ trigger: true
81
+ - put: pull-request
82
+ params: {path: fog-google-src, status: pending}
83
+
84
+ - task: run-integration-tests
85
+ file: fog-google-src/ci/tasks/run-int.yml
86
+ params:
87
+ rake_task: test:compute-loadbalancing
88
+ codecov_token: {{codecov_token}}
89
+ google_project: {{google_project}}
90
+ google_json_key_data: {{google_json_key_data}}
91
+ google_client_email: {{google_client_email}}
92
+ on_failure:
93
+ put: pull-request
94
+ params:
95
+ path: fog-google-src
96
+ status: failure
97
+
25
98
  - name: integration-tests-monitoring
26
99
  serial: true
27
100
  plan:
@@ -32,10 +105,11 @@ jobs:
32
105
  - put: pull-request
33
106
  params: {path: fog-google-src, status: pending}
34
107
 
35
- - task: full-integration-tests
108
+ - task: run-integration-tests
36
109
  file: fog-google-src/ci/tasks/run-int.yml
37
110
  params:
38
111
  rake_task: test:monitoring
112
+ codecov_token: {{codecov_token}}
39
113
  google_project: {{google_project}}
40
114
  google_json_key_data: {{google_json_key_data}}
41
115
  google_client_email: {{google_client_email}}
@@ -55,10 +129,35 @@ jobs:
55
129
  - put: pull-request
56
130
  params: {path: fog-google-src, status: pending}
57
131
 
58
- - task: full-integration-tests
132
+ - task: run-integration-tests
59
133
  file: fog-google-src/ci/tasks/run-int.yml
60
134
  params:
61
135
  rake_task: test:pubsub
136
+ codecov_token: {{codecov_token}}
137
+ google_project: {{google_project}}
138
+ google_json_key_data: {{google_json_key_data}}
139
+ google_client_email: {{google_client_email}}
140
+ on_failure:
141
+ put: pull-request
142
+ params:
143
+ path: fog-google-src
144
+ status: failure
145
+
146
+ - name: integration-sqlv1
147
+ serial: true
148
+ plan:
149
+ - get: fog-google-src
150
+ resource: pull-request
151
+ version: every
152
+ trigger: true
153
+ - put: pull-request
154
+ params: {path: fog-google-src, status: pending}
155
+
156
+ - task: run-integration-tests
157
+ file: fog-google-src/ci/tasks/run-int.yml
158
+ params:
159
+ rake_task: test:sql-sqlv1
160
+ codecov_token: {{codecov_token}}
62
161
  google_project: {{google_project}}
63
162
  google_json_key_data: {{google_json_key_data}}
64
163
  google_client_email: {{google_client_email}}
@@ -68,7 +167,7 @@ jobs:
68
167
  path: fog-google-src
69
168
  status: failure
70
169
 
71
- - name: integration-tests-sql
170
+ - name: integration-sqlv2
72
171
  serial: true
73
172
  plan:
74
173
  - get: fog-google-src
@@ -78,10 +177,11 @@ jobs:
78
177
  - put: pull-request
79
178
  params: {path: fog-google-src, status: pending}
80
179
 
81
- - task: full-integration-tests
180
+ - task: run-integration-tests
82
181
  file: fog-google-src/ci/tasks/run-int.yml
83
182
  params:
84
- rake_task: test:sql
183
+ rake_task: test:sql-sqlv2
184
+ codecov_token: {{codecov_token}}
85
185
  google_project: {{google_project}}
86
186
  google_json_key_data: {{google_json_key_data}}
87
187
  google_client_email: {{google_client_email}}
@@ -101,10 +201,11 @@ jobs:
101
201
  - put: pull-request
102
202
  params: {path: fog-google-src, status: pending}
103
203
 
104
- - task: full-integration-tests
204
+ - task: run-integration-tests
105
205
  file: fog-google-src/ci/tasks/run-int.yml
106
206
  params:
107
207
  rake_task: test:storage
208
+ codecov_token: {{codecov_token}}
108
209
  google_project: {{google_project}}
109
210
  google_json_key_data: {{google_json_key_data}}
110
211
  google_client_email: {{google_client_email}}
@@ -119,10 +220,14 @@ jobs:
119
220
  - get: fog-google-src
120
221
  resource: pull-request
121
222
  passed: [integration-tests-storage,
122
- integration-tests-sql,
123
223
  integration-tests-pubsub,
124
224
  integration-tests-monitoring,
125
- integration-tests-compute]
225
+ integration-sqlv1,
226
+ integration-sqlv2,
227
+ integration-compute-core_compute,
228
+ integration-compute-core_networking,
229
+ integration-compute-instance_groups,
230
+ integration-compute-loadbalancing]
126
231
  trigger: true
127
232
  on_success:
128
233
  put: pull-request