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
@@ -12,20 +12,34 @@ module Fog
12
12
  :order_by => order_by,
13
13
  :page_token => page_token
14
14
  }
15
- if zone
16
- data = service.list_disks(zone, **opts).items || []
17
- else
18
- data = []
19
- service.list_aggregated_disks(**opts).items.each_value do |scoped_list|
20
- data.concat(scoped_list.disks) if scoped_list.disks
15
+ items = []
16
+ next_page_token = nil
17
+ loop do
18
+ if zone
19
+ data = service.list_disks(zone, **opts)
20
+ next_items = data.items || []
21
+ items.concat(next_items)
22
+ next_page_token = data.next_page_token
23
+ else
24
+ data = service.list_aggregated_disks(**opts)
25
+ data.items.each_value do |scoped_list|
26
+ items.concat(scoped_list.disks) if scoped_list && scoped_list.disks
27
+ end
28
+ next_page_token = data.next_page_token
21
29
  end
30
+ break if next_page_token.nil? || next_page_token.empty?
31
+ opts[:page_token] = next_page_token
22
32
  end
23
- load(data.map(&:to_h))
33
+ load(items.map(&:to_h))
24
34
  end
25
35
 
26
36
  def get(identity, zone = nil)
27
37
  if zone
28
38
  disk = service.get_disk(identity, zone).to_h
39
+
40
+ # Force the hash to contain a :users key so that it will override any :users key in the existing object
41
+ disk[:users] = nil unless disk.include?(:users)
42
+
29
43
  return new(disk)
30
44
  elsif identity
31
45
  response = all(:filter => "name eq #{identity}",
@@ -35,7 +49,8 @@ module Fog
35
49
  end
36
50
  rescue ::Google::Apis::ClientError => e
37
51
  raise e unless e.status_code == 404
38
- nil
52
+ # Return an empty object so that wait_for processes the block
53
+ return new({:status => nil})
39
54
  end
40
55
 
41
56
  # Returns an attached disk configuration hash.
@@ -5,8 +5,17 @@ module Fog
5
5
  model Fog::Compute::Google::Firewall
6
6
 
7
7
  def all(opts = {})
8
- data = service.list_firewalls(**opts).to_h[:items]
9
- load(data || [])
8
+ items = []
9
+ next_page_token = nil
10
+ loop do
11
+ data = service.list_firewalls(**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)
@@ -11,19 +11,25 @@ module Fog
11
11
  :order_by => order_by,
12
12
  :page_token => page_token
13
13
  }
14
-
15
- if region
16
- data = service.list_forwarding_rules(region, **opts).items || []
17
- else
18
- data = []
19
- service.list_aggregated_forwarding_rules(**opts).items
20
- .each_value do |scoped_list|
21
- if scoped_list && scoped_list.forwarding_rules
22
- data.concat(scoped_list.forwarding_rules)
14
+ items = []
15
+ next_page_token = nil
16
+ loop do
17
+ if region
18
+ data = service.list_forwarding_rules(region, **opts)
19
+ next_items = data.items || []
20
+ items.concat(next_items)
21
+ next_page_token = data.next_page_token
22
+ else
23
+ data = service.list_aggregated_forwarding_rules(**opts)
24
+ data.items.each_value do |scoped_list|
25
+ items.concat(scoped_list.forwarding_rules) if scoped_list && scoped_list.forwarding_rules
23
26
  end
27
+ next_page_token = data.next_page_token
24
28
  end
29
+ break if next_page_token.nil? || next_page_token.empty?
30
+ opts[:page_token] = next_page_token
25
31
  end
26
- load(data.map(&:to_h))
32
+ load(items.map(&:to_h))
27
33
  end
28
34
 
29
35
  def get(identity, region = nil)
@@ -5,8 +5,17 @@ module Fog
5
5
  model Fog::Compute::Google::GlobalAddress
6
6
 
7
7
  def all(options = {})
