fog-google 1.19.0 → 1.24.1

Sign up to get free protection for your applications and to get access to all the features.
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