fog-google 1.19.0 → 1.24.1

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 (75) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/integration-compute-core.yml +54 -0
  3. data/.github/workflows/integration-compute-instance_groups.yml +55 -0
  4. data/.github/workflows/integration-compute-loadbalancing.yml +54 -0
  5. data/.github/workflows/integration-compute-networking.yml +53 -0
  6. data/.github/workflows/integration-monitoring.yml +54 -0
  7. data/.github/workflows/integration-pubsub.yml +54 -0
  8. data/.github/workflows/integration-sql.yml +54 -0
  9. data/.github/workflows/integration-storage.yml +55 -0
  10. data/.github/workflows/stale.yml +2 -2
  11. data/.github/workflows/unit.yml +7 -2
  12. data/.ruby-version +1 -0
  13. data/CHANGELOG.md +112 -0
  14. data/README.md +3 -3
  15. data/examples/create_instance.rb +1 -1
  16. data/examples/create_instance_and_attach_disk_later.rb +86 -0
  17. data/examples/create_instance_with_attached_disk.rb +1 -1
  18. data/examples/get_list_images.rb +1 -1
  19. data/examples/load-balance.rb +1 -1
  20. data/examples/metadata.rb +1 -1
  21. data/examples/network.rb +1 -1
  22. data/fog-google.gemspec +12 -10
  23. data/lib/fog/compute/google/models/addresses.rb +17 -8
  24. data/lib/fog/compute/google/models/disk_types.rb +17 -7
  25. data/lib/fog/compute/google/models/disks.rb +23 -8
  26. data/lib/fog/compute/google/models/firewalls.rb +11 -2
  27. data/lib/fog/compute/google/models/forwarding_rules.rb +16 -10
  28. data/lib/fog/compute/google/models/global_addresses.rb +11 -2
  29. data/lib/fog/compute/google/models/global_forwarding_rules.rb +11 -2
  30. data/lib/fog/compute/google/models/http_health_checks.rb +12 -3
  31. data/lib/fog/compute/google/models/images.rb +15 -8
  32. data/lib/fog/compute/google/models/instance_group_managers.rb +17 -9
  33. data/lib/fog/compute/google/models/instance_groups.rb +16 -8
  34. data/lib/fog/compute/google/models/instance_templates.rb +12 -3
  35. data/lib/fog/compute/google/models/machine_types.rb +17 -8
  36. data/lib/fog/compute/google/models/networks.rb +12 -3
  37. data/lib/fog/compute/google/models/operations.rb +22 -8
  38. data/lib/fog/compute/google/models/regions.rb +12 -3
  39. data/lib/fog/compute/google/models/routes.rb +12 -3
  40. data/lib/fog/compute/google/models/server.rb +4 -4
  41. data/lib/fog/compute/google/models/servers.rb +23 -9
  42. data/lib/fog/compute/google/models/ssl_certificates.rb +12 -3
  43. data/lib/fog/compute/google/models/subnetworks.rb +16 -8
  44. data/lib/fog/compute/google/models/target_http_proxies.rb +12 -3
  45. data/lib/fog/compute/google/models/target_https_proxies.rb +12 -3
  46. data/lib/fog/compute/google/models/target_instances.rb +16 -8
  47. data/lib/fog/compute/google/models/target_pools.rb +16 -8
  48. data/lib/fog/compute/google/models/url_maps.rb +12 -3
  49. data/lib/fog/compute/google/models/zones.rb +12 -3
  50. data/lib/fog/compute/google/requests/insert_server.rb +1 -1
  51. data/lib/fog/compute/google/requests/stop_server.rb +2 -2
  52. data/lib/fog/google/shared.rb +9 -8
  53. data/lib/fog/google/version.rb +1 -1
  54. data/lib/fog/storage/google_json/models/file.rb +7 -2
  55. data/lib/fog/storage/google_json/real.rb +16 -7
  56. data/lib/fog/storage/google_json/utils.rb +3 -4
  57. data/lib/fog/storage/google_json.rb +1 -1
  58. data/test/helpers/integration_test_helper.rb +3 -3
  59. data/test/integration/compute/core_compute/test_servers.rb +86 -0
  60. data/test/integration/monitoring/test_timeseries.rb +29 -14
  61. data/test/integration/storage/test_objects.rb +1 -0
  62. data/test/unit/compute/test_common_collections.rb +1 -1
  63. data/test/unit/compute/test_common_models.rb +1 -1
  64. data/test/unit/compute/test_disk.rb +26 -0
  65. data/test/unit/compute/test_server.rb +1 -1
  66. data/test/unit/dns/test_common_collections.rb +1 -1
  67. data/test/unit/monitoring/test_comon_collections.rb +1 -1
  68. data/test/unit/pubsub/test_common_collections.rb +1 -1
  69. data/test/unit/sql/test_common_collections.rb +1 -1
  70. data/test/unit/storage/test_common_json_collections.rb +1 -1
  71. data/test/unit/storage/test_common_xml_collections.rb +1 -1
  72. data/test/unit/storage/test_json_requests.rb +9 -1
  73. data/test/unit/storage/test_xml_requests.rb +1 -1
  74. metadata +63 -26
  75. data/.github/workflows/integration.yml +0 -225