8
- data = service.list_global_addresses(**options).to_h[:items] || []
9
- load(data)
8
+ items = []
9
+ next_page_token = nil
10
+ loop do
11
+ data = service.list_global_addresses(**options)
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
+ options[:page_token] = next_page_token
17
+ end
18
+ load(items)
10
19
  end
11
20
 
12
21
  def get(identity)
@@ -5,8 +5,17 @@ module Fog
5
5
  model Fog::Compute::Google::GlobalForwardingRule
6
6
 
7
7
  def all(opts = {})
8
- data = service.list_global_forwarding_rules(**opts).to_h[:items] || []
9
- load(data)
8
+ items = []
9
+ next_page_token = nil
10
+ loop do
11
+ data = service.list_global_forwarding_rules(**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 HttpHealthChecks < Fog::Collection
5
5
  model Fog::Compute::Google::HttpHealthCheck
6
6
 
7
- def all(_filters = {})
8
- data = service.list_http_health_checks.to_h[:items] || []
9
- load(data)
7
+ def all(opts = {})
8
+ items = []
9
+ next_page_token = nil
10
+ loop do
11
+ data = service.list_http_health_checks(**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)
@@ -24,12 +24,21 @@ module Fog
24
24
  windows-sql-cloud
25
25
  ).freeze
26
26
 
27
- def all
28
- data = all_projects.map do |project|
27
+ def all(opts = {})
28
+ items = []
29
+ all_projects.each do |project|
29
30
  begin
30
- images = service.list_images(project).items || []
31
- # Keep track of the project in which we found the image(s)
32
- images.map { |img| img.to_h.merge(:project => project) }
31
+ next_page_token = nil
32
+ loop do
33
+ opts[:page_token] = next_page_token
34
+ data = service.list_images(project, **opts)
35
+ images = data.items&.map(&:to_h) || []
36
+ # Keep track of the project in which we found the image(s)
37
+ images.each { |img| img.merge!(:project => project) }
38
+ items.concat(images)
39
+ next_page_token = data.next_page_token
40
+ break if next_page_token.nil? || next_page_token.empty?
41
+ end
33
42
  rescue ::Google::Apis::ClientError => e
34
43
  raise e unless e.status_code == 404
35
44
  # Not everyone has access to every Global Project. Requests
@@ -37,9 +46,7 @@ module Fog
37
46
  next
38
47
  end
39
48
  end
40
- data = data.flatten
41
-
42
- load(data)
49
+ load(items)
43
50
  end
44
51
 
45
52
  # Only return the non-deprecated list of images
@@ -12,17 +12,25 @@ module Fog
12
12
  :order_by => order_by,
13
13
  :page_token => page_token
14
14
  }
15
-
16
- if zone
17
- data = service.list_instance_group_managers(zone, **opts).items || []
18
- else
19
- data = []
20
- service.list_aggregated_instance_group_managers(**opts).items.each_value do |group|
21
- data.concat(group.instance_group_managers) if group.instance_group_managers
15
+ items = []
16
+ next_page_token = nil
17
+ loop do
18
+ if zone
19
+ data = service.list_instance_group_managers(zone, **opts)
20
+ next_items = data.items || []
21
+ items.concat(next_items)
22
+ next_page_token = data.next_page_token
23
+ else
24
+ data = service.list_aggregated_instance_group_managers(**opts)
25
+ data.items.each_value do |group|
26
+ items.concat(group.instance_group_managers) if group && group.instance_group_managers
27
+ end
28
+ next_page_token = data.next_page_token
22
29
  end
30
+ break if next_page_token.nil? || next_page_token.empty?
31
+ opts[:page_token] = next_page_token
23
32
  end
24
-
25
- load(data.map(&:to_h))
33
+ load(items.map(&:to_h))
26
34
  end
27
35
 
28
36
  def get(identity, zone = nil)
@@ -11,17 +11,25 @@ module Fog
11
11
  :order_by => order_by,
12
12
  :page_token => page_token
13
13
  }
