fog-google 1.22.0 → 1.24.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 (61) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/integration-compute-core.yml +14 -5
  3. data/.github/workflows/integration-compute-instance_groups.yml +13 -4
  4. data/.github/workflows/integration-compute-loadbalancing.yml +13 -4
  5. data/.github/workflows/integration-compute-networking.yml +12 -4
  6. data/.github/workflows/integration-monitoring.yml +12 -4
  7. data/.github/workflows/integration-pubsub.yml +12 -4
  8. data/.github/workflows/integration-sql.yml +12 -4
  9. data/.github/workflows/integration-storage.yml +12 -4
  10. data/.github/workflows/stale.yml +1 -1
  11. data/.github/workflows/unit.yml +7 -2
  12. data/.ruby-version +1 -0
  13. data/CHANGELOG.md +41 -0
  14. data/README.md +2 -2
  15. data/examples/create_instance_and_attach_disk_later.rb +86 -0
  16. data/fog-google.gemspec +3 -3
  17. data/lib/fog/compute/google/models/addresses.rb +17 -8
  18. data/lib/fog/compute/google/models/disk_types.rb +17 -7
  19. data/lib/fog/compute/google/models/disks.rb +23 -8
  20. data/lib/fog/compute/google/models/firewalls.rb +11 -2
  21. data/lib/fog/compute/google/models/forwarding_rules.rb +16 -10
  22. data/lib/fog/compute/google/models/global_addresses.rb +11 -2
  23. data/lib/fog/compute/google/models/global_forwarding_rules.rb +11 -2
  24. data/lib/fog/compute/google/models/http_health_checks.rb +12 -3
  25. data/lib/fog/compute/google/models/images.rb +15 -8
  26. data/lib/fog/compute/google/models/instance_group_managers.rb +17 -9
  27. data/lib/fog/compute/google/models/instance_groups.rb +16 -8
  28. data/lib/fog/compute/google/models/instance_templates.rb +12 -3
  29. data/lib/fog/compute/google/models/machine_types.rb +17 -8
  30. data/lib/fog/compute/google/models/networks.rb +12 -3
  31. data/lib/fog/compute/google/models/operations.rb +22 -8
  32. data/lib/fog/compute/google/models/regions.rb +12 -3
  33. data/lib/fog/compute/google/models/routes.rb +12 -3
  34. data/lib/fog/compute/google/models/server.rb +3 -3
  35. data/lib/fog/compute/google/models/servers.rb +22 -8
  36. data/lib/fog/compute/google/models/ssl_certificates.rb +12 -3
  37. data/lib/fog/compute/google/models/subnetworks.rb +16 -8
  38. data/lib/fog/compute/google/models/target_http_proxies.rb +12 -3
  39. data/lib/fog/compute/google/models/target_https_proxies.rb +12 -3
  40. data/lib/fog/compute/google/models/target_instances.rb +16 -8
  41. data/lib/fog/compute/google/models/target_pools.rb +16 -8
  42. data/lib/fog/compute/google/models/url_maps.rb +12 -3
  43. data/lib/fog/compute/google/models/zones.rb +12 -3
  44. data/lib/fog/compute/google/requests/stop_server.rb +2 -2
  45. data/lib/fog/google/version.rb +1 -1
  46. data/test/helpers/integration_test_helper.rb +1 -1
  47. data/test/integration/compute/core_compute/test_servers.rb +86 -0
  48. data/test/integration/storage/test_objects.rb +1 -0
  49. data/test/unit/compute/test_common_collections.rb +1 -1
  50. data/test/unit/compute/test_common_models.rb +1 -1
  51. data/test/unit/compute/test_disk.rb +26 -0
  52. data/test/unit/compute/test_server.rb +1 -1
  53. data/test/unit/dns/test_common_collections.rb +1 -1
  54. data/test/unit/monitoring/test_comon_collections.rb +1 -1
  55. data/test/unit/pubsub/test_common_collections.rb +1 -1
  56. data/test/unit/sql/test_common_collections.rb +1 -1
  57. data/test/unit/storage/test_common_json_collections.rb +1 -1
  58. data/test/unit/storage/test_common_xml_collections.rb +1 -1
  59. data/test/unit/storage/test_json_requests.rb +1 -1
  60. data/test/unit/storage/test_xml_requests.rb +1 -1
  61. metadata +19 -9
@@ -11,17 +11,25 @@ module Fog
11
11
  :order_by => order_by,
12
12
  :page_token => page_token
13
13
  }
14
- if region.nil?
15
- data = []
16
- service.list_aggregated_target_pools(**opts).items.each_value do |lst|
17
- unless lst.nil? || lst.target_pools.nil?
18
- data += lst.to_h[:target_pools]
14
+ items = []
15
+ next_page_token = nil
16
+ loop do
17
+ if region.nil?
18
+ data = service.list_aggregated_target_pools(**opts)
19
+ data.items.each_value do |lst|
20
+ items.concat(lst.to_h[:target_pools]) if lst && lst.target_pools
19
21
  end
22
+ next_page_token = data.next_page_token
23
+ else
24
+ data = service.list_target_pools(region, **opts)
25
+ next_items = data.to_h[:items] || []
26
+ items.concat(next_items)
27
+ next_page_token = data.next_page_token
20
28
  end
21
- else
22
- data = service.list_target_pools(region, **opts).to_h[:items]
29
+ break if next_page_token.nil? || next_page_token.empty?
30
+ opts[:page_token] = next_page_token
23
31
  end
24
- load(data)
32
+ load(items)
25
33
  end
26
34
 
27
35
  def get(identity, region = nil)
@@ -4,9 +4,18 @@ module Fog
4
4
  class UrlMaps < Fog::Collection
5
5
  model Fog::Compute::Google::UrlMap
6
6
 
7
- def all
8
- data = service.list_url_maps.to_h[:items] || []
9
- load(data)
7
+ def all(opts = {})
8
+ items = []
9
+ next_page_token = nil
10
+ loop do
11
+ data = service.list_url_maps(**opts)
12
+ next_items = data.to_h[:items] || []
13
+ items.concat(next_items)
14
+ next_page_token = data.next_page_token
15
+ break if next_page_token.nil? || next_page_token.empty?
16
+ opts[:page_token] = next_page_token
17
+ end
18
+ load(items)
10
19
  end
11
20
 
12
21
  def get(identity)
@@ -4,9 +4,18 @@ module Fog
4
4
  class Zones < Fog::Collection
5
5
  model Fog::Compute::Google::Zone
6
6
 
7
- def all
8
- data = service.list_zones.to_h[:items] || []
9
- load(data)
7
+ def all(opts = {})
8
+ items = []
9
+ next_page_token = nil
10
+ loop do
11
+ data = service.list_zones
12
+ next_items = data.to_h[:items] || []
13
+ items.concat(next_items)
14
+ next_page_token = data.next_page_token
15
+ break if next_page_token.nil? || next_page_token.empty?
16
+ opts[:page_token] = next_page_token
17
+ end
18
+ load(items)
10
19
  end
11
20
 
12
21
  def get(identity)
@@ -10,8 +10,8 @@ module Fog
10
10
  end
11
11
 
12
12
  class Real
13
- def stop_server(identity, zone)
14
- @compute.stop_instance(@project, zone.split("/")[-1], identity)
13
+ def stop_server(identity, zone, discard_local_ssd=false)
14
+ @compute.stop_instance(@project, zone.split("/")[-1], identity, discard_local_ssd: discard_local_ssd)
15
15
  end
16
16
  end
17
17
  end
@@ -1,5 +1,5 @@
1
1
  module Fog
2
2
  module Google
3
- VERSION = "1.22.0".freeze
3
+ VERSION = "1.24.0".freeze
4
4
  end
5
5
  end
@@ -93,7 +93,7 @@ KEY
93
93
  RETRIABLE_TRIES = 3
94
94
  RETRIABLE_BASE_INTERVAL = 50
95
95
 
96
- class FogIntegrationTest < MiniTest::Test
96
+ class FogIntegrationTest < Minitest::Test
97
97
  def namespaced_name
98
98
  "#{self.class}_#{name}"
99
99
  end
@@ -132,6 +132,92 @@ class TestServers < FogIntegrationTest
132
132
  assert server.ready?
133
133
  end
134
134
 
135
+ def test_start_stop_discard_local_ssd
136
+ server = @factory.create
137
+
138
+ async = true
139
+ discard_local_ssd = true
140
+
141
+ server.stop(async, discard_local_ssd)
142
+ server.wait_for { stopped? }
143
+
144
+ assert server.stopped?
145
+ end
146
+
147
+ def test_attach_disk
148
+ # Creating server
149
+ server = @factory.create
150
+ server.wait_for { ready? }
151
+
152
+ disk_name = "fog-test-1-testservers-test-attach-disk-attachable" # suffix forces disk name to differ from the existing disk
153
+ # Creating disk #{disk_name}
154
+ disk = @disks.create(
155
+ :name => disk_name,
156
+ :source_image => TEST_IMAGE,
157
+ :size_gb => 64
158
+ )
159
+ device_name = "#{disk.name}-device"
160
+
161
+ # Attaching disk #{disk.name} as device #{device_name}
162
+ self_link = "https://www.googleapis.com/compute/v1/projects/#{TEST_PROJECT}/zones/#{TEST_ZONE}/disks/#{disk.name}"
163
+ server.attach_disk(self_link, true, device_name: device_name)
164
+
165
+ # Waiting for attachment
166
+ disk.wait_for { ! users.nil? && users != []}
167
+
168
+ assert_equal "https://www.googleapis.com/compute/v1/projects/#{TEST_PROJECT}/zones/#{TEST_ZONE}/instances/#{server.name}", disk.users[0]
169
+
170
+ server.reload
171
+ server_attached_disk = server.disks.select{|d| d[:boot] == false}[0]
172
+ assert_equal device_name, server_attached_disk[:device_name]
173
+ end
174
+
175
+ def test_detach_disk
176
+ # Creating server
177
+ server = @factory.create
178
+ server.wait_for { ready? }
179
+
180
+ disk_name = "fog-test-1-testservers-test-detach-attachable" # suffix forces disk name to differ from the existing disk
181
+ # Creating disk #{disk_name}
182
+ disk = @disks.create(
183
+ :name => disk_name,
184
+ :source_image => TEST_IMAGE,
185
+ :size_gb => 64
186
+ )
187
+ device_name = "#{disk.name}-device"
188
+
189
+ # Attaching disk #{disk.name} as device #{device_name}
190
+ self_link = "https://www.googleapis.com/compute/v1/projects/#{TEST_PROJECT}/zones/#{TEST_ZONE}/disks/#{disk.name}"
191
+ server.attach_disk(self_link, true, device_name: device_name)
192
+ disk.wait_for { ! users.nil? && users != []}
193
+
194
+ server.reload
195
+ server_attached_disk = server.disks.select{|d| d[:boot] == false}[0]
196
+ assert_equal device_name, server_attached_disk[:device_name]
197
+
198
+ # Detaching (synchronous) disk #{disk.name}
199
+ server.detach_disk(device_name, false)
200
+
201
+ disk.reload
202
+ assert disk.users.nil? || disk.users == []
203
+
204
+ # Re-attaching disk #{disk.name} as device #{device_name}
205
+ server.attach_disk(self_link, true, device_name: device_name)
206
+ disk.wait_for { ! users.nil? && users != []}
207
+
208
+ server.reload
209
+ server_attached_disk = server.disks.select{|d| d[:boot] == false}[0]
210
+ assert_equal device_name, server_attached_disk[:device_name]
211
+
212
+ # Detaching (async) disk #{disk.name}
213
+ server.detach_disk(device_name, true)
214
+
215
+ # Waiting for detachment
216
+ disk.wait_for { users.nil? || users == []}
217
+
218
+ assert disk.users.nil? || disk.users == []
219
+ end
220
+
135
221
  def test_reset_windows_password
136
222
  win_disk = @disks.create(
137
223
  :name => "fog-test-1-testservers-test-reset-windows-password-2",
@@ -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",
@@ -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.22.0
4
+ version: 1.24.0
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: 2023-08-10 00:00:00.000000000 Z
12
+ date: 2024-04-08 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
@@ -161,16 +161,22 @@ dependencies:
161
161
  name: google-cloud-env
162
162
  requirement: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - "~>"
164
+ - - ">="
165
165
  - !ruby/object:Gem::Version
166
166
  version: '1.2'
167
+ - - "<"
168
+ - !ruby/object:Gem::Version
169
+ version: '3.0'
167
170
  type: :runtime
168
171
  prerelease: false
169
172
  version_requirements: !ruby/object:Gem::Requirement
170
173
  requirements:
171
- - - "~>"
174
+ - - ">="
172
175
  - !ruby/object:Gem::Version
173
176
  version: '1.2'
177
+ - - "<"
178
+ - !ruby/object:Gem::Version
179
+ version: '3.0'
174
180
  - !ruby/object:Gem::Dependency
175
181
  name: addressable
176
182
  requirement: !ruby/object:Gem::Requirement
@@ -191,14 +197,14 @@ dependencies:
191
197
  requirements:
192
198
  - - '='
193
199
  - !ruby/object:Gem::Version
194
- version: 0.13.0
200
+ version: 0.14.2
195
201
  type: :development
196
202
  prerelease: false
197
203
  version_requirements: !ruby/object:Gem::Requirement
198
204
  requirements:
199
205
  - - '='
200
206
  - !ruby/object:Gem::Version
201
- version: 0.13.0
207
+ version: 0.14.2
202
208
  - !ruby/object:Gem::Dependency
203
209
  name: retriable
204
210
  requirement: !ruby/object:Gem::Requirement
@@ -325,6 +331,7 @@ files:
325
331
  - ".hound.yml"
326
332
  - ".rubocop.yml"
327
333
  - ".ruby-gemset"
334
+ - ".ruby-version"
328
335
  - CHANGELOG.md
329
336
  - CONTRIBUTING.md
330
337
  - CONTRIBUTORS.md
@@ -337,6 +344,7 @@ files:
337
344
  - examples/backend_services.rb
338
345
  - examples/bootstrap.rb
339
346
  - examples/create_instance.rb
347
+ - examples/create_instance_and_attach_disk_later.rb
340
348
  - examples/create_instance_with_attached_disk.rb
341
349
  - examples/dns/project.rb
342
350
  - examples/dns/zones.rb
@@ -851,6 +859,7 @@ files:
851
859
  - test/integration/test_authentication.rb
852
860
  - test/unit/compute/test_common_collections.rb
853
861
  - test/unit/compute/test_common_models.rb
862
+ - test/unit/compute/test_disk.rb
854
863
  - test/unit/compute/test_server.rb
855
864
  - test/unit/dns/test_common_collections.rb
856
865
  - test/unit/monitoring/test_comon_collections.rb
@@ -879,7 +888,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
879
888
  - !ruby/object:Gem::Version
880
889
  version: '0'
881
890
  requirements: []
882
- rubygems_version: 3.3.7
891
+ rubygems_version: 3.4.10
883
892
  signing_key:
884
893
  specification_version: 4
885
894
  summary: Module for the 'fog' gem to support Google.
@@ -970,6 +979,7 @@ test_files:
970
979
  - test/integration/test_authentication.rb
971
980
  - test/unit/compute/test_common_collections.rb
972
981
  - test/unit/compute/test_common_models.rb
982
+ - test/unit/compute/test_disk.rb
973
983
  - test/unit/compute/test_server.rb
974
984
  - test/unit/dns/test_common_collections.rb
975
985
  - test/unit/monitoring/test_comon_collections.rb