@@ -46,12 +46,18 @@ class TestMetricDescriptors < FogIntegrationTest
46
46
  }
47
47
 
48
48
  expected = _some_timeseries(start_time, metric_type, labels)
49
- resp = @client.create_timeseries(:timeseries => [expected])
49
+ # Retrying since this is prone to errors in test environment due to
50
+ # constant creation/deletion of resources
51
+ resp = retry_on(Google::Apis::ServerError) do
52
+ @client.create_timeseries(:timeseries => [expected])
53
+ end
50
54
  assert_empty(resp.to_h)
51
55
 
52
- # Wait for metric to be created
53
- retry_on(Google::Apis::ClientError) do
54
- @client.list_timeseries(
56
+ # Wait for TimeSeries to be created
57
+ # Google Monitoring backend is not exactly designed for synchronous retrieval so this retry is necessary
58
+ Fog.wait_for(30) do
59
+ begin
60
+ test_ts = @client.list_timeseries(
55
61
  :filter => "metric.type = \"#{metric_type}\"",
56
62
  :interval => {
57
63
  # Subtracting one second because timeSeries.list API
@@ -60,7 +66,11 @@ class TestMetricDescriptors < FogIntegrationTest
60
66
  :start_time => (start_time - 1).to_datetime.rfc3339,
61
67
  :end_time => Time.now.to_datetime.rfc3339
62
68
  }
63
- ).time_series
69
+ ).time_series
70
+ return !test_ts.nil?
71
+ rescue
72
+ return false
73
+ end
64
74
  end
65
75
 
66
76
  series = retry_on(Google::Apis::ClientError) do
@@ -109,6 +119,8 @@ class TestMetricDescriptors < FogIntegrationTest
109
119
  _some_timeseries(start_time, metric_type, labels)
110
120
  end
111
121
 
122
+ # Retrying since this is prone to errors in test environment due to
123
+ # constant creation/deletion of resources
112
124
  retry_on(Google::Apis::ServerError) do
113
125
  @client.create_timeseries(:timeseries => timeseries)
114
126
  end
@@ -120,15 +132,18 @@ class TestMetricDescriptors < FogIntegrationTest
120
132
  :end_time => Time.now.to_datetime.rfc3339
121
133
  }
122
134
 
123
-
124
- # Wait for metric to be created
125
- # Retriable is used instead of wait_for due to API client returning Google::Apis::ClientError: badRequest if the
126
- # metric hasn't yet been created
127
- retry_on(Google::Apis::ClientError) do
128
- @client.list_timeseries(
129
- :filter => "metric.type = \"#{metric_type}\"",
130
- :interval => interval
131
- ).time_series
135
+ # Wait for TimeSeries to be created
136
+ # Google Monitoring backend is not exactly designed for synchronous retrieval so this retry is necessary
137
+ Fog.wait_for(30) do
138
+ begin
139
+ test_ts = @client.list_timeseries(
140
+ :filter => "metric.type = \"#{metric_type}\"",
141
+ :interval => interval
142
+ ).time_series
143
+ return !test_ts.nil?
144
+ rescue
145
+ return false
146
+ end
132
147
  end