14
-
15
- if zone
16
- data = service.list_instance_groups(zone).items || []
17
- else
18
- data = []
19
- service.list_aggregated_instance_groups(opts).items.each_value do |group|
20
- data.concat(group.instance_groups) if group && group.instance_groups
14
+ items = []
15
+ next_page_token = nil
16
+ loop do
17
+ if zone
18
+ data = service.list_instance_groups(zone)
19
+ next_items = data.items || []
20
+ items.concat(next_items)
21
+ else
22
+ data = service.list_aggregated_instance_groups(opts)
23
+ data.items.each_value do |group|
24
+ items.concat(group.instance_groups) if group && group.instance_groups
25
+ end
26
+ next_page_token = data.next_page_token
21
27
  end
28
+ break if next_page_token.nil? || next_page_token.empty?
29
+ opts[:page_token] = next_page_token
22
30
  end
23
31
 
24
- load(data.map(&:to_h))
32
+ load(items.map(&:to_h))
25
33
  end
26
34
 
27
35
  def get(identity, zone = nil)
@@ -4,9 +4,18 @@ module Fog
4
4
  class InstanceTemplates < Fog::Collection
5
5
  model Fog::Compute::Google::InstanceTemplate
6
6
 
7
- def all
8
- data = service.list_instance_templates.items || []
9
- load(data.map(&:to_h))
7
+ def all(opts = {})
8
+ items = []
9
+ next_page_token = nil
10
+ loop do
11
+ data = service.list_instance_templates(**opts)
12
+ next_items = data.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.map(&:to_h))
10
19
  end
11
20
 
12
21
  def get(identity)
@@ -11,16 +11,25 @@ module Fog
11
11
  :order_by => order_by,
12
12
  :page_token => page_token
13
13
  }
14
-
15
- if zone
16
- data = service.list_machine_types(zone, **opts).items
17
- else
18
- data = []
19
- service.list_aggregated_machine_types(**opts).items.each_value do |scoped_list|
20
- data.concat(scoped_list.machine_types) if scoped_list && scoped_list.machine_types
14
+ items = []
15
+ next_page_token = nil
16
+ loop do
17
+ if zone
18
+ data = service.list_machine_types(zone, **opts)
19
+ next_items = data.items || []
20
+ items.concat(next_items)
21
+ next_page_token = data.next_page_token
22
+ else
23
+ data = service.list_aggregated_machine_types(**opts)
24
+ data.items.each_value do |scoped_list|
25
+ items.concat(scoped_list.machine_types) if scoped_list && scoped_list.machine_types
26
+ end
27
+ next_page_token = data.next_page_token
21
28
  end
29
+ break if next_page_token.nil? || next_page_token.empty?
30
+ opts[:page_token] = next_page_token
22
31
  end
23
- load(data.map(&:to_h) || [])
32
+ load(items.map(&:to_h) || [])
24
33
  end
25
34
 
26
35
  def get(identity, zone = nil)
@@ -4,9 +4,18 @@ module Fog
4
4
  class Networks < Fog::Collection
5
5
  model Fog::Compute::Google::Network
6
6
 
7
- def all
8
- data = service.list_networks.to_h[:items]
9
- load(data || [])
7
+ def all(opts = {})
8
+ items = []
9
+ next_page_token = nil
10
+ loop do
11
+ data = service.list_networks(**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)
@@ -12,16 +12,30 @@ module Fog
12
12
  :order_by => order_by,
13
13
  :page_token => page_token
14
14
  }
15
-
16
- if zone
17
- data = service.list_zone_operations(zone, **opts).to_h[:items]
18
- elsif region
19
- data = service.list_region_operations(region, **opts).to_h[:items]
20
- else
21
- data = service.list_global_operations(**opts).to_h[:items]
15
+ items = []
16
+ next_page_token = nil
17
+ loop do
18
+ if zone
19
+ data = service.list_zone_operations(zone, **opts)
20
+ next_items = data.to_h[:items] || []
21
+ items.concat(next_items)
22
+ next_page_token = data.next_page_token
23
+ elsif region
24
+ data = service.list_region_operations(region, **opts)
25
+ next_items = data.to_h[:items] || []
26
+ items.concat(next_items)
27
+ next_page_token = data.next_page_token
28
+ else
29
+ data = service.list_global_operations(**opts)
30
+ next_items = data.to_h[:items] || []
31
+ items.concat(next_items)
32
+ next_page_token = data.next_page_token
33
+ end
34
+ break if next_page_token.nil? || next_page_token.empty?
35
+ opts[:page_token] = next_page_token
22
36
  end
23
37
 
24
- load(data || [])
38
+ load(items)
25
39
  end
26
40
 
27
41
  def get(identity, zone = nil, region = nil)
@@ -4,9 +4,18 @@ module Fog
4
4
  class Regions < Fog::Collection
5
5
  model Fog::Compute::Google::Region
6
6
 
7
- def all
8
- data = service.list_regions.to_h
9
- load(data[:items] || [])
7
+ def all(opts = {})
8
+ items = []
9
+ next_page_token = nil
10
+ loop do
11
+ data = service.list_regions(**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 Routes < Fog::Collection
5
5
  model Fog::Compute::Google::Route
6
6
 
7
- def all
8
- data = service.list_routes.to_h
9
- load(data[:items] || [])
7
+ def all(opts = {})
8
+ items = []
9
+ next_page_token = nil
10
+ loop do
11
+ data = service.list_routes(**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)
@@ -279,7 +279,7 @@ module Fog
279
279
  if disk.is_a? Disk
280
280
  disk_obj = disk.get_attached_disk
281
281
  elsif disk.is_a? String
282
- disk_obj = service.disks.attached_disk_obj(disk, attached_disk_options)
282
+ disk_obj = service.disks.attached_disk_obj(disk, **attached_disk_options)
283
283
  end
284
284
 
285
285
  data = service.attach_disk(identity, zone_name, disk_obj)
@@ -339,10 +339,10 @@ module Fog
339
339
  operation
340
340
  end
341
341
 
342
- def stop(async = true)
342
+ def stop(async = true, discard_local_ssd=false)
343
343
  requires :identity, :zone
344
344
 
345
- data = service.stop_server(identity, zone_name)
345
+ data = service.stop_server(identity, zone_name, discard_local_ssd)
346
346
  operation = Fog::Compute::Google::Operations
347
347
  .new(:service => service)
348
348
  .get(data.name, data.zone)
@@ -13,17 +13,31 @@ module Fog
13
13
  :page_token => page_token
14
14
  }
15
15
 
16
- if zone
17
- data = service.list_servers(zone, **opts).to_h[:items] || []
18
- else
19
- data = []
20
- service.list_aggregated_servers(**opts).items.each_value do |scoped_lst|
21
- if scoped_lst && scoped_lst.instances
22
- data.concat(scoped_lst.instances.map(&:to_h))
16
+ items = []
17
+ next_page_token = nil
18
+
19
+ loop do
20
+ if zone
21
+ data = service.list_servers(zone, **opts)
22
+ next_items = data.to_h[:items] || []
23
+ items.concat(next_items)
24
+ next_page_token = data.next_page_token
25
+ else
26
+ data = service.list_aggregated_servers(**opts)
27
+ data.items.each_value do |scoped_lst|
28
+ if scoped_lst && scoped_lst.instances
29
+ items.concat(scoped_lst.instances.map(&:to_h))
30
+ end
23
31
  end
32
+ next_page_token = data.next_page_token
24
33
  end
34
+
35
+ break if next_page_token.nil? || next_page_token.empty?
36
+
37
+ opts[:page_token] = next_page_token
25
38
  end
26
- load(data)
39
+
40
+ load(items)
27
41
  end
28
42
 
29
43
  # TODO: This method needs to take self_links as well as names
@@ -14,9 +14,18 @@ module Fog
14
14
  nil
15
15
  end
16
16
 
