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.
- checksums.yaml +4 -4
- data/.github/workflows/integration-compute-core.yml +14 -5
- data/.github/workflows/integration-compute-instance_groups.yml +13 -4
- data/.github/workflows/integration-compute-loadbalancing.yml +13 -4
- data/.github/workflows/integration-compute-networking.yml +12 -4
- data/.github/workflows/integration-monitoring.yml +12 -4
- data/.github/workflows/integration-pubsub.yml +12 -4
- data/.github/workflows/integration-sql.yml +12 -4
- data/.github/workflows/integration-storage.yml +12 -4
- data/.github/workflows/stale.yml +1 -1
- data/.github/workflows/unit.yml +7 -2
- data/.ruby-version +1 -0
- data/CHANGELOG.md +41 -0
- data/README.md +2 -2
- data/examples/create_instance_and_attach_disk_later.rb +86 -0
- data/fog-google.gemspec +3 -3
- 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 +3 -3
- data/lib/fog/compute/google/models/servers.rb +22 -8
- 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/stop_server.rb +2 -2
- data/lib/fog/google/version.rb +1 -1
- data/test/helpers/integration_test_helper.rb +1 -1
- data/test/integration/compute/core_compute/test_servers.rb +86 -0
- 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 +1 -1
- data/test/unit/storage/test_xml_requests.rb +1 -1
- metadata +19 -9
| @@ -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)
         | 
| @@ -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 | 
            -
                       | 
| 9 | 
            -
                       | 
| 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 | 
            -
                       | 
| 9 | 
            -
                       | 
| 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 | 
            -
                       | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 20 | 
            -
                         | 
| 21 | 
            -
                           | 
| 22 | 
            -
             | 
| 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 | 
            -
             | 
| 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( | 
| 18 | 
            -
                       | 
| 19 | 
            -
                       | 
| 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 | 
            -
                       | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 20 | 
            -
                           | 
| 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( | 
| 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( | 
| 8 | 
            -
                       | 
| 9 | 
            -
                       | 
| 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( | 
| 8 | 
            -
                       | 
| 9 | 
            -
                       | 
| 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 | 
            -
                       | 
| 17 | 
            -
             | 
| 18 | 
            -
                       | 
| 19 | 
            -
                         | 
| 20 | 
            -
             | 
| 21 | 
            -
                           | 
| 22 | 
            -
             | 
| 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( | 
| 34 | 
            +
                      load(items)
         | 
| 27 35 | 
             
                    end
         | 
| 28 36 |  | 
| 29 37 | 
             
                    def get(identity, zone = nil)
         |