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.
- 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)
|