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.
- checksums.yaml +4 -4
- data/.github/workflows/integration-compute-core.yml +54 -0
- data/.github/workflows/integration-compute-instance_groups.yml +55 -0
- data/.github/workflows/integration-compute-loadbalancing.yml +54 -0
- data/.github/workflows/integration-compute-networking.yml +53 -0
- data/.github/workflows/integration-monitoring.yml +54 -0
- data/.github/workflows/integration-pubsub.yml +54 -0
- data/.github/workflows/integration-sql.yml +54 -0
- data/.github/workflows/integration-storage.yml +55 -0
- data/.github/workflows/stale.yml +2 -2
- data/.github/workflows/unit.yml +7 -2
- data/.ruby-version +1 -0
- data/CHANGELOG.md +112 -0
- data/README.md +3 -3
- data/examples/create_instance.rb +1 -1
- data/examples/create_instance_and_attach_disk_later.rb +86 -0
- data/examples/create_instance_with_attached_disk.rb +1 -1
- data/examples/get_list_images.rb +1 -1
- data/examples/load-balance.rb +1 -1
- data/examples/metadata.rb +1 -1
- data/examples/network.rb +1 -1
- data/fog-google.gemspec +12 -10
- data/lib/fog/compute/google/models/addresses.rb +17 -8
- data/lib/fog/compute/google/models/disk_types.rb +17 -7
- data/lib/fog/compute/google/models/disks.rb +23 -8
- data/lib/fog/compute/google/models/firewalls.rb +11 -2
- data/lib/fog/compute/google/models/forwarding_rules.rb +16 -10
- data/lib/fog/compute/google/models/global_addresses.rb +11 -2
- data/lib/fog/compute/google/models/global_forwarding_rules.rb +11 -2
- data/lib/fog/compute/google/models/http_health_checks.rb +12 -3
- data/lib/fog/compute/google/models/images.rb +15 -8
- data/lib/fog/compute/google/models/instance_group_managers.rb +17 -9
- data/lib/fog/compute/google/models/instance_groups.rb +16 -8
- data/lib/fog/compute/google/models/instance_templates.rb +12 -3
- data/lib/fog/compute/google/models/machine_types.rb +17 -8
- data/lib/fog/compute/google/models/networks.rb +12 -3
- data/lib/fog/compute/google/models/operations.rb +22 -8
- data/lib/fog/compute/google/models/regions.rb +12 -3
- data/lib/fog/compute/google/models/routes.rb +12 -3
- data/lib/fog/compute/google/models/server.rb +4 -4
- data/lib/fog/compute/google/models/servers.rb +23 -9
- data/lib/fog/compute/google/models/ssl_certificates.rb +12 -3
- data/lib/fog/compute/google/models/subnetworks.rb +16 -8
- data/lib/fog/compute/google/models/target_http_proxies.rb +12 -3
- data/lib/fog/compute/google/models/target_https_proxies.rb +12 -3
- data/lib/fog/compute/google/models/target_instances.rb +16 -8
- data/lib/fog/compute/google/models/target_pools.rb +16 -8
- data/lib/fog/compute/google/models/url_maps.rb +12 -3
- data/lib/fog/compute/google/models/zones.rb +12 -3
- data/lib/fog/compute/google/requests/insert_server.rb +1 -1
- data/lib/fog/compute/google/requests/stop_server.rb +2 -2
- data/lib/fog/google/shared.rb +9 -8
- data/lib/fog/google/version.rb +1 -1
- data/lib/fog/storage/google_json/models/file.rb +7 -2
- data/lib/fog/storage/google_json/real.rb +16 -7
- data/lib/fog/storage/google_json/utils.rb +3 -4
- data/lib/fog/storage/google_json.rb +1 -1
- data/test/helpers/integration_test_helper.rb +3 -3
- data/test/integration/compute/core_compute/test_servers.rb +86 -0
- data/test/integration/monitoring/test_timeseries.rb +29 -14
- data/test/integration/storage/test_objects.rb +1 -0
- data/test/unit/compute/test_common_collections.rb +1 -1
- data/test/unit/compute/test_common_models.rb +1 -1
- data/test/unit/compute/test_disk.rb +26 -0
- data/test/unit/compute/test_server.rb +1 -1
- data/test/unit/dns/test_common_collections.rb +1 -1
- data/test/unit/monitoring/test_comon_collections.rb +1 -1
- data/test/unit/pubsub/test_common_collections.rb +1 -1
- data/test/unit/sql/test_common_collections.rb +1 -1
- data/test/unit/storage/test_common_json_collections.rb +1 -1
- data/test/unit/storage/test_common_xml_collections.rb +1 -1
- data/test/unit/storage/test_json_requests.rb +9 -1
- data/test/unit/storage/test_xml_requests.rb +1 -1
- metadata +63 -26
- data/.github/workflows/integration.yml +0 -225
@@ -0,0 +1,86 @@
|
|
1
|
+
# All examples presume that you have a ~/.fog credentials file set up.
|
2
|
+
# More info on it can be found here: http://fog.io/about/getting_started.html
|
3
|
+
|
4
|
+
require "bundler"
|
5
|
+
Bundler.require(:default, :development)
|
6
|
+
|
7
|
+
ZONE = "us-central1-f"
|
8
|
+
PROJECT = Fog.credentials[:google_project]
|
9
|
+
|
10
|
+
def example
|
11
|
+
p "Connecting to Google API"
|
12
|
+
connection = Fog::Compute.new(:provider => "Google")
|
13
|
+
|
14
|
+
p "Creating disk"
|
15
|
+
disk = connection.disks.create(
|
16
|
+
:name => "fog-smoke-test-#{Time.now.to_i}",
|
17
|
+
:size_gb => 10,
|
18
|
+
:zone => ZONE,
|
19
|
+
:source_image => "debian-11-bullseye-v20220920"
|
20
|
+
)
|
21
|
+
|
22
|
+
p "Creating a second disk"
|
23
|
+
attached_disk = connection.disks.create(
|
24
|
+
:name => "fog-smoke-test-#{Time.now.to_i}",
|
25
|
+
:size_gb => 10,
|
26
|
+
:zone => ZONE
|
27
|
+
)
|
28
|
+
|
29
|
+
p "Waiting for disks to be ready"
|
30
|
+
disk.wait_for { ready? }
|
31
|
+
attached_disk.wait_for { ready? }
|
32
|
+
|
33
|
+
p "Creating a server"
|
34
|
+
server = connection.servers.create(
|
35
|
+
:name => "fog-smoke-test-#{Time.now.to_i}",
|
36
|
+
:disks => [disk.attached_disk_obj(boot: true, auto_delete: true)],
|
37
|
+
:machine_type => "n1-standard-1",
|
38
|
+
:private_key_path => File.expand_path("~/.ssh/id_rsa"),
|
39
|
+
:public_key_path => File.expand_path("~/.ssh/id_rsa.pub"),
|
40
|
+
:zone => ZONE,
|
41
|
+
# Will be simplified, see https://github.com/fog/fog-google/issues/360
|
42
|
+
:network_interfaces => [{ :network => "global/networks/default",
|
43
|
+
:access_configs => [{
|
44
|
+
:name => "External NAT",
|
45
|
+
:type => "ONE_TO_ONE_NAT"
|
46
|
+
}] }],
|
47
|
+
:username => ENV["USER"]
|
48
|
+
)
|
49
|
+
|
50
|
+
p "Attach second disk to the running server"
|
51
|
+
device_name = "fog-smoke-test-device-#{Time.now.to_i}"
|
52
|
+
# See https://github.com/fog/fog-google/blob/master/lib/fog/compute/google/models/disk.rb#L75-L107
|
53
|
+
# See https://github.com/fog/fog-google/blob/master/lib/fog/compute/google/models/server.rb#L35-L50
|
54
|
+
config_hash = {
|
55
|
+
:device_name => device_name,
|
56
|
+
:source => "https://www.googleapis.com/compute/v1/projects/#{PROJECT}/zones/#{ZONE}/disks/#{attached_disk.name}"
|
57
|
+
}
|
58
|
+
raise "Could not attach second disk" unless connection.attach_disk(server.name, ZONE, config_hash)
|
59
|
+
|
60
|
+
p "Waiting for disk to be attached"
|
61
|
+
attached_disk.wait_for { ! users.nil? && users != []}
|
62
|
+
|
63
|
+
p "Detach second disk"
|
64
|
+
raise "Could not detach second disk" unless connection.detach_disk(server.name, ZONE, device_name)
|
65
|
+
|
66
|
+
p "Waiting for second disk to be detached"
|
67
|
+
attached_disk.wait_for { users.nil? || users == []}
|
68
|
+
|
69
|
+
p "Deleting server"
|
70
|
+
raise "Could not delete server." unless server.destroy
|
71
|
+
|
72
|
+
p "Destroying second disk"
|
73
|
+
raise "Could not delete second disk." unless attached_disk.destroy
|
74
|
+
|
75
|
+
p "Waiting for second disk to be destroyed"
|
76
|
+
begin
|
77
|
+
rc = attached_disk.wait_for { status.nil? || status == 'DELETING' }
|
78
|
+
|
79
|
+
rescue => e
|
80
|
+
if e.message !~ /not found/ && e.message !~ /notFound/
|
81
|
+
raise e
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
example
|
data/examples/get_list_images.rb
CHANGED
@@ -23,7 +23,7 @@ def test
|
|
23
23
|
|
24
24
|
puts "Fetching a single image from a global project..."
|
25
25
|
puts "------------------------------------------------"
|
26
|
-
img = connection.images.get("debian-
|
26
|
+
img = connection.images.get("debian-11-bullseye-v20220920")
|
27
27
|
raise "Could not GET the image" unless img
|
28
28
|
puts img.inspect
|
29
29
|
|
data/examples/load-balance.rb
CHANGED
data/examples/metadata.rb
CHANGED
data/examples/network.rb
CHANGED
data/fog-google.gemspec
CHANGED
@@ -20,24 +20,26 @@ Gem::Specification.new do |spec|
|
|
20
20
|
# As of 0.1.1
|
21
21
|
spec.required_ruby_version = ">= 2.0"
|
22
22
|
|
23
|
-
spec.add_dependency "fog-core", "< 2.
|
23
|
+
spec.add_dependency "fog-core", "< 2.5"
|
24
24
|
spec.add_dependency "fog-json", "~> 1.2"
|
25
25
|
spec.add_dependency "fog-xml", "~> 0.1.0"
|
26
26
|
|
27
|
-
spec.add_dependency "google-apis-storage_v1", "
|
28
|
-
spec.add_dependency "google-apis-iamcredentials_v1", "~> 0.
|
29
|
-
spec.add_dependency "google-apis-compute_v1", "~> 0.
|
30
|
-
spec.add_dependency "google-apis-monitoring_v3", "~> 0.
|
31
|
-
spec.add_dependency "google-apis-dns_v1", "~> 0.
|
32
|
-
spec.add_dependency "google-apis-pubsub_v1", "~> 0.
|
33
|
-
spec.add_dependency "google-apis-sqladmin_v1beta4", "~> 0.
|
27
|
+
spec.add_dependency "google-apis-storage_v1", [">= 0.19", "< 1"]
|
28
|
+
spec.add_dependency "google-apis-iamcredentials_v1", "~> 0.15"
|
29
|
+
spec.add_dependency "google-apis-compute_v1", "~> 0.53"
|
30
|
+
spec.add_dependency "google-apis-monitoring_v3", "~> 0.37"
|
31
|
+
spec.add_dependency "google-apis-dns_v1", "~> 0.28"
|
32
|
+
spec.add_dependency "google-apis-pubsub_v1", "~> 0.30"
|
33
|
+
spec.add_dependency "google-apis-sqladmin_v1beta4", "~> 0.38"
|
34
34
|
|
35
|
-
spec.add_dependency "google-cloud-env", "
|
35
|
+
spec.add_dependency "google-cloud-env", ">= 1.2", "< 3.0"
|
36
|
+
|
37
|
+
spec.add_dependency "addressable", ">= 2.7.0"
|
36
38
|
|
37
39
|
# Debugger
|
38
40
|
# Locked because pry-byebug is broken with 13+
|
39
41
|
# see: https://github.com/deivid-rodriguez/pry-byebug/issues/343
|
40
|
-
spec.add_development_dependency "pry", "= 0.
|
42
|
+
spec.add_development_dependency "pry", "= 0.14.2"
|
41
43
|
|
42
44
|
# Testing gems
|
43
45
|
spec.add_development_dependency "retriable"
|
@@ -11,16 +11,25 @@ module Fog
|
|
11
11
|
:order_by => order_by,
|
12
12
|
:page_token => page_token
|
13
13
|
}
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
14
|
+
items = []
|
15
|
+
next_page_token = nil
|
16
|
+
loop do
|
17
|
+
if region
|
18
|
+
data = service.list_addresses(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_addresses(**opts)
|
24
|
+
data.items.each_value do |scoped_list|
|
25
|
+
items.concat(scoped_list.addresses) if scoped_list && scoped_list.addresses
|
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(
|
32
|
+
load(items.map(&:to_h))
|
24
33
|
end
|
25
34
|
|
26
35
|
def get(identity, region = nil)
|
@@ -12,15 +12,25 @@ module Fog
|
|
12
12
|
:order_by => order_by,
|
13
13
|
:page_token => page_token
|
14
14
|
}
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
data.
|
15
|
+
items = []
|
16
|
+
next_page_token = nil
|
17
|
+
loop do
|
18
|
+
if zone
|
19
|
+
data = service.list_disk_types(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_disk_types(**opts)
|
25
|
+
data.items.each_value do |scoped_lst|
|
26
|
+
items.concat(scoped_lst.disk_types) if scoped_lst && scoped_lst.disk_types
|
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(
|
33
|
+
load(items.map(&:to_h))
|
24
34
|
end
|
25
35
|
|
26
36
|
def get(identity, zone = nil)
|
@@ -12,20 +12,34 @@ module Fog
|
|
12
12
|
:order_by => order_by,
|
13
13
|
:page_token => page_token
|
14
14
|
}
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
data.
|
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(
|
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
|
-
|
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
|
-
|
9
|
-
|
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
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
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(
|
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
|
-
|
9
|
-
|
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
|
-
|
9
|
-
|
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(
|
8
|
-
|
9
|
-
|
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
|
-
|
27
|
+
def all(opts = {})
|
28
|
+
items = []
|
29
|
+
all_projects.each do |project|
|
29
30
|
begin
|
30
|
-
|
31
|
-
|
32
|
-
|
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
|
-
|
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
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
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
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
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(
|
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
|
-
|
9
|
-
|
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
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
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(
|
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
|
-
|
9
|
-
|
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
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
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(
|
38
|
+
load(items)
|
25
39
|
end
|
26
40
|
|
27
41
|
def get(identity, zone = nil, region = nil)
|