133
148
 
134
149
  # Test page size
@@ -4,6 +4,7 @@ require "securerandom"
4
4
  require "base64"
5
5
  require "tempfile"
6
6
  require "net/http"
7
+ require "ostruct"
7
8
 
8
9
  class TestStorageRequests < StorageShared
9
10
  def test_put_object_string
@@ -1,6 +1,6 @@
1
1
  require "helpers/test_helper"
2
2
 
3
- class UnitTestCollections < MiniTest::Test
3
+ class UnitTestCollections < Minitest::Test
4
4
  def setup
5
5
  Fog.mock!
6
6
 
@@ -1,6 +1,6 @@
1
1
  require "helpers/test_helper"
2
2
 
3
- class UnitTestModels < MiniTest::Test
3
+ class UnitTestModels < Minitest::Test
4
4
  def setup
5
5
  Fog.mock!
6
6
  @client = Fog::Compute.new(provider: "google",
@@ -0,0 +1,26 @@
1
+ require "helpers/test_helper"
2
+
3
+ class UnitTestDisk < Minitest::Test
4
+ def setup
5
+ Fog.mock!
6
+ @client = Fog::Compute.new(provider: "google",
7
+ google_project: "foo")
8
+ end
9
+
10
+ def teardown
11
+ Fog.unmock!
12
+ end
13
+
14
+ def test_new_disk
15
+ disk = Fog::Compute::Google::Disk.new(
16
+ :name => "fog-1",
17
+ :size_gb => 10,
18
+ :zone => "us-central1-a",
19
+ :source_image => "debian-7-wheezy-v20131120"
20
+ )
21
+ assert_equal("fog-1", disk.name, "Fog::Compute::Google::Disk name is incorrect: #{disk.name}")
22
+ assert_equal(10, disk.size_gb, "Fog::Compute::Google::Disk size_gb is incorrect: #{disk.size_gb}")
23
+ assert_equal("us-central1-a", disk.zone, "Fog::Compute::Google::Disk zone is incorrect: #{disk.zone}")
24
+ assert_equal("debian-7-wheezy-v20131120", disk.source_image, "Fog::Compute::Google::Disk source_image is incorrect: #{disk.source_image}")
25
+ end
26
+ end
@@ -1,6 +1,6 @@
1
1
  require "helpers/test_helper"
2
2
 
3
- class UnitTestServer < MiniTest::Test
3
+ class UnitTestServer < Minitest::Test
4
4
  def setup
5
5
  Fog.mock!
6
6
  @client = Fog::Compute.new(provider: "google",
@@ -1,6 +1,6 @@
1
1
  require "helpers/test_helper"
2
2
 
3
- class UnitTestDNSCollections < MiniTest::Test
3
+ class UnitTestDNSCollections < Minitest::Test
4
4
  def setup
5
5
  Fog.mock!
6
6
  @client = Fog::DNS.new(provider: "google",
@@ -1,6 +1,6 @@
1
1
  require "helpers/test_helper"
2
2
 
3
- class UnitTestMonitoringCollections < MiniTest::Test
3
+ class UnitTestMonitoringCollections < Minitest::Test
4
4
  def setup
5
5
  Fog.mock!
6
6
  @client = Fog::Monitoring.new(provider: "google",
@@ -1,6 +1,6 @@
1
1
  require "helpers/test_helper"
2
2
 
3
- class UnitTestPubsubCollections < MiniTest::Test
3
+ class UnitTestPubsubCollections < Minitest::Test
4
4
  def setup
5
5
  Fog.mock!
6
6
  @client = Fog::Google::Pubsub.new(google_project: "foo")
@@ -1,6 +1,6 @@
1
1
  require "helpers/test_helper"
2
2
 
3
- class UnitTestSQLCollections < MiniTest::Test
3
+ class UnitTestSQLCollections < Minitest::Test
4
4
  def setup
5
5
  Fog.mock!
6
6
  @client = Fog::Google::SQL.new(google_project: "foo")
@@ -1,6 +1,6 @@
1
1
  require "helpers/test_helper"
2
2
 
3
- class UnitTestStorageJSONCollections < MiniTest::Test
3
+ class UnitTestStorageJSONCollections < Minitest::Test
4
4
  def setup
5
5
  Fog.mock!
6
6
  @client = Fog::Storage.new(provider: "google",
@@ -1,6 +1,6 @@
1
1
  require "helpers/test_helper"
2
2
 
3
- class UnitTestStorageXMLCollections < MiniTest::Test
3
+ class UnitTestStorageXMLCollections < Minitest::Test
4
4
  def setup
5
5
  Fog.mock!
6
6
  @client = Fog::Storage.new(provider: "google",
@@ -1,6 +1,6 @@
1
1
  require "helpers/test_helper"
2
2
 
3
- class UnitTestJsonRequests < MiniTest::Test
3
+ class UnitTestJsonRequests < Minitest::Test
4
4
  def setup
5
5
  Fog.mock!
6
6
  @client = Fog::Storage.new(provider: "google",
@@ -49,4 +49,12 @@ class UnitTestJsonRequests < MiniTest::Test
49
49
  assert_match(/a\/b\/c/, url,
50
50
  "slashes should not be escaped with '%2F'")
51
51
  end
52
+
53
+ def test_unescaped_pluses_in_url
54
+ url = @client.get_object_https_url("bucket",
55
+ "a+c.ext",
56
+ Time.now + 2 * 60)
57
+ assert_match(/a\+c/, url,
58
+ "pluses should not be escaped with '%2B'")
59
+ end
52
60
  end
@@ -1,6 +1,6 @@
1
1
  require "helpers/test_helper"
2
2
 
3
- class UnitTestXMLRequests < MiniTest::Test
3
+ class UnitTestXMLRequests < Minitest::Test
4
4
  def setup
5
5
  Fog.mock!
6
6
  @client = Fog::Storage.new(provider: "google",
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fog-google
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.19.0
4
+ version: 1.24.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nat Welch
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2022-07-13 00:00:00.000000000 Z
12
+ date: 2024-04-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fog-core
@@ -17,14 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - "<"
19
19
  - !ruby/object:Gem::Version
20
- version: '2.3'
20
+ version: '2.5'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "<"
26
26
  - !ruby/object:Gem::Version
27
- version: '2.3'
27
+ version: '2.5'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: fog-json
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -57,128 +57,154 @@ dependencies:
57
57
  name: google-apis-storage_v1
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - "~>"
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0.19'
63
+ - - "<"
61
64
  - !ruby/object:Gem::Version
62
- version: '0.6'
65
+ version: '1'
63
66
  type: :runtime
64
67
  prerelease: false
65
68
  version_requirements: !ruby/object:Gem::Requirement
66
69
  requirements:
67
- - - "~>"
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: '0.19'
73
+ - - "<"
68
74
  - !ruby/object:Gem::Version
69
- version: '0.6'
75
+ version: '1'
70
76
  - !ruby/object:Gem::Dependency
71
77
  name: google-apis-iamcredentials_v1
72
78
  requirement: !ruby/object:Gem::Requirement
73
79
  requirements:
74
80
  - - "~>"
75
81
  - !ruby/object:Gem::Version
76
- version: '0.6'
82
+ version: '0.15'
77
83
  type: :runtime
78
84
  prerelease: false
79
85
  version_requirements: !ruby/object:Gem::Requirement
80
86
  requirements:
81
87
  - - "~>"
82
88
  - !ruby/object:Gem::Version
83
- version: '0.6'
89
+ version: '0.15'
84
90
  - !ruby/object:Gem::Dependency
85
91
  name: google-apis-compute_v1
86
92
  requirement: !ruby/object:Gem::Requirement
87
93
  requirements:
88
94
  - - "~>"
89
95
  - !ruby/object:Gem::Version
90
- version: '0.14'
96
+ version: '0.53'
91
97
  type: :runtime
92
98
  prerelease: false
93
99
  version_requirements: !ruby/object:Gem::Requirement
94
100
  requirements:
95
101
  - - "~>"
96
102
  - !ruby/object:Gem::Version
97
- version: '0.14'
103
+ version: '0.53'
98
104
  - !ruby/object:Gem::Dependency
99
105
  name: google-apis-monitoring_v3
100
106
  requirement: !ruby/object:Gem::Requirement
101
107
  requirements:
102
108
  - - "~>"
103
109
  - !ruby/object:Gem::Version
104
- version: '0.12'
110
+ version: '0.37'
105
111
  type: :runtime
106
112
  prerelease: false
107
113
  version_requirements: !ruby/object:Gem::Requirement
108
114
  requirements:
109
115
  - - "~>"
110
116
  - !ruby/object:Gem::Version
111
- version: '0.12'
117
+ version: '0.37'
112
118
  - !ruby/object:Gem::Dependency
113
119
  name: google-apis-dns_v1
114
120
  requirement: !ruby/object:Gem::Requirement
115
121
  requirements:
116
122
  - - "~>"
117
123
  - !ruby/object:Gem::Version
118
- version: '0.12'
124
+ version: '0.28'
119
125
  type: :runtime
120
126
  prerelease: false
121
127
  version_requirements: !ruby/object:Gem::Requirement
122
128
  requirements:
123
129
  - - "~>"
124
130
  - !ruby/object:Gem::Version
125
- version: '0.12'
131
+ version: '0.28'
126
132
  - !ruby/object:Gem::Dependency
127
133
  name: google-apis-pubsub_v1
128
134
  requirement: !ruby/object:Gem::Requirement
129
135
  requirements:
130
136
  - - "~>"
131
137
  - !ruby/object:Gem::Version
132
- version: '0.7'
138
+ version: '0.30'
133
139
  type: :runtime
134
140
  prerelease: false
135
141
  version_requirements: !ruby/object:Gem::Requirement
136
142
  requirements:
137
143
  - - "~>"
138
144
  - !ruby/object:Gem::Version
139
- version: '0.7'
145
+ version: '0.30'
140
146
  - !ruby/object:Gem::Dependency
141
147
  name: google-apis-sqladmin_v1beta4
142
148
  requirement: !ruby/object:Gem::Requirement
143
149
  requirements:
144
150
  - - "~>"
145
151
  - !ruby/object:Gem::Version
146
- version: '0.13'
152
+ version: '0.38'
147
153
  type: :runtime
148
154
  prerelease: false
149
155
  version_requirements: !ruby/object:Gem::Requirement
150
156
  requirements:
151
157
  - - "~>"
152
158
  - !ruby/object:Gem::Version
153
- version: '0.13'
159
+ version: '0.38'
154
160
  - !ruby/object:Gem::Dependency
155
161
  name: google-cloud-env
156
162
  requirement: !ruby/object:Gem::Requirement
157
163
  requirements:
158
- - - "~>"
164
+ - - ">="
159
165
  - !ruby/object:Gem::Version
160
166
  version: '1.2'
167
+ - - "<"
168
+ - !ruby/object:Gem::Version
169
+ version: '3.0'
161
170
  type: :runtime
162
171
  prerelease: false
163
172
  version_requirements: !ruby/object:Gem::Requirement
164
173
  requirements:
165
- - - "~>"
174
+ - - ">="
166
175
  - !ruby/object:Gem::Version
167
176
  version: '1.2'
177
+ - - "<"
178
+ - !ruby/object:Gem::Version
179
+ version: '3.0'
180
+ - !ruby/object:Gem::Dependency
181
+ name: addressable
182
+ requirement: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - ">="
185
+ - !ruby/object:Gem::Version
186
+ version: 2.7.0
187
+ type: :runtime
188
+ prerelease: false
189
+ version_requirements: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - ">="
192
+ - !ruby/object:Gem::Version
193
+ version: 2.7.0
168
194
  - !ruby/object:Gem::Dependency
169
195
  name: pry
170
196
  requirement: !ruby/object:Gem::Requirement
171
197
  requirements:
172
198
  - - '='
173
199
  - !ruby/object:Gem::Version
174
- version: 0.13.0
200
+ version: 0.14.2
175
201
  type: :development
176
202
  prerelease: false
177
203
  version_requirements: !ruby/object:Gem::Requirement
178
204
  requirements:
179
205
  - - '='
180
206
  - !ruby/object:Gem::Version
181
- version: 0.13.0
207
+ version: 0.14.2
182
208
  - !ruby/object:Gem::Dependency
183
209
  name: retriable
184
210
  requirement: !ruby/object:Gem::Requirement
@@ -291,13 +317,21 @@ files:
291
317
  - ".fog.example"
292
318
  - ".github/dependabot.yml"
293
319
  - ".github/scripts/setup_creds.sh"
294
- - ".github/workflows/integration.yml"
320
+ - ".github/workflows/integration-compute-core.yml"
321
+ - ".github/workflows/integration-compute-instance_groups.yml"
322
+ - ".github/workflows/integration-compute-loadbalancing.yml"
323
+ - ".github/workflows/integration-compute-networking.yml"
324
+ - ".github/workflows/integration-monitoring.yml"
325
+ - ".github/workflows/integration-pubsub.yml"
326
+ - ".github/workflows/integration-sql.yml"
327
+ - ".github/workflows/integration-storage.yml"
295
328
  - ".github/workflows/stale.yml"
296
329
  - ".github/workflows/unit.yml"
297
330
  - ".gitignore"
298
331
  - ".hound.yml"
299
332
  - ".rubocop.yml"
300
333
  - ".ruby-gemset"
334
+ - ".ruby-version"
301
335
  - CHANGELOG.md
302
336
  - CONTRIBUTING.md
303
337
  - CONTRIBUTORS.md
@@ -310,6 +344,7 @@ files:
310
344
  - examples/backend_services.rb
311
345
  - examples/bootstrap.rb
312
346
  - examples/create_instance.rb
347
+ - examples/create_instance_and_attach_disk_later.rb
313
348
  - examples/create_instance_with_attached_disk.rb
314
349
  - examples/dns/project.rb
315
350
  - examples/dns/zones.rb
@@ -824,6 +859,7 @@ files:
824
859
  - test/integration/test_authentication.rb
825
860
  - test/unit/compute/test_common_collections.rb
826
861
  - test/unit/compute/test_common_models.rb
862
+ - test/unit/compute/test_disk.rb
827
863
  - test/unit/compute/test_server.rb
828
864
  - test/unit/dns/test_common_collections.rb
829
865
  - test/unit/monitoring/test_comon_collections.rb
@@ -852,7 +888,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
852
888
  - !ruby/object:Gem::Version
853
889
  version: '0'
854
890
  requirements: []
855
- rubygems_version: 3.3.5
891
+ rubygems_version: 3.4.10
856
892
  signing_key:
857
893
  specification_version: 4
858
894
  summary: Module for the 'fog' gem to support Google.
@@ -943,6 +979,7 @@ test_files:
943
979
  - test/integration/test_authentication.rb
944
980
  - test/unit/compute/test_common_collections.rb
945
981
  - test/unit/compute/test_common_models.rb
982
+ - test/unit/compute/test_disk.rb
946
983
  - test/unit/compute/test_server.rb
947
984
  - test/unit/dns/test_common_collections.rb
948
985
  - test/unit/monitoring/test_comon_collections.rb