fog-google 1.22.0 → 1.24.0

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