17
- def all(_filters = {})
18
- data = service.list_ssl_certificates.to_h[:items] || []
19
- load(data)
17
+ def all(opts = {})
18
+ items = []
19
+ next_page_token = nil
20
+ loop do
21
+ data = service.list_ssl_certificates(**opts)
22
+ next_items = data.to_h[:items] || []
23
+ items.concat(next_items)
24
+ next_page_token = data.next_page_token
25
+ break if next_page_token.nil? || next_page_token.empty?
26
+ opts[:page_token] = next_page_token
27
+ end
28
+ load(items)
20
29
  end
21
30
  end
22
31
  end
@@ -11,16 +11,24 @@ module Fog
11
11
  :order_by => order_by,
12
12
  :page_token => page_token
13
13
  }
14
-
15
- if region
16
- data = service.list_subnetworks(region, **filters).to_h[:items] || []
17
- else
18
- data = []
19
- service.list_aggregated_subnetworks(**filters).to_h[:items].each_value do |region_obj|
20
- data.concat(region_obj[:subnetworks]) if region_obj[:subnetworks]
14
+ items = []
15
+ next_page_token = nil
16
+ loop do
17
+ if region
18
+ data = service.list_subnetworks(region, **filters)
19
+ next_items = data.items || []
20
+ items.concat(next_items)
21
+ next_page_token = data.next_page_token
22
+ else
23
+ data = service.list_aggregated_subnetworks(**filters)
24
+ data.items.each_value do |region_obj|
25
+ items.concat(region_obj.subnetworks) if region_obj && region_obj.subnetworks
26
+ end
21
27
  end
28
+ break if next_page_token.nil? || next_page_token.empty?
29
+ filters[:page_token] = next_page_token
22
30
  end
23
- load(data)
31
+ load(items.map(&:to_h))
24
32
  end
25
33
 
26
34
  def get(identity, region = nil)
@@ -4,9 +4,18 @@ module Fog
4
4
  class TargetHttpProxies < Fog::Collection
5
5
  model Fog::Compute::Google::TargetHttpProxy
6
6
 
7
- def all(_filters = {})
8
- data = service.list_target_http_proxies.to_h[:items] || []
9
- load(data)
7
+ def all(opts = {})
8
+ items = []
9
+ next_page_token = nil
10
+ loop do
11
+ data = service.list_target_http_proxies(*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 TargetHttpsProxies < Fog::Collection
5
5
  model Fog::Compute::Google::TargetHttpsProxy
6
6
 
7
- def all(_filters = {})
8
- data = service.list_target_https_proxies.to_h[:items] || []
9
- load(data)
7
+ def all(opts = {})
8
+ items = []
9
+ next_page_token = nil
10
+ loop do
11
+ data = service.list_target_https_proxies(**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)
@@ -13,17 +13,25 @@ module Fog
13
13
  :page_token => page_token
14
14
  }
15
15
 
16
- if zone
17
- data = service.list_target_instances(zone, **opts).to_h[:items] || []
18
- else
19
- data = []
20
- service.list_aggregated_target_instances(**opts).items.each_value do |scoped_list|
21
- unless scoped_list.nil? || scoped_list.target_instances.nil?
22
- data += scoped_list.target_instances.map(&:to_h)
16
+ items = []
17
+ next_page_token = nil
18
+ loop do
19
+ if zone
20
+ data = service.list_target_instances(zone, **opts)
21
+ next_items = data.to_h[:items] || []
22
+ items.concat(next_items)
23
+ next_page_token = data.next_page_token
24
+ else
25
+ data = service.list_aggregated_target_instances(**opts)
26
+ data.items.each_value do |scoped_list|
27
+ items.concat(scoped_list.target_instances.map(&:to_h)) if scoped_list && scoped_list.target_instances
23
28
  end
29
+ next_page_token = data.next_page_token
24
30
  end
31
+ break if next_page_token.nil? || next_page_token.empty?
32
+ opts[:page_token] = next_page_token
25
33
  end
26
- load(data)
34
+ load(items)
27
35
  end
28
36
 
29
37
  def get(identity, zone = nil)