# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

require 'google/apis/core/base_service'
require 'google/apis/core/json_representation'
require 'google/apis/core/hashable'
require 'google/apis/errors'

module Google
  module Apis
    module ComputeV1
      # Compute Engine API
      #
      # Creates and runs virtual machines on Google Cloud Platform.
      #
      # @example
      #    require 'google/apis/compute_v1'
      #
      #    Compute = Google::Apis::ComputeV1 # Alias the module
      #    service = Compute::ComputeService.new
      #
      # @see https://cloud.google.com/compute/
      class ComputeService < Google::Apis::Core::BaseService
        DEFAULT_ENDPOINT_TEMPLATE = "https://compute.$UNIVERSE_DOMAIN$/"

        # @return [String]
        #  API key. Your API key identifies your project and provides you with API access,
        #  quota, and reports. Required unless you provide an OAuth 2.0 token.
        attr_accessor :key

        # @return [String]
        #  Available to use for quota purposes for server-side applications. Can be any
        #  arbitrary string assigned to a user, but should not exceed 40 characters.
        attr_accessor :quota_user

        # @return [String]
        #  Legacy name for parameter that has been superseded by `quotaUser`.
        attr_accessor :user_ip

        def initialize
          super(DEFAULT_ENDPOINT_TEMPLATE, 'compute/v1/',
                client_name: 'google-apis-compute_v1',
                client_version: Google::Apis::ComputeV1::GEM_VERSION)
          @batch_path = 'batch/compute/v1'
        end
        
        # Retrieves an aggregated list of accelerator types.
        # To prevent failure, it is recommended that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::AcceleratorTypeAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::AcceleratorTypeAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def aggregated_accelerator_type_list(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/acceleratorTypes', options)
          command.response_representation = Google::Apis::ComputeV1::AcceleratorTypeAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::AcceleratorTypeAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified accelerator type.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] accelerator_type
        #   Name of the accelerator type to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::AcceleratorType] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::AcceleratorType]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_accelerator_type(project, zone, accelerator_type, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/acceleratorTypes/{acceleratorType}', options)
          command.response_representation = Google::Apis::ComputeV1::AcceleratorType::Representation
          command.response_class = Google::Apis::ComputeV1::AcceleratorType
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['acceleratorType'] = accelerator_type unless accelerator_type.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of accelerator types that are available to the specified
        # project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::AcceleratorTypeList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::AcceleratorTypeList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_accelerator_types(project, zone, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/acceleratorTypes', options)
          command.response_representation = Google::Apis::ComputeV1::AcceleratorTypeList::Representation
          command.response_class = Google::Apis::ComputeV1::AcceleratorTypeList
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves an aggregated list of addresses.
        # To prevent failure, it is recommended that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::AddressAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::AddressAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_aggregated_addresses(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/addresses', options)
          command.response_representation = Google::Apis::ComputeV1::AddressAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::AddressAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified address resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] address
        #   Name of the address resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_address(project, region, address, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/regions/{region}/addresses/{address}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['address'] = address unless address.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified address resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] address
        #   Name of the address resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Address] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Address]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_address(project, region, address, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/addresses/{address}', options)
          command.response_representation = Google::Apis::ComputeV1::Address::Representation
          command.response_class = Google::Apis::ComputeV1::Address
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['address'] = address unless address.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates an address resource in the specified project by using the data
        # included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [Google::Apis::ComputeV1::Address] address_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_address(project, region, address_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/addresses', options)
          command.request_representation = Google::Apis::ComputeV1::Address::Representation
          command.request_object = address_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of addresses contained within
        # the specified region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::AddressList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::AddressList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_addresses(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/addresses', options)
          command.response_representation = Google::Apis::ComputeV1::AddressList::Representation
          command.response_class = Google::Apis::ComputeV1::AddressList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Moves the specified address resource.
        # @param [String] project
        #   Source project ID which the Address is moved from.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] address
        #   Name of the address resource to move.
        # @param [Google::Apis::ComputeV1::RegionAddressesMoveRequest] region_addresses_move_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def move_address(project, region, address, region_addresses_move_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/addresses/{address}/move', options)
          command.request_representation = Google::Apis::ComputeV1::RegionAddressesMoveRequest::Representation
          command.request_object = region_addresses_move_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['address'] = address unless address.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the labels on an Address. To learn more about labels, read theLabeling
        # Resources documentation.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::RegionSetLabelsRequest] region_set_labels_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_address_labels(project, region, resource, region_set_labels_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/addresses/{resource}/setLabels', options)
          command.request_representation = Google::Apis::ComputeV1::RegionSetLabelsRequest::Representation
          command.request_object = region_set_labels_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_address_iam_permissions(project, region, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/addresses/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Advise how, where and when to create the requested amount of instances
        # with specified accelerators, within the specified time and location limits.
        # The method recommends creating future reservations for the requested
        # resources.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [Google::Apis::ComputeV1::CalendarModeAdviceRequest] calendar_mode_advice_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::CalendarModeAdviceResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::CalendarModeAdviceResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def calendar_mode_advice(project, region, calendar_mode_advice_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/advice/calendarMode', options)
          command.request_representation = Google::Apis::ComputeV1::CalendarModeAdviceRequest::Representation
          command.request_object = calendar_mode_advice_request_object
          command.response_representation = Google::Apis::ComputeV1::CalendarModeAdviceResponse::Representation
          command.response_class = Google::Apis::ComputeV1::CalendarModeAdviceResponse
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves an aggregated list of autoscalers.
        # To prevent failure, it is recommended that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::AutoscalerAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::AutoscalerAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_aggregated_autoscalers(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/autoscalers', options)
          command.response_representation = Google::Apis::ComputeV1::AutoscalerAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::AutoscalerAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified autoscaler.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone for this request.
        # @param [String] autoscaler
        #   Name of the autoscaler to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_autoscaler(project, zone, autoscaler, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/zones/{zone}/autoscalers/{autoscaler}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['autoscaler'] = autoscaler unless autoscaler.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified autoscaler resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone for this request.
        # @param [String] autoscaler
        #   Name of the autoscaler to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Autoscaler] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Autoscaler]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_autoscaler(project, zone, autoscaler, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/autoscalers/{autoscaler}', options)
          command.response_representation = Google::Apis::ComputeV1::Autoscaler::Representation
          command.response_class = Google::Apis::ComputeV1::Autoscaler
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['autoscaler'] = autoscaler unless autoscaler.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates an autoscaler in the specified project using the data
        # included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone for this request.
        # @param [Google::Apis::ComputeV1::Autoscaler] autoscaler_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_autoscaler(project, zone, autoscaler_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/autoscalers', options)
          command.request_representation = Google::Apis::ComputeV1::Autoscaler::Representation
          command.request_object = autoscaler_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of autoscalers contained within
        # the specified zone.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::AutoscalerList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::AutoscalerList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_autoscalers(project, zone, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/autoscalers', options)
          command.response_representation = Google::Apis::ComputeV1::AutoscalerList::Representation
          command.response_class = Google::Apis::ComputeV1::AutoscalerList
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates an autoscaler in the specified project using the data
        # included in the request. This method supportsPATCH
        # semantics and uses theJSON merge
        # patch format and processing rules.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone for this request.
        # @param [Google::Apis::ComputeV1::Autoscaler] autoscaler_object
        # @param [String] autoscaler
        #   Name of the autoscaler to patch.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_autoscaler(project, zone, autoscaler_object = nil, autoscaler: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/zones/{zone}/autoscalers', options)
          command.request_representation = Google::Apis::ComputeV1::Autoscaler::Representation
          command.request_object = autoscaler_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['autoscaler'] = autoscaler unless autoscaler.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_autoscaler_iam_permissions(project, zone, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/autoscalers/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates an autoscaler in the specified project using the data
        # included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone for this request.
        # @param [Google::Apis::ComputeV1::Autoscaler] autoscaler_object
        # @param [String] autoscaler
        #   Name of the autoscaler to update.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def update_autoscaler(project, zone, autoscaler_object = nil, autoscaler: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:put, 'projects/{project}/zones/{zone}/autoscalers', options)
          command.request_representation = Google::Apis::ComputeV1::Autoscaler::Representation
          command.request_object = autoscaler_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['autoscaler'] = autoscaler unless autoscaler.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Adds a key for validating requests with signed URLs for this backend
        # bucket.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] backend_bucket
        #   Name of the BackendBucket resource to which the Signed URL Key should be
        #   added. The name should conform to RFC1035.
        # @param [Google::Apis::ComputeV1::SignedUrlKey] signed_url_key_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def add_backend_bucket_signed_url_key(project, backend_bucket, signed_url_key_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/backendBuckets/{backendBucket}/addSignedUrlKey', options)
          command.request_representation = Google::Apis::ComputeV1::SignedUrlKey::Representation
          command.request_object = signed_url_key_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['backendBucket'] = backend_bucket unless backend_bucket.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified BackendBucket resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] backend_bucket
        #   Name of the BackendBucket resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_backend_bucket(project, backend_bucket, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/global/backendBuckets/{backendBucket}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['backendBucket'] = backend_bucket unless backend_bucket.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes a key for validating requests with signed URLs for this backend
        # bucket.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] backend_bucket
        #   Name of the BackendBucket resource to which the Signed URL Key should be
        #   added. The name should conform to RFC1035.
        # @param [String] key_name
        #   The name of the Signed URL Key to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_backend_bucket_signed_url_key(project, backend_bucket, key_name, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/backendBuckets/{backendBucket}/deleteSignedUrlKey', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['backendBucket'] = backend_bucket unless backend_bucket.nil?
          command.query['keyName'] = key_name unless key_name.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified BackendBucket resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] backend_bucket
        #   Name of the BackendBucket resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::BackendBucket] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::BackendBucket]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_backend_bucket(project, backend_bucket, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/backendBuckets/{backendBucket}', options)
          command.response_representation = Google::Apis::ComputeV1::BackendBucket::Representation
          command.response_class = Google::Apis::ComputeV1::BackendBucket
          command.params['project'] = project unless project.nil?
          command.params['backendBucket'] = backend_bucket unless backend_bucket.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets the access control policy for a resource. May be empty if no such
        # policy or resource exists.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Fixnum] options_requested_policy_version
        #   Requested IAM Policy version.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_backend_bucket_iam_policy(project, resource, options_requested_policy_version: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/backendBuckets/{resource}/getIamPolicy', options)
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['optionsRequestedPolicyVersion'] = options_requested_policy_version unless options_requested_policy_version.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a BackendBucket resource in the specified project using
        # the data included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::BackendBucket] backend_bucket_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_backend_bucket(project, backend_bucket_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/backendBuckets', options)
          command.request_representation = Google::Apis::ComputeV1::BackendBucket::Representation
          command.request_object = backend_bucket_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of BackendBucket resources available to the specified
        # project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::BackendBucketList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::BackendBucketList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_backend_buckets(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/backendBuckets', options)
          command.response_representation = Google::Apis::ComputeV1::BackendBucketList::Representation
          command.response_class = Google::Apis::ComputeV1::BackendBucketList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates the specified BackendBucket resource with the data included in the
        # request. This method supportsPATCH
        # semantics and uses theJSON merge
        # patch format and processing rules.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] backend_bucket
        #   Name of the BackendBucket resource to patch.
        # @param [Google::Apis::ComputeV1::BackendBucket] backend_bucket_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_backend_bucket(project, backend_bucket, backend_bucket_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/global/backendBuckets/{backendBucket}', options)
          command.request_representation = Google::Apis::ComputeV1::BackendBucket::Representation
          command.request_object = backend_bucket_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['backendBucket'] = backend_bucket unless backend_bucket.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the edge security policy for the specified backend bucket.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] backend_bucket
        #   Name of the BackendBucket resource to which the security policy should be
        #   set. The name should conform to RFC1035.
        # @param [Google::Apis::ComputeV1::SecurityPolicyReference] security_policy_reference_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_backend_bucket_edge_security_policy(project, backend_bucket, security_policy_reference_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/backendBuckets/{backendBucket}/setEdgeSecurityPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::SecurityPolicyReference::Representation
          command.request_object = security_policy_reference_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['backendBucket'] = backend_bucket unless backend_bucket.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the access control policy on the specified resource.
        # Replaces any existing policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::GlobalSetPolicyRequest] global_set_policy_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_backend_bucket_iam_policy(project, resource, global_set_policy_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/backendBuckets/{resource}/setIamPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::GlobalSetPolicyRequest::Representation
          command.request_object = global_set_policy_request_object
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_backend_bucket_iam_permissions(project, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/backendBuckets/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates the specified BackendBucket resource with the data included in the
        # request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] backend_bucket
        #   Name of the BackendBucket resource to update.
        # @param [Google::Apis::ComputeV1::BackendBucket] backend_bucket_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def update_backend_bucket(project, backend_bucket, backend_bucket_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:put, 'projects/{project}/global/backendBuckets/{backendBucket}', options)
          command.request_representation = Google::Apis::ComputeV1::BackendBucket::Representation
          command.request_object = backend_bucket_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['backendBucket'] = backend_bucket unless backend_bucket.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Adds a key for validating requests with signed URLs for this backend
        # service.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] backend_service
        #   Name of the BackendService resource to which the Signed URL Key should be
        #   added. The name should conform to RFC1035.
        # @param [Google::Apis::ComputeV1::SignedUrlKey] signed_url_key_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def add_backend_service_signed_url_key(project, backend_service, signed_url_key_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/backendServices/{backendService}/addSignedUrlKey', options)
          command.request_representation = Google::Apis::ComputeV1::SignedUrlKey::Representation
          command.request_object = signed_url_key_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['backendService'] = backend_service unless backend_service.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of all BackendService resources, regional and global,
        # available to the specified project.
        # To prevent failure, it is recommended that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Name of the project scoping this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::BackendServiceAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::BackendServiceAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def aggregated_backend_service_list(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/backendServices', options)
          command.response_representation = Google::Apis::ComputeV1::BackendServiceAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::BackendServiceAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified BackendService resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] backend_service
        #   Name of the BackendService resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_backend_service(project, backend_service, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/global/backendServices/{backendService}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['backendService'] = backend_service unless backend_service.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes a key for validating requests with signed URLs for this backend
        # service.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] backend_service
        #   Name of the BackendService resource to which the Signed URL Key should be
        #   added. The name should conform to RFC1035.
        # @param [String] key_name
        #   The name of the Signed URL Key to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_backend_service_signed_url_key(project, backend_service, key_name, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/backendServices/{backendService}/deleteSignedUrlKey', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['backendService'] = backend_service unless backend_service.nil?
          command.query['keyName'] = key_name unless key_name.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified BackendService resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] backend_service
        #   Name of the BackendService resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::BackendService] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::BackendService]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_backend_service(project, backend_service, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/backendServices/{backendService}', options)
          command.response_representation = Google::Apis::ComputeV1::BackendService::Representation
          command.response_class = Google::Apis::ComputeV1::BackendService
          command.params['project'] = project unless project.nil?
          command.params['backendService'] = backend_service unless backend_service.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns effective security policies applied to this backend service.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] backend_service
        #   Name of the Backend Service for this request.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [NilClass] No result returned for this method
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [void]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_backend_service_effective_security_policies(project, backend_service, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/backendServices/{backendService}/getEffectiveSecurityPolicies', options)
          command.params['project'] = project unless project.nil?
          command.params['backendService'] = backend_service unless backend_service.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets the most recent health check results for this
        # BackendService.
        # Example request body:
        # `
        # "group": "/zones/us-east1-b/instanceGroups/lb-backend-example"
        # `
        # @param [String] project
        # @param [String] backend_service
        #   Name of the BackendService resource to which the queried instance belongs.
        # @param [Google::Apis::ComputeV1::ResourceGroupReference] resource_group_reference_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::BackendServiceGroupHealth] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::BackendServiceGroupHealth]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_backend_service_health(project, backend_service, resource_group_reference_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/backendServices/{backendService}/getHealth', options)
          command.request_representation = Google::Apis::ComputeV1::ResourceGroupReference::Representation
          command.request_object = resource_group_reference_object
          command.response_representation = Google::Apis::ComputeV1::BackendServiceGroupHealth::Representation
          command.response_class = Google::Apis::ComputeV1::BackendServiceGroupHealth
          command.params['project'] = project unless project.nil?
          command.params['backendService'] = backend_service unless backend_service.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets the access control policy for a resource. May be empty if no such
        # policy or resource exists.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Fixnum] options_requested_policy_version
        #   Requested IAM Policy version.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_backend_service_iam_policy(project, resource, options_requested_policy_version: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/backendServices/{resource}/getIamPolicy', options)
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['optionsRequestedPolicyVersion'] = options_requested_policy_version unless options_requested_policy_version.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a BackendService resource in the specified project using
        # the data included in the request. For more information, see
        # Backend services overview.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::BackendService] backend_service_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_backend_service(project, backend_service_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/backendServices', options)
          command.request_representation = Google::Apis::ComputeV1::BackendService::Representation
          command.request_object = backend_service_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of BackendService resources available to the specified
        # project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::BackendServiceList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::BackendServiceList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_backend_services(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/backendServices', options)
          command.response_representation = Google::Apis::ComputeV1::BackendServiceList::Representation
          command.response_class = Google::Apis::ComputeV1::BackendServiceList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of all usable backend services in the specified project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::BackendServiceListUsable] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::BackendServiceListUsable]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_backend_service_usable(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/backendServices/listUsable', options)
          command.response_representation = Google::Apis::ComputeV1::BackendServiceListUsable::Representation
          command.response_class = Google::Apis::ComputeV1::BackendServiceListUsable
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches the specified BackendService resource with the data included in the
        # request. For more information, see
        # Backend services overview. This method
        # supports PATCH semantics and uses the JSON merge
        # patch format and processing rules.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] backend_service
        #   Name of the BackendService resource to patch.
        # @param [Google::Apis::ComputeV1::BackendService] backend_service_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_backend_service(project, backend_service, backend_service_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/global/backendServices/{backendService}', options)
          command.request_representation = Google::Apis::ComputeV1::BackendService::Representation
          command.request_object = backend_service_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['backendService'] = backend_service unless backend_service.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the edge security policy for the specified backend service.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] backend_service
        #   Name of the BackendService resource to which the edge security policy
        #   should be set. The name should conform to RFC1035.
        # @param [Google::Apis::ComputeV1::SecurityPolicyReference] security_policy_reference_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_backend_service_edge_security_policy(project, backend_service, security_policy_reference_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/backendServices/{backendService}/setEdgeSecurityPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::SecurityPolicyReference::Representation
          command.request_object = security_policy_reference_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['backendService'] = backend_service unless backend_service.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the access control policy on the specified resource.
        # Replaces any existing policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::GlobalSetPolicyRequest] global_set_policy_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_backend_service_iam_policy(project, resource, global_set_policy_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/backendServices/{resource}/setIamPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::GlobalSetPolicyRequest::Representation
          command.request_object = global_set_policy_request_object
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the Google Cloud Armor security policy for the specified backend
        # service. For more information, seeGoogle
        # Cloud Armor Overview
        # @param [String] project
        #   Project ID for this request.
        # @param [String] backend_service
        #   Name of the BackendService resource to which the security policy should be
        #   set. The name should conform to RFC1035.
        # @param [Google::Apis::ComputeV1::SecurityPolicyReference] security_policy_reference_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_backend_service_security_policy(project, backend_service, security_policy_reference_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/backendServices/{backendService}/setSecurityPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::SecurityPolicyReference::Representation
          command.request_object = security_policy_reference_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['backendService'] = backend_service unless backend_service.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_backend_service_iam_permissions(project, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/backendServices/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates the specified BackendService resource with the data included in the
        # request. For more information, seeBackend
        # services overview.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] backend_service
        #   Name of the BackendService resource to update.
        # @param [Google::Apis::ComputeV1::BackendService] backend_service_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def update_backend_service(project, backend_service, backend_service_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:put, 'projects/{project}/global/backendServices/{backendService}', options)
          command.request_representation = Google::Apis::ComputeV1::BackendService::Representation
          command.request_object = backend_service_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['backendService'] = backend_service unless backend_service.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified cross-site network in the given scope.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] cross_site_network
        #   Name of the cross-site network to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        #   end_interface: MixerMutationRequestBuilder
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_cross_site_network(project, cross_site_network, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/global/crossSiteNetworks/{crossSiteNetwork}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['crossSiteNetwork'] = cross_site_network unless cross_site_network.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified cross-site network in the given scope.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] cross_site_network
        #   Name of the cross-site network to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::CrossSiteNetwork] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::CrossSiteNetwork]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_cross_site_network(project, cross_site_network, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/crossSiteNetworks/{crossSiteNetwork}', options)
          command.response_representation = Google::Apis::ComputeV1::CrossSiteNetwork::Representation
          command.response_class = Google::Apis::ComputeV1::CrossSiteNetwork
          command.params['project'] = project unless project.nil?
          command.params['crossSiteNetwork'] = cross_site_network unless cross_site_network.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a cross-site network in the specified project in the given scope
        # using the parameters that are included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::CrossSiteNetwork] cross_site_network_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        #   end_interface: MixerMutationRequestBuilder
        # @param [Boolean] validate_only
        #   [Input Only] Validate the new configuration, but don't create it.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_cross_site_network(project, cross_site_network_object = nil, request_id: nil, validate_only: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/crossSiteNetworks', options)
          command.request_representation = Google::Apis::ComputeV1::CrossSiteNetwork::Representation
          command.request_object = cross_site_network_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['validateOnly'] = validate_only unless validate_only.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists the cross-site networks for a project in the given scope.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::CrossSiteNetworkList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::CrossSiteNetworkList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_cross_site_networks(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/crossSiteNetworks', options)
          command.response_representation = Google::Apis::ComputeV1::CrossSiteNetworkList::Representation
          command.response_class = Google::Apis::ComputeV1::CrossSiteNetworkList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates the specified cross-site network with the data included in
        # the request. This method supportsPATCH
        # semantics and uses theJSON merge
        # patch format and processing rules.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] cross_site_network
        #   Name of the cross-site network to update.
        # @param [Google::Apis::ComputeV1::CrossSiteNetwork] cross_site_network_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        #   end_interface: MixerMutationRequestBuilder
        # @param [String] update_mask
        #   update_mask indicates fields to be updated as part of this request.
        # @param [Boolean] validate_only
        #   [Input Only] Validate the new configuration, but don't update it.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_cross_site_network(project, cross_site_network, cross_site_network_object = nil, request_id: nil, update_mask: nil, validate_only: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/global/crossSiteNetworks/{crossSiteNetwork}', options)
          command.request_representation = Google::Apis::ComputeV1::CrossSiteNetwork::Representation
          command.request_object = cross_site_network_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['crossSiteNetwork'] = cross_site_network unless cross_site_network.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['updateMask'] = update_mask unless update_mask.nil?
          command.query['validateOnly'] = validate_only unless validate_only.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves an aggregated list of disk types.
        # To prevent failure, it is recommended that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::DiskTypeAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::DiskTypeAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_aggregated_disk_types(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/diskTypes', options)
          command.response_representation = Google::Apis::ComputeV1::DiskTypeAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::DiskTypeAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified disk type.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] disk_type
        #   Name of the disk type to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::DiskType] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::DiskType]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_disk_type(project, zone, disk_type, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/diskTypes/{diskType}', options)
          command.response_representation = Google::Apis::ComputeV1::DiskType::Representation
          command.response_class = Google::Apis::ComputeV1::DiskType
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['diskType'] = disk_type unless disk_type.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of disk types available to the specified
        # project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::DiskTypeList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::DiskTypeList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_disk_types(project, zone, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/diskTypes', options)
          command.response_representation = Google::Apis::ComputeV1::DiskTypeList::Representation
          command.response_class = Google::Apis::ComputeV1::DiskTypeList
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Adds existing resource policies to a disk. You can only add one
        # policy which will be applied to this disk for scheduling snapshot
        # creation.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] disk
        #   The disk name for this request.
        # @param [Google::Apis::ComputeV1::DisksAddResourcePoliciesRequest] disks_add_resource_policies_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def add_disk_resource_policies(project, zone, disk, disks_add_resource_policies_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/disks/{disk}/addResourcePolicies', options)
          command.request_representation = Google::Apis::ComputeV1::DisksAddResourcePoliciesRequest::Representation
          command.request_object = disks_add_resource_policies_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['disk'] = disk unless disk.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves an aggregated list of persistent disks.
        # To prevent failure, it is recommended that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::DiskAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::DiskAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_aggregated_disk(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/disks', options)
          command.response_representation = Google::Apis::ComputeV1::DiskAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::DiskAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Bulk create a set of disks.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [Google::Apis::ComputeV1::BulkInsertDiskResource] bulk_insert_disk_resource_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def bulk_disk_insert(project, zone, bulk_insert_disk_resource_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/disks/bulkInsert', options)
          command.request_representation = Google::Apis::ComputeV1::BulkInsertDiskResource::Representation
          command.request_object = bulk_insert_disk_resource_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the labels on many disks at once. To learn more about labels, read
        # theLabeling
        # Resources documentation.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [Google::Apis::ComputeV1::BulkZoneSetLabelsRequest] bulk_zone_set_labels_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def bulk_disk_set_labels(project, zone, bulk_zone_set_labels_request_object = nil, request_id: nil, resource: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/disks/bulkSetLabels', options)
          command.request_representation = Google::Apis::ComputeV1::BulkZoneSetLabelsRequest::Representation
          command.request_object = bulk_zone_set_labels_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a snapshot of a specified persistent disk. For regular snapshot
        # creation, consider using snapshots.insert
        # instead, as that method supports more features, such as creating snapshots
        # in a project different from the source disk project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] disk
        #   Name of the persistent disk to snapshot.
        # @param [Google::Apis::ComputeV1::Snapshot] snapshot_object
        # @param [Boolean] guest_flush
        #   [Input Only] Whether to attempt an application consistent snapshot by
        #   informing the OS to prepare for the snapshot process.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def create_disk_snapshot(project, zone, disk, snapshot_object = nil, guest_flush: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/disks/{disk}/createSnapshot', options)
          command.request_representation = Google::Apis::ComputeV1::Snapshot::Representation
          command.request_object = snapshot_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['disk'] = disk unless disk.nil?
          command.query['guestFlush'] = guest_flush unless guest_flush.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified persistent disk. Deleting a disk removes its data
        # permanently and is irreversible. However, deleting a disk does not
        # delete any snapshots
        # previously made from the disk. You must separatelydelete
        # snapshots.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] disk
        #   Name of the persistent disk to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_disk(project, zone, disk, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/zones/{zone}/disks/{disk}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['disk'] = disk unless disk.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified persistent disk.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] disk
        #   Name of the persistent disk to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Disk] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Disk]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_disk(project, zone, disk, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/disks/{disk}', options)
          command.response_representation = Google::Apis::ComputeV1::Disk::Representation
          command.response_class = Google::Apis::ComputeV1::Disk
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['disk'] = disk unless disk.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets the access control policy for a resource. May be empty if no such
        # policy or resource exists.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Fixnum] options_requested_policy_version
        #   Requested IAM Policy version.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_disk_iam_policy(project, zone, resource, options_requested_policy_version: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/disks/{resource}/getIamPolicy', options)
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['optionsRequestedPolicyVersion'] = options_requested_policy_version unless options_requested_policy_version.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a persistent disk in the specified project using the data
        # in the request. You can create a disk from a source
        # (sourceImage, sourceSnapshot, orsourceDisk) or create an empty 500 GB data
        # disk by
        # omitting all properties. You can also create a disk that is larger than
        # the default size by specifying the sizeGb property.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [Google::Apis::ComputeV1::Disk] disk_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] source_image
        #   Source image to restore onto a disk. This field is optional.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_disk(project, zone, disk_object = nil, request_id: nil, source_image: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/disks', options)
          command.request_representation = Google::Apis::ComputeV1::Disk::Representation
          command.request_object = disk_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['sourceImage'] = source_image unless source_image.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of persistent disks contained within
        # the specified zone.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::DiskList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::DiskList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_disks(project, zone, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/disks', options)
          command.response_representation = Google::Apis::ComputeV1::DiskList::Representation
          command.response_class = Google::Apis::ComputeV1::DiskList
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Removes resource policies from a disk.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] disk
        #   The disk name for this request.
        # @param [Google::Apis::ComputeV1::DisksRemoveResourcePoliciesRequest] disks_remove_resource_policies_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def remove_disk_resource_policies(project, zone, disk, disks_remove_resource_policies_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/disks/{disk}/removeResourcePolicies', options)
          command.request_representation = Google::Apis::ComputeV1::DisksRemoveResourcePoliciesRequest::Representation
          command.request_object = disks_remove_resource_policies_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['disk'] = disk unless disk.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Resizes the specified persistent disk.
        # You can only increase the size of the disk.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] disk
        #   The name of the persistent disk.
        # @param [Google::Apis::ComputeV1::DisksResizeRequest] disks_resize_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def resize_disk(project, zone, disk, disks_resize_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/disks/{disk}/resize', options)
          command.request_representation = Google::Apis::ComputeV1::DisksResizeRequest::Representation
          command.request_object = disks_resize_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['disk'] = disk unless disk.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the access control policy on the specified resource.
        # Replaces any existing policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::ZoneSetPolicyRequest] zone_set_policy_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_disk_iam_policy(project, zone, resource, zone_set_policy_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/disks/{resource}/setIamPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::ZoneSetPolicyRequest::Representation
          command.request_object = zone_set_policy_request_object
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the labels on a disk. To learn more about labels, read theLabeling
        # Resources documentation.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::ZoneSetLabelsRequest] zone_set_labels_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_disk_labels(project, zone, resource, zone_set_labels_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/disks/{resource}/setLabels', options)
          command.request_representation = Google::Apis::ComputeV1::ZoneSetLabelsRequest::Representation
          command.request_object = zone_set_labels_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Starts asynchronous replication.
        # Must be invoked on the primary disk.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] disk
        #   The name of the persistent disk.
        # @param [Google::Apis::ComputeV1::DisksStartAsyncReplicationRequest] disks_start_async_replication_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def start_disk_async_replication(project, zone, disk, disks_start_async_replication_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/disks/{disk}/startAsyncReplication', options)
          command.request_representation = Google::Apis::ComputeV1::DisksStartAsyncReplicationRequest::Representation
          command.request_object = disks_start_async_replication_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['disk'] = disk unless disk.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Stops asynchronous replication.
        # Can be invoked either on the primary or on the secondary disk.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] disk
        #   The name of the persistent disk.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def stop_disk_async_replication(project, zone, disk, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/disks/{disk}/stopAsyncReplication', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['disk'] = disk unless disk.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Stops asynchronous replication for a consistency group of disks.
        # Can be invoked either in the primary or secondary scope.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request. This must be the zone of the primary
        #   or secondary disks in the consistency group.
        # @param [Google::Apis::ComputeV1::DisksStopGroupAsyncReplicationResource] disks_stop_group_async_replication_resource_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def stop_disk_group_async_replication(project, zone, disks_stop_group_async_replication_resource_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/disks/stopGroupAsyncReplication', options)
          command.request_representation = Google::Apis::ComputeV1::DisksStopGroupAsyncReplicationResource::Representation
          command.request_object = disks_stop_group_async_replication_resource_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_disk_iam_permissions(project, zone, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/disks/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates the specified disk with the data included in the request.
        # The update is performed only on selected fields included as part
        # of update-mask. Only the following fields can be modified: user_license.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] disk
        #   The disk name for this request.
        # @param [Google::Apis::ComputeV1::Disk] disk_object
        # @param [Array<String>, String] paths
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] update_mask
        #   update_mask indicates fields to be updated as part of this request.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def update_disk(project, zone, disk, disk_object = nil, paths: nil, request_id: nil, update_mask: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/zones/{zone}/disks/{disk}', options)
          command.request_representation = Google::Apis::ComputeV1::Disk::Representation
          command.request_object = disk_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['disk'] = disk unless disk.nil?
          command.query['paths'] = paths unless paths.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['updateMask'] = update_mask unless update_mask.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified externalVpnGateway.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] external_vpn_gateway
        #   Name of the externalVpnGateways to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_external_vpn_gateway(project, external_vpn_gateway, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/global/externalVpnGateways/{externalVpnGateway}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['externalVpnGateway'] = external_vpn_gateway unless external_vpn_gateway.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified externalVpnGateway. Get a list of available
        # externalVpnGateways by making a list() request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] external_vpn_gateway
        #   Name of the externalVpnGateway to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::ExternalVpnGateway] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::ExternalVpnGateway]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_external_vpn_gateway(project, external_vpn_gateway, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/externalVpnGateways/{externalVpnGateway}', options)
          command.response_representation = Google::Apis::ComputeV1::ExternalVpnGateway::Representation
          command.response_class = Google::Apis::ComputeV1::ExternalVpnGateway
          command.params['project'] = project unless project.nil?
          command.params['externalVpnGateway'] = external_vpn_gateway unless external_vpn_gateway.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a ExternalVpnGateway in the specified project using
        # the data included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::ExternalVpnGateway] external_vpn_gateway_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_external_vpn_gateway(project, external_vpn_gateway_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/externalVpnGateways', options)
          command.request_representation = Google::Apis::ComputeV1::ExternalVpnGateway::Representation
          command.request_object = external_vpn_gateway_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of ExternalVpnGateway available to the specified
        # project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::ExternalVpnGatewayList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::ExternalVpnGatewayList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_external_vpn_gateways(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/externalVpnGateways', options)
          command.response_representation = Google::Apis::ComputeV1::ExternalVpnGatewayList::Representation
          command.response_class = Google::Apis::ComputeV1::ExternalVpnGatewayList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the labels on an ExternalVpnGateway. To learn more about labels,
        # read the Labeling
        # Resources documentation.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::GlobalSetLabelsRequest] global_set_labels_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_external_vpn_gateway_labels(project, resource, global_set_labels_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/externalVpnGateways/{resource}/setLabels', options)
          command.request_representation = Google::Apis::ComputeV1::GlobalSetLabelsRequest::Representation
          command.request_object = global_set_labels_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_external_vpn_gateway_iam_permissions(project, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/externalVpnGateways/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Inserts an association for the specified firewall policy.
        # @param [String] firewall_policy
        #   Name of the firewall policy to update.
        # @param [Google::Apis::ComputeV1::FirewallPolicyAssociation] firewall_policy_association_object
        # @param [Boolean] replace_existing_association
        #   Indicates whether or not to replace it if an association of the attachment
        #   already exists. This is false by default, in which case an error will be
        #   returned if an association already exists.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def add_firewall_policy_association(firewall_policy, firewall_policy_association_object = nil, replace_existing_association: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'locations/global/firewallPolicies/{firewallPolicy}/addAssociation', options)
          command.request_representation = Google::Apis::ComputeV1::FirewallPolicyAssociation::Representation
          command.request_object = firewall_policy_association_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['replaceExistingAssociation'] = replace_existing_association unless replace_existing_association.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Inserts a rule into a firewall policy.
        # @param [String] firewall_policy
        #   Name of the firewall policy to update.
        # @param [Google::Apis::ComputeV1::FirewallPolicyRule] firewall_policy_rule_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def add_firewall_policy_rule(firewall_policy, firewall_policy_rule_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'locations/global/firewallPolicies/{firewallPolicy}/addRule', options)
          command.request_representation = Google::Apis::ComputeV1::FirewallPolicyRule::Representation
          command.request_object = firewall_policy_rule_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Copies rules to the specified firewall policy.
        # @param [String] firewall_policy
        #   Name of the firewall policy to update.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] source_firewall_policy
        #   The firewall policy from which to copy rules.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def clone_firewall_policy_rules(firewall_policy, request_id: nil, source_firewall_policy: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'locations/global/firewallPolicies/{firewallPolicy}/cloneRules', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['sourceFirewallPolicy'] = source_firewall_policy unless source_firewall_policy.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified policy.
        # @param [String] firewall_policy
        #   Name of the firewall policy to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_firewall_policy(firewall_policy, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'locations/global/firewallPolicies/{firewallPolicy}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified firewall policy.
        # @param [String] firewall_policy
        #   Name of the firewall policy to get.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::FirewallPolicy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::FirewallPolicy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_firewall_policy(firewall_policy, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'locations/global/firewallPolicies/{firewallPolicy}', options)
          command.response_representation = Google::Apis::ComputeV1::FirewallPolicy::Representation
          command.response_class = Google::Apis::ComputeV1::FirewallPolicy
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets an association with the specified name.
        # @param [String] firewall_policy
        #   Name of the firewall policy to which the queried rule belongs.
        # @param [String] name
        #   The name of the association to get from the firewall policy.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::FirewallPolicyAssociation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::FirewallPolicyAssociation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_firewall_policy_association(firewall_policy, name: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'locations/global/firewallPolicies/{firewallPolicy}/getAssociation', options)
          command.response_representation = Google::Apis::ComputeV1::FirewallPolicyAssociation::Representation
          command.response_class = Google::Apis::ComputeV1::FirewallPolicyAssociation
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['name'] = name unless name.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets the access control policy for a resource. May be empty if no such
        # policy or resource exists.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Fixnum] options_requested_policy_version
        #   Requested IAM Policy version.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_firewall_policy_iam_policy(resource, options_requested_policy_version: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'locations/global/firewallPolicies/{resource}/getIamPolicy', options)
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['resource'] = resource unless resource.nil?
          command.query['optionsRequestedPolicyVersion'] = options_requested_policy_version unless options_requested_policy_version.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets a rule of the specified priority.
        # @param [String] firewall_policy
        #   Name of the firewall policy to which the queried rule belongs.
        # @param [Fixnum] priority
        #   The priority of the rule to get from the firewall policy.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::FirewallPolicyRule] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::FirewallPolicyRule]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_firewall_policy_rule(firewall_policy, priority: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'locations/global/firewallPolicies/{firewallPolicy}/getRule', options)
          command.response_representation = Google::Apis::ComputeV1::FirewallPolicyRule::Representation
          command.response_class = Google::Apis::ComputeV1::FirewallPolicyRule
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['priority'] = priority unless priority.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a new policy in the specified project using the data included in
        # the request.
        # @param [Google::Apis::ComputeV1::FirewallPolicy] firewall_policy_object
        # @param [String] parent_id
        #   Parent ID for this request. The ID can be either be "folders/[FOLDER_ID]"
        #   if the parent is a folder or "organizations/[ORGANIZATION_ID]" if the
        #   parent is an organization.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_firewall_policy(firewall_policy_object = nil, parent_id: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'locations/global/firewallPolicies', options)
          command.request_representation = Google::Apis::ComputeV1::FirewallPolicy::Representation
          command.request_object = firewall_policy_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.query['parentId'] = parent_id unless parent_id.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists all the policies that have been configured for the specified
        # folder or organization.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [String] parent_id
        #   Parent ID for this request. The ID can be either be "folders/[FOLDER_ID]"
        #   if the parent is a folder or "organizations/[ORGANIZATION_ID]" if the
        #   parent is an organization.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::FirewallPolicyList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::FirewallPolicyList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_firewall_policies(filter: nil, max_results: nil, order_by: nil, page_token: nil, parent_id: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'locations/global/firewallPolicies', options)
          command.response_representation = Google::Apis::ComputeV1::FirewallPolicyList::Representation
          command.response_class = Google::Apis::ComputeV1::FirewallPolicyList
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['parentId'] = parent_id unless parent_id.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists associations of a specified target, i.e., organization or folder.
        # @param [String] target_resource
        #   The target resource to list associations. It is an organization, or a
        #   folder.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::FirewallPoliciesListAssociationsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::FirewallPoliciesListAssociationsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_firewall_policy_associations(target_resource: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'locations/global/firewallPolicies/listAssociations', options)
          command.response_representation = Google::Apis::ComputeV1::FirewallPoliciesListAssociationsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::FirewallPoliciesListAssociationsResponse
          command.query['targetResource'] = target_resource unless target_resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Moves the specified firewall policy.
        # @param [String] firewall_policy
        #   Name of the firewall policy to update.
        # @param [String] parent_id
        #   The new parent of the firewall policy. The ID can be either be
        #   "folders/[FOLDER_ID]" if the parent is a folder or
        #   "organizations/[ORGANIZATION_ID]" if the parent is an organization.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def move_firewall_policy(firewall_policy, parent_id: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'locations/global/firewallPolicies/{firewallPolicy}/move', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['parentId'] = parent_id unless parent_id.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches the specified policy with the data included in the request.
        # @param [String] firewall_policy
        #   Name of the firewall policy to update.
        # @param [Google::Apis::ComputeV1::FirewallPolicy] firewall_policy_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_firewall_policy(firewall_policy, firewall_policy_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'locations/global/firewallPolicies/{firewallPolicy}', options)
          command.request_representation = Google::Apis::ComputeV1::FirewallPolicy::Representation
          command.request_object = firewall_policy_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches a rule of the specified priority.
        # @param [String] firewall_policy
        #   Name of the firewall policy to update.
        # @param [Google::Apis::ComputeV1::FirewallPolicyRule] firewall_policy_rule_object
        # @param [Fixnum] priority
        #   The priority of the rule to patch.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_firewall_policy_rule(firewall_policy, firewall_policy_rule_object = nil, priority: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'locations/global/firewallPolicies/{firewallPolicy}/patchRule', options)
          command.request_representation = Google::Apis::ComputeV1::FirewallPolicyRule::Representation
          command.request_object = firewall_policy_rule_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['priority'] = priority unless priority.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Removes an association for the specified firewall policy.
        # @param [String] firewall_policy
        #   Name of the firewall policy to update.
        # @param [String] name
        #   Name for the attachment that will be removed.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def remove_firewall_policy_association(firewall_policy, name: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'locations/global/firewallPolicies/{firewallPolicy}/removeAssociation', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['name'] = name unless name.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes a rule of the specified priority.
        # @param [String] firewall_policy
        #   Name of the firewall policy to update.
        # @param [Fixnum] priority
        #   The priority of the rule to remove from the firewall policy.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def remove_firewall_policy_rule(firewall_policy, priority: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'locations/global/firewallPolicies/{firewallPolicy}/removeRule', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['priority'] = priority unless priority.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the access control policy on the specified resource.
        # Replaces any existing policy.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::GlobalOrganizationSetPolicyRequest] global_organization_set_policy_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_firewall_policy_iam_policy(resource, global_organization_set_policy_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'locations/global/firewallPolicies/{resource}/setIamPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::GlobalOrganizationSetPolicyRequest::Representation
          command.request_object = global_organization_set_policy_request_object
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_firewall_policy_iam_permissions(resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'locations/global/firewallPolicies/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified firewall.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] firewall
        #   Name of the firewall rule to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_firewall(project, firewall, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/global/firewalls/{firewall}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['firewall'] = firewall unless firewall.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified firewall.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] firewall
        #   Name of the firewall rule to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Firewall] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Firewall]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_firewall(project, firewall, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/firewalls/{firewall}', options)
          command.response_representation = Google::Apis::ComputeV1::Firewall::Representation
          command.response_class = Google::Apis::ComputeV1::Firewall
          command.params['project'] = project unless project.nil?
          command.params['firewall'] = firewall unless firewall.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a firewall rule in the specified project using the data
        # included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::Firewall] firewall_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_firewall(project, firewall_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/firewalls', options)
          command.request_representation = Google::Apis::ComputeV1::Firewall::Representation
          command.request_object = firewall_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of firewall rules available to the specified
        # project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::FirewallList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::FirewallList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_firewalls(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/firewalls', options)
          command.response_representation = Google::Apis::ComputeV1::FirewallList::Representation
          command.response_class = Google::Apis::ComputeV1::FirewallList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates the specified firewall rule with the data included in the
        # request. This method supportsPATCH
        # semantics and uses theJSON merge
        # patch format and processing rules.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] firewall
        #   Name of the firewall rule to patch.
        # @param [Google::Apis::ComputeV1::Firewall] firewall_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_firewall(project, firewall, firewall_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/global/firewalls/{firewall}', options)
          command.request_representation = Google::Apis::ComputeV1::Firewall::Representation
          command.request_object = firewall_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['firewall'] = firewall unless firewall.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_firewall_iam_permissions(project, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/firewalls/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates the specified firewall rule with the data included in the
        # request.
        # Note that all fields will be updated if using PUT, even fields that are not
        # specified. To update individual fields, please use PATCH instead.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] firewall
        #   Name of the firewall rule to update.
        # @param [Google::Apis::ComputeV1::Firewall] firewall_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def update_firewall(project, firewall, firewall_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:put, 'projects/{project}/global/firewalls/{firewall}', options)
          command.request_representation = Google::Apis::ComputeV1::Firewall::Representation
          command.request_object = firewall_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['firewall'] = firewall unless firewall.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves an aggregated list of forwarding rules.
        # To prevent failure, it is recommended that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::ForwardingRuleAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::ForwardingRuleAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_aggregated_forwarding_rules(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/forwardingRules', options)
          command.response_representation = Google::Apis::ComputeV1::ForwardingRuleAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::ForwardingRuleAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified ForwardingRule resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] forwarding_rule
        #   Name of the ForwardingRule resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_forwarding_rule(project, region, forwarding_rule, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/regions/{region}/forwardingRules/{forwardingRule}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['forwardingRule'] = forwarding_rule unless forwarding_rule.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified ForwardingRule resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] forwarding_rule
        #   Name of the ForwardingRule resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::ForwardingRule] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::ForwardingRule]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_forwarding_rule(project, region, forwarding_rule, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/forwardingRules/{forwardingRule}', options)
          command.response_representation = Google::Apis::ComputeV1::ForwardingRule::Representation
          command.response_class = Google::Apis::ComputeV1::ForwardingRule
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['forwardingRule'] = forwarding_rule unless forwarding_rule.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a ForwardingRule resource in the specified project and region using
        # the data included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [Google::Apis::ComputeV1::ForwardingRule] forwarding_rule_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_forwarding_rule(project, region, forwarding_rule_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/forwardingRules', options)
          command.request_representation = Google::Apis::ComputeV1::ForwardingRule::Representation
          command.request_object = forwarding_rule_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of ForwardingRule resources available to the specified
        # project and region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::ForwardingRuleList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::ForwardingRuleList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_forwarding_rules(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/forwardingRules', options)
          command.response_representation = Google::Apis::ComputeV1::ForwardingRuleList::Representation
          command.response_class = Google::Apis::ComputeV1::ForwardingRuleList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates the specified forwarding rule with the data included in the
        # request. This method supportsPATCH
        # semantics and uses theJSON merge
        # patch format and processing rules. Currently, you can only
        # patch the network_tier field.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] forwarding_rule
        #   Name of the ForwardingRule resource to patch.
        # @param [Google::Apis::ComputeV1::ForwardingRule] forwarding_rule_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_forwarding_rule(project, region, forwarding_rule, forwarding_rule_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/regions/{region}/forwardingRules/{forwardingRule}', options)
          command.request_representation = Google::Apis::ComputeV1::ForwardingRule::Representation
          command.request_object = forwarding_rule_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['forwardingRule'] = forwarding_rule unless forwarding_rule.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the labels on the specified resource. To learn more about labels,
        # read the
        # Labeling Resources documentation.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::RegionSetLabelsRequest] region_set_labels_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_forwarding_rule_labels(project, region, resource, region_set_labels_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/forwardingRules/{resource}/setLabels', options)
          command.request_representation = Google::Apis::ComputeV1::RegionSetLabelsRequest::Representation
          command.request_object = region_set_labels_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Changes target URL for forwarding rule. The new target should be of the
        # same type as the old target.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] forwarding_rule
        #   Name of the ForwardingRule resource in which target is to be set.
        # @param [Google::Apis::ComputeV1::TargetReference] target_reference_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_forwarding_rule_target(project, region, forwarding_rule, target_reference_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/forwardingRules/{forwardingRule}/setTarget', options)
          command.request_representation = Google::Apis::ComputeV1::TargetReference::Representation
          command.request_object = target_reference_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['forwardingRule'] = forwarding_rule unless forwarding_rule.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves an aggregated list of future reservations.
        # To prevent failure, it is recommended that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::FutureReservationsAggregatedListResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::FutureReservationsAggregatedListResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def aggregated_future_reservation_list(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/futureReservations', options)
          command.response_representation = Google::Apis::ComputeV1::FutureReservationsAggregatedListResponse::Representation
          command.response_class = Google::Apis::ComputeV1::FutureReservationsAggregatedListResponse
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Cancel the specified future reservation.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone for this request. Name should conform to RFC1035.
        # @param [String] future_reservation
        #   Name of the future reservation to retrieve. Name should conform to RFC1035.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def cancel_future_reservation(project, zone, future_reservation, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/futureReservations/{futureReservation}/cancel', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['futureReservation'] = future_reservation unless future_reservation.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified future reservation.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone for this request. Name should conform to RFC1035.
        # @param [String] future_reservation
        #   Name of the future reservation to retrieve. Name should conform to RFC1035.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_future_reservation(project, zone, future_reservation, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/zones/{zone}/futureReservations/{futureReservation}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['futureReservation'] = future_reservation unless future_reservation.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves information about the specified future reservation.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone for this request. Name should conform to RFC1035.
        # @param [String] future_reservation
        #   Name of the future reservation to retrieve. Name should conform to RFC1035.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::FutureReservation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::FutureReservation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_future_reservation(project, zone, future_reservation, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/futureReservations/{futureReservation}', options)
          command.response_representation = Google::Apis::ComputeV1::FutureReservation::Representation
          command.response_class = Google::Apis::ComputeV1::FutureReservation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['futureReservation'] = future_reservation unless future_reservation.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a new Future Reservation.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone for this request. Name should conform to RFC1035.
        # @param [Google::Apis::ComputeV1::FutureReservation] future_reservation_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_future_reservation(project, zone, future_reservation_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/futureReservations', options)
          command.request_representation = Google::Apis::ComputeV1::FutureReservation::Representation
          command.request_object = future_reservation_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # A list of all the future reservations that have been configured for the
        # specified project in specified zone.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone for this request. Name should conform to RFC1035.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::FutureReservationsListResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::FutureReservationsListResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_future_reservations(project, zone, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/futureReservations', options)
          command.response_representation = Google::Apis::ComputeV1::FutureReservationsListResponse::Representation
          command.response_class = Google::Apis::ComputeV1::FutureReservationsListResponse
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates the specified future reservation.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone for this request. Name should conform to RFC1035.
        # @param [String] future_reservation
        #   Name of the reservation to update. Name should conform to RFC1035.
        # @param [Google::Apis::ComputeV1::FutureReservation] future_reservation_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] update_mask
        #   update_mask indicates fields to be updated as part of this request.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def update_future_reservation(project, zone, future_reservation, future_reservation_object = nil, request_id: nil, update_mask: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/zones/{zone}/futureReservations/{futureReservation}', options)
          command.request_representation = Google::Apis::ComputeV1::FutureReservation::Representation
          command.request_object = future_reservation_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['futureReservation'] = future_reservation unless future_reservation.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['updateMask'] = update_mask unless update_mask.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified address resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] address
        #   Name of the address resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_global_address(project, address, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/global/addresses/{address}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['address'] = address unless address.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified address resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] address
        #   Name of the address resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Address] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Address]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_global_address(project, address, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/addresses/{address}', options)
          command.response_representation = Google::Apis::ComputeV1::Address::Representation
          command.response_class = Google::Apis::ComputeV1::Address
          command.params['project'] = project unless project.nil?
          command.params['address'] = address unless address.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates an address resource in the specified project by using the data
        # included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::Address] address_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_global_address(project, address_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/addresses', options)
          command.request_representation = Google::Apis::ComputeV1::Address::Representation
          command.request_object = address_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of global addresses.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::AddressList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::AddressList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_global_addresses(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/addresses', options)
          command.response_representation = Google::Apis::ComputeV1::AddressList::Representation
          command.response_class = Google::Apis::ComputeV1::AddressList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Moves the specified address resource from one project to another project.
        # @param [String] project
        #   Source project ID which the Address is moved from.
        # @param [String] address
        #   Name of the address resource to move.
        # @param [Google::Apis::ComputeV1::GlobalAddressesMoveRequest] global_addresses_move_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def move_global_address(project, address, global_addresses_move_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/addresses/{address}/move', options)
          command.request_representation = Google::Apis::ComputeV1::GlobalAddressesMoveRequest::Representation
          command.request_object = global_addresses_move_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['address'] = address unless address.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the labels on a GlobalAddress. To learn more about labels, read
        # theLabeling
        # Resources documentation.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::GlobalSetLabelsRequest] global_set_labels_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_global_address_labels(project, resource, global_set_labels_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/addresses/{resource}/setLabels', options)
          command.request_representation = Google::Apis::ComputeV1::GlobalSetLabelsRequest::Representation
          command.request_object = global_set_labels_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_global_address_iam_permissions(project, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/addresses/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified GlobalForwardingRule resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] forwarding_rule
        #   Name of the ForwardingRule resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_global_forwarding_rule(project, forwarding_rule, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/global/forwardingRules/{forwardingRule}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['forwardingRule'] = forwarding_rule unless forwarding_rule.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified GlobalForwardingRule resource. Gets a list of
        # available forwarding rules by making a list() request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] forwarding_rule
        #   Name of the ForwardingRule resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::ForwardingRule] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::ForwardingRule]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_global_forwarding_rule(project, forwarding_rule, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/forwardingRules/{forwardingRule}', options)
          command.response_representation = Google::Apis::ComputeV1::ForwardingRule::Representation
          command.response_class = Google::Apis::ComputeV1::ForwardingRule
          command.params['project'] = project unless project.nil?
          command.params['forwardingRule'] = forwarding_rule unless forwarding_rule.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a GlobalForwardingRule resource in the specified project using
        # the data included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::ForwardingRule] forwarding_rule_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_global_forwarding_rule(project, forwarding_rule_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/forwardingRules', options)
          command.request_representation = Google::Apis::ComputeV1::ForwardingRule::Representation
          command.request_object = forwarding_rule_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of GlobalForwardingRule resources available to the
        # specified project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::ForwardingRuleList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::ForwardingRuleList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_global_forwarding_rules(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/forwardingRules', options)
          command.response_representation = Google::Apis::ComputeV1::ForwardingRuleList::Representation
          command.response_class = Google::Apis::ComputeV1::ForwardingRuleList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates the specified forwarding rule with the data included in the
        # request. This method supportsPATCH
        # semantics and uses theJSON merge
        # patch format and processing rules. Currently, you can only
        # patch the network_tier field.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] forwarding_rule
        #   Name of the ForwardingRule resource to patch.
        # @param [Google::Apis::ComputeV1::ForwardingRule] forwarding_rule_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_global_forwarding_rule(project, forwarding_rule, forwarding_rule_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/global/forwardingRules/{forwardingRule}', options)
          command.request_representation = Google::Apis::ComputeV1::ForwardingRule::Representation
          command.request_object = forwarding_rule_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['forwardingRule'] = forwarding_rule unless forwarding_rule.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the labels on the specified resource. To learn more about labels,
        # read the
        # Labeling resources documentation.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::GlobalSetLabelsRequest] global_set_labels_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_global_forwarding_rule_labels(project, resource, global_set_labels_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/forwardingRules/{resource}/setLabels', options)
          command.request_representation = Google::Apis::ComputeV1::GlobalSetLabelsRequest::Representation
          command.request_object = global_set_labels_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Changes target URL for the GlobalForwardingRule resource. The new target
        # should be of the same type as the old target.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] forwarding_rule
        #   Name of the ForwardingRule resource in which target is to be set.
        # @param [Google::Apis::ComputeV1::TargetReference] target_reference_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_global_forwarding_rule_target(project, forwarding_rule, target_reference_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/forwardingRules/{forwardingRule}/setTarget', options)
          command.request_representation = Google::Apis::ComputeV1::TargetReference::Representation
          command.request_object = target_reference_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['forwardingRule'] = forwarding_rule unless forwarding_rule.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Attach a network endpoint to the specified network endpoint group.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] network_endpoint_group
        #   The name of the network endpoint group where you are attaching network
        #   endpoints to. It should comply with RFC1035.
        # @param [Google::Apis::ComputeV1::GlobalNetworkEndpointGroupsAttachEndpointsRequest] global_network_endpoint_groups_attach_endpoints_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def attach_global_network_endpoint_group_network_endpoints(project, network_endpoint_group, global_network_endpoint_groups_attach_endpoints_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/networkEndpointGroups/{networkEndpointGroup}/attachNetworkEndpoints', options)
          command.request_representation = Google::Apis::ComputeV1::GlobalNetworkEndpointGroupsAttachEndpointsRequest::Representation
          command.request_object = global_network_endpoint_groups_attach_endpoints_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['networkEndpointGroup'] = network_endpoint_group unless network_endpoint_group.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified network endpoint group.Note that the NEG cannot be
        # deleted if there are backend services referencing it.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] network_endpoint_group
        #   The name of the network endpoint group to delete. It should comply with
        #   RFC1035.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_global_network_endpoint_group(project, network_endpoint_group, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/global/networkEndpointGroups/{networkEndpointGroup}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['networkEndpointGroup'] = network_endpoint_group unless network_endpoint_group.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Detach the network endpoint from the specified network endpoint group.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] network_endpoint_group
        #   The name of the network endpoint group where you are removing network
        #   endpoints. It should comply with RFC1035.
        # @param [Google::Apis::ComputeV1::GlobalNetworkEndpointGroupsDetachEndpointsRequest] global_network_endpoint_groups_detach_endpoints_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def detach_global_network_endpoint_group_network_endpoints(project, network_endpoint_group, global_network_endpoint_groups_detach_endpoints_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/networkEndpointGroups/{networkEndpointGroup}/detachNetworkEndpoints', options)
          command.request_representation = Google::Apis::ComputeV1::GlobalNetworkEndpointGroupsDetachEndpointsRequest::Representation
          command.request_object = global_network_endpoint_groups_detach_endpoints_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['networkEndpointGroup'] = network_endpoint_group unless network_endpoint_group.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified network endpoint group.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] network_endpoint_group
        #   The name of the network endpoint group. It should comply with RFC1035.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::NetworkEndpointGroup] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::NetworkEndpointGroup]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_global_network_endpoint_group(project, network_endpoint_group, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/networkEndpointGroups/{networkEndpointGroup}', options)
          command.response_representation = Google::Apis::ComputeV1::NetworkEndpointGroup::Representation
          command.response_class = Google::Apis::ComputeV1::NetworkEndpointGroup
          command.params['project'] = project unless project.nil?
          command.params['networkEndpointGroup'] = network_endpoint_group unless network_endpoint_group.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a network endpoint group in the specified project using the
        # parameters that are included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::NetworkEndpointGroup] network_endpoint_group_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_global_network_endpoint_group(project, network_endpoint_group_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/networkEndpointGroups', options)
          command.request_representation = Google::Apis::ComputeV1::NetworkEndpointGroup::Representation
          command.request_object = network_endpoint_group_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of network endpoint groups that are located in the
        # specified project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::NetworkEndpointGroupList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::NetworkEndpointGroupList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_global_network_endpoint_groups(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/networkEndpointGroups', options)
          command.response_representation = Google::Apis::ComputeV1::NetworkEndpointGroupList::Representation
          command.response_class = Google::Apis::ComputeV1::NetworkEndpointGroupList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists the network endpoints in the specified network endpoint group.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] network_endpoint_group
        #   The name of the network endpoint group from which you want to generate a
        #   list of included network endpoints. It should comply with RFC1035.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::NetworkEndpointGroupsListNetworkEndpoints] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::NetworkEndpointGroupsListNetworkEndpoints]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_global_network_endpoint_group_network_endpoints(project, network_endpoint_group, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/networkEndpointGroups/{networkEndpointGroup}/listNetworkEndpoints', options)
          command.response_representation = Google::Apis::ComputeV1::NetworkEndpointGroupsListNetworkEndpoints::Representation
          command.response_class = Google::Apis::ComputeV1::NetworkEndpointGroupsListNetworkEndpoints
          command.params['project'] = project unless project.nil?
          command.params['networkEndpointGroup'] = network_endpoint_group unless network_endpoint_group.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves an aggregated list of all operations.
        # To prevent failure, Google recommends that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::OperationAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::OperationAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_aggregated_global_operation(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/operations', options)
          command.response_representation = Google::Apis::ComputeV1::OperationAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::OperationAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified Operations resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] operation
        #   Name of the Operations resource to delete, or its unique numeric
        #   identifier.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [NilClass] No result returned for this method
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [void]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_global_operation(project, operation, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/global/operations/{operation}', options)
          command.params['project'] = project unless project.nil?
          command.params['operation'] = operation unless operation.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the specified Operations resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] operation
        #   Name of the Operations resource to return, or its unique numeric
        #   identifier.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_global_operation(project, operation, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/operations/{operation}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['operation'] = operation unless operation.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of Operation resources contained within the specified
        # project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::OperationList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::OperationList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_global_operations(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/operations', options)
          command.response_representation = Google::Apis::ComputeV1::OperationList::Representation
          command.response_class = Google::Apis::ComputeV1::OperationList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Waits for the specified Operation resource to return as `DONE`
        # or for the request to approach the 2 minute deadline, and retrieves the
        # specified Operation resource. This method differs from the
        # `GET` method in that it waits for no more than the default
        # deadline (2 minutes) and then returns the current state of the operation,
        # which might be `DONE` or still in progress.
        # This method is called on a best-effort basis. Specifically:
        # 
        # 
        # - In uncommon cases, when the server is overloaded, the request might
        # return before the default deadline is reached, or might return after zero
        # seconds.
        # - If the default deadline is reached, there is no guarantee that the
        # operation is actually done when the method returns. Be prepared to retry
        # if the operation is not `DONE`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] operation
        #   Name of the Operations resource to return, or its unique numeric
        #   identifier.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def wait_global_operation(project, operation, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/operations/{operation}/wait', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['operation'] = operation unless operation.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified Operations resource.
        # @param [String] operation
        #   Name of the Operations resource to delete, or its unique numeric
        #   identifier.
        # @param [String] parent_id
        #   Parent ID for this request.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [NilClass] No result returned for this method
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [void]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_global_organization_operation(operation, parent_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'locations/global/operations/{operation}', options)
          command.params['operation'] = operation unless operation.nil?
          command.query['parentId'] = parent_id unless parent_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the specified Operations resource. Gets a list of operations
        # by making a `list()` request.
        # @param [String] operation
        #   Name of the Operations resource to return. Parent is derived from this
        #   field.
        # @param [String] parent_id
        #   Parent ID for this request. Not used. Parent is derived from resource_id.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_global_organization_operation(operation, parent_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'locations/global/operations/{operation}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['operation'] = operation unless operation.nil?
          command.query['parentId'] = parent_id unless parent_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of Operation resources contained within the specified
        # organization.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [String] parent_id
        #   Parent ID for this request.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::OperationList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::OperationList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_global_organization_operations(filter: nil, max_results: nil, order_by: nil, page_token: nil, parent_id: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'locations/global/operations', options)
          command.response_representation = Google::Apis::ComputeV1::OperationList::Representation
          command.response_class = Google::Apis::ComputeV1::OperationList
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['parentId'] = parent_id unless parent_id.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified global PublicDelegatedPrefix.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] public_delegated_prefix
        #   Name of the PublicDelegatedPrefix resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_global_public_delegated_prefix(project, public_delegated_prefix, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/global/publicDelegatedPrefixes/{publicDelegatedPrefix}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['publicDelegatedPrefix'] = public_delegated_prefix unless public_delegated_prefix.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified global PublicDelegatedPrefix resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] public_delegated_prefix
        #   Name of the PublicDelegatedPrefix resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::PublicDelegatedPrefix] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::PublicDelegatedPrefix]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_global_public_delegated_prefix(project, public_delegated_prefix, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/publicDelegatedPrefixes/{publicDelegatedPrefix}', options)
          command.response_representation = Google::Apis::ComputeV1::PublicDelegatedPrefix::Representation
          command.response_class = Google::Apis::ComputeV1::PublicDelegatedPrefix
          command.params['project'] = project unless project.nil?
          command.params['publicDelegatedPrefix'] = public_delegated_prefix unless public_delegated_prefix.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a global PublicDelegatedPrefix in the specified project using the
        # parameters that are included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::PublicDelegatedPrefix] public_delegated_prefix_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_global_public_delegated_prefix(project, public_delegated_prefix_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/publicDelegatedPrefixes', options)
          command.request_representation = Google::Apis::ComputeV1::PublicDelegatedPrefix::Representation
          command.request_object = public_delegated_prefix_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists the global PublicDelegatedPrefixes for a project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::PublicDelegatedPrefixList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::PublicDelegatedPrefixList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_global_public_delegated_prefixes(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/publicDelegatedPrefixes', options)
          command.response_representation = Google::Apis::ComputeV1::PublicDelegatedPrefixList::Representation
          command.response_class = Google::Apis::ComputeV1::PublicDelegatedPrefixList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches the specified global PublicDelegatedPrefix resource with the data
        # included in the request. This method supportsPATCH
        # semantics and usesJSON merge
        # patch format and processing rules.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] public_delegated_prefix
        #   Name of the PublicDelegatedPrefix resource to patch.
        # @param [Google::Apis::ComputeV1::PublicDelegatedPrefix] public_delegated_prefix_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_global_public_delegated_prefix(project, public_delegated_prefix, public_delegated_prefix_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/global/publicDelegatedPrefixes/{publicDelegatedPrefix}', options)
          command.request_representation = Google::Apis::ComputeV1::PublicDelegatedPrefix::Representation
          command.request_object = public_delegated_prefix_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['publicDelegatedPrefix'] = public_delegated_prefix unless public_delegated_prefix.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of all HealthCheck resources, regional and global,
        # available to the specified project.
        # To prevent failure, Google recommends that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Name of the project scoping this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::HealthChecksAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::HealthChecksAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def aggregated_health_check_list(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/healthChecks', options)
          command.response_representation = Google::Apis::ComputeV1::HealthChecksAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::HealthChecksAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified HealthCheck resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] health_check
        #   Name of the HealthCheck resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_health_check(project, health_check, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/global/healthChecks/{healthCheck}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['healthCheck'] = health_check unless health_check.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified HealthCheck resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] health_check
        #   Name of the HealthCheck resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::HealthCheck] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::HealthCheck]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_health_check(project, health_check, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/healthChecks/{healthCheck}', options)
          command.response_representation = Google::Apis::ComputeV1::HealthCheck::Representation
          command.response_class = Google::Apis::ComputeV1::HealthCheck
          command.params['project'] = project unless project.nil?
          command.params['healthCheck'] = health_check unless health_check.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a HealthCheck resource in the specified project using the data
        # included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::HealthCheck] health_check_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_health_check(project, health_check_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/healthChecks', options)
          command.request_representation = Google::Apis::ComputeV1::HealthCheck::Representation
          command.request_object = health_check_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of HealthCheck resources available to the specified
        # project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::HealthCheckList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::HealthCheckList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_health_checks(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/healthChecks', options)
          command.response_representation = Google::Apis::ComputeV1::HealthCheckList::Representation
          command.response_class = Google::Apis::ComputeV1::HealthCheckList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates a HealthCheck resource in the specified project using the data
        # included in the request. This method supportsPATCH
        # semantics and uses theJSON merge
        # patch format and processing rules.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] health_check
        #   Name of the HealthCheck resource to patch.
        # @param [Google::Apis::ComputeV1::HealthCheck] health_check_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_health_check(project, health_check, health_check_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/global/healthChecks/{healthCheck}', options)
          command.request_representation = Google::Apis::ComputeV1::HealthCheck::Representation
          command.request_object = health_check_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['healthCheck'] = health_check unless health_check.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_health_check_iam_permissions(project, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/healthChecks/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates a HealthCheck resource in the specified project using the data
        # included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] health_check
        #   Name of the HealthCheck resource to update.
        # @param [Google::Apis::ComputeV1::HealthCheck] health_check_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def update_health_check(project, health_check, health_check_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:put, 'projects/{project}/global/healthChecks/{healthCheck}', options)
          command.request_representation = Google::Apis::ComputeV1::HealthCheck::Representation
          command.request_object = health_check_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['healthCheck'] = health_check unless health_check.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified HttpHealthCheck resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] http_health_check
        #   Name of the HttpHealthCheck resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_http_health_check(project, http_health_check, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/global/httpHealthChecks/{httpHealthCheck}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['httpHealthCheck'] = http_health_check unless http_health_check.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified HttpHealthCheck resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] http_health_check
        #   Name of the HttpHealthCheck resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::HttpHealthCheck] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::HttpHealthCheck]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_http_health_check(project, http_health_check, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/httpHealthChecks/{httpHealthCheck}', options)
          command.response_representation = Google::Apis::ComputeV1::HttpHealthCheck::Representation
          command.response_class = Google::Apis::ComputeV1::HttpHealthCheck
          command.params['project'] = project unless project.nil?
          command.params['httpHealthCheck'] = http_health_check unless http_health_check.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a HttpHealthCheck resource in the specified project using the data
        # included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::HttpHealthCheck] http_health_check_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_http_health_check(project, http_health_check_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/httpHealthChecks', options)
          command.request_representation = Google::Apis::ComputeV1::HttpHealthCheck::Representation
          command.request_object = http_health_check_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of HttpHealthCheck resources available to the specified
        # project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::HttpHealthCheckList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::HttpHealthCheckList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_http_health_checks(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/httpHealthChecks', options)
          command.response_representation = Google::Apis::ComputeV1::HttpHealthCheckList::Representation
          command.response_class = Google::Apis::ComputeV1::HttpHealthCheckList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates a HttpHealthCheck resource in the specified project using the data
        # included in the request. This method supportsPATCH
        # semantics and uses theJSON merge
        # patch format and processing rules.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] http_health_check
        #   Name of the HttpHealthCheck resource to patch.
        # @param [Google::Apis::ComputeV1::HttpHealthCheck] http_health_check_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_http_health_check(project, http_health_check, http_health_check_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/global/httpHealthChecks/{httpHealthCheck}', options)
          command.request_representation = Google::Apis::ComputeV1::HttpHealthCheck::Representation
          command.request_object = http_health_check_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['httpHealthCheck'] = http_health_check unless http_health_check.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_http_health_check_iam_permissions(project, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/httpHealthChecks/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates a HttpHealthCheck resource in the specified project using the data
        # included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] http_health_check
        #   Name of the HttpHealthCheck resource to update.
        # @param [Google::Apis::ComputeV1::HttpHealthCheck] http_health_check_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def update_http_health_check(project, http_health_check, http_health_check_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:put, 'projects/{project}/global/httpHealthChecks/{httpHealthCheck}', options)
          command.request_representation = Google::Apis::ComputeV1::HttpHealthCheck::Representation
          command.request_object = http_health_check_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['httpHealthCheck'] = http_health_check unless http_health_check.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified HttpsHealthCheck resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] https_health_check
        #   Name of the HttpsHealthCheck resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_https_health_check(project, https_health_check, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/global/httpsHealthChecks/{httpsHealthCheck}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['httpsHealthCheck'] = https_health_check unless https_health_check.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified HttpsHealthCheck resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] https_health_check
        #   Name of the HttpsHealthCheck resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::HttpsHealthCheck] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::HttpsHealthCheck]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_https_health_check(project, https_health_check, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/httpsHealthChecks/{httpsHealthCheck}', options)
          command.response_representation = Google::Apis::ComputeV1::HttpsHealthCheck::Representation
          command.response_class = Google::Apis::ComputeV1::HttpsHealthCheck
          command.params['project'] = project unless project.nil?
          command.params['httpsHealthCheck'] = https_health_check unless https_health_check.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a HttpsHealthCheck resource in the specified project using the data
        # included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::HttpsHealthCheck] https_health_check_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_https_health_check(project, https_health_check_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/httpsHealthChecks', options)
          command.request_representation = Google::Apis::ComputeV1::HttpsHealthCheck::Representation
          command.request_object = https_health_check_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of HttpsHealthCheck resources available to the specified
        # project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::HttpsHealthCheckList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::HttpsHealthCheckList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_https_health_checks(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/httpsHealthChecks', options)
          command.response_representation = Google::Apis::ComputeV1::HttpsHealthCheckList::Representation
          command.response_class = Google::Apis::ComputeV1::HttpsHealthCheckList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates a HttpsHealthCheck resource in the specified project using the data
        # included in the request. This method supportsPATCH
        # semantics and uses theJSON merge
        # patch format and processing rules.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] https_health_check
        #   Name of the HttpsHealthCheck resource to patch.
        # @param [Google::Apis::ComputeV1::HttpsHealthCheck] https_health_check_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_https_health_check(project, https_health_check, https_health_check_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/global/httpsHealthChecks/{httpsHealthCheck}', options)
          command.request_representation = Google::Apis::ComputeV1::HttpsHealthCheck::Representation
          command.request_object = https_health_check_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['httpsHealthCheck'] = https_health_check unless https_health_check.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_https_health_check_iam_permissions(project, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/httpsHealthChecks/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates a HttpsHealthCheck resource in the specified project using the data
        # included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] https_health_check
        #   Name of the HttpsHealthCheck resource to update.
        # @param [Google::Apis::ComputeV1::HttpsHealthCheck] https_health_check_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def update_https_health_check(project, https_health_check, https_health_check_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:put, 'projects/{project}/global/httpsHealthChecks/{httpsHealthCheck}', options)
          command.request_representation = Google::Apis::ComputeV1::HttpsHealthCheck::Representation
          command.request_object = https_health_check_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['httpsHealthCheck'] = https_health_check unless https_health_check.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the latest image that is part of an image family, is not
        # deprecated and is rolled out in the specified zone.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] family
        #   Name of the image family to search for.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::ImageFamilyView] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::ImageFamilyView]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_image_family_view(project, zone, family, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/imageFamilyViews/{family}', options)
          command.response_representation = Google::Apis::ComputeV1::ImageFamilyView::Representation
          command.response_class = Google::Apis::ComputeV1::ImageFamilyView
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['family'] = family unless family.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified image.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] image
        #   Name of the image resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_image(project, image, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/global/images/{image}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['image'] = image unless image.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the deprecation status of an image.
        # If an empty request body is given, clears the deprecation status instead.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] image
        #   Image name.
        # @param [Google::Apis::ComputeV1::DeprecationStatus] deprecation_status_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def deprecate_image(project, image, deprecation_status_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/images/{image}/deprecate', options)
          command.request_representation = Google::Apis::ComputeV1::DeprecationStatus::Representation
          command.request_object = deprecation_status_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['image'] = image unless image.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified image.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] image
        #   Name of the image resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Image] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Image]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_image(project, image, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/images/{image}', options)
          command.response_representation = Google::Apis::ComputeV1::Image::Representation
          command.response_class = Google::Apis::ComputeV1::Image
          command.params['project'] = project unless project.nil?
          command.params['image'] = image unless image.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the latest image that is part of an image family and is not
        # deprecated. For more information on image families, seePublic
        # image families documentation.
        # @param [String] project
        #   The image project that the image belongs to. For example, to get a CentOS
        #   image, specify centos-cloud as the image project.
        # @param [String] family
        #   Name of the image family to search for.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Image] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Image]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_image_from_family(project, family, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/images/family/{family}', options)
          command.response_representation = Google::Apis::ComputeV1::Image::Representation
          command.response_class = Google::Apis::ComputeV1::Image
          command.params['project'] = project unless project.nil?
          command.params['family'] = family unless family.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets the access control policy for a resource. May be empty if no such
        # policy or resource exists.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Fixnum] options_requested_policy_version
        #   Requested IAM Policy version.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_image_iam_policy(project, resource, options_requested_policy_version: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/images/{resource}/getIamPolicy', options)
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['optionsRequestedPolicyVersion'] = options_requested_policy_version unless options_requested_policy_version.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates an image in the specified project using the data included
        # in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::Image] image_object
        # @param [Boolean] force_create
        #   Force image creation if true.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_image(project, image_object = nil, force_create: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/images', options)
          command.request_representation = Google::Apis::ComputeV1::Image::Representation
          command.request_object = image_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['forceCreate'] = force_create unless force_create.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of custom images
        # available to the specified project. Custom images are images you
        # create that belong to your project. This method does not
        # get any images that belong to other projects, including publicly-available
        # images, like Debian 8. If you want to get a list of publicly-available
        # images, use this method to make a request to the respective image project,
        # such as debian-cloud or windows-cloud.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::ImageList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::ImageList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_images(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/images', options)
          command.response_representation = Google::Apis::ComputeV1::ImageList::Representation
          command.response_class = Google::Apis::ComputeV1::ImageList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches the specified image with the data included in the request.
        # Only the following fields can be modified: family, description,
        # deprecation status.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] image
        #   Name of the image resource to patch.
        # @param [Google::Apis::ComputeV1::Image] image_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_image(project, image, image_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/global/images/{image}', options)
          command.request_representation = Google::Apis::ComputeV1::Image::Representation
          command.request_object = image_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['image'] = image unless image.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the access control policy on the specified resource.
        # Replaces any existing policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::GlobalSetPolicyRequest] global_set_policy_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_image_iam_policy(project, resource, global_set_policy_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/images/{resource}/setIamPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::GlobalSetPolicyRequest::Representation
          command.request_object = global_set_policy_request_object
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the labels on an image. To learn more about labels, read theLabeling
        # Resources documentation.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::GlobalSetLabelsRequest] global_set_labels_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_image_labels(project, resource, global_set_labels_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/images/{resource}/setLabels', options)
          command.request_representation = Google::Apis::ComputeV1::GlobalSetLabelsRequest::Representation
          command.request_object = global_set_labels_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_image_iam_permissions(project, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/images/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Cancels the specified resize request and removes it from the queue.
        # Cancelled resize request does no longer wait for the resources to be
        # provisioned. Cancel is only possible for requests that are accepted in the
        # queue.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of thezone where the managed
        #   instance group is located. The name should conform to RFC1035.
        # @param [String] instance_group_manager
        #   The name of the managed instance group.
        #   The name should conform to RFC1035 or be a resource ID.
        # @param [String] resize_request
        #   The name of the resize request to cancel.
        #   The name should conform to RFC1035 or be a resource ID.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def cancel_instance_group_manager_resize_request(project, zone, instance_group_manager, resize_request, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/resizeRequests/{resizeRequest}/cancel', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.params['resizeRequest'] = resize_request unless resize_request.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified, inactive resize request. Requests that are still
        # active cannot be deleted. Deleting request does not delete instances that
        # were provisioned previously.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of thezone where the managed
        #   instance group is located. The name should conform to RFC1035.
        # @param [String] instance_group_manager
        #   The name of the managed instance group.
        #   The name should conform to RFC1035 or be a resource ID.
        # @param [String] resize_request
        #   The name of the resize request to delete.
        #   The name should conform to RFC1035 or be a resource ID.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_instance_group_manager_resize_request(project, zone, instance_group_manager, resize_request, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/resizeRequests/{resizeRequest}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.params['resizeRequest'] = resize_request unless resize_request.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns all of the details about the specified resize request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the href="/compute/docs/regions-zones/#available">zone
        #   scoping this request. Name should conform to RFC1035.
        # @param [String] instance_group_manager
        #   The name of the managed instance group.
        #   Name should conform to RFC1035 or be a resource ID.
        # @param [String] resize_request
        #   The name of the resize request.
        #   Name should conform to RFC1035 or be a resource ID.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InstanceGroupManagerResizeRequest] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InstanceGroupManagerResizeRequest]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_instance_group_manager_resize_request(project, zone, instance_group_manager, resize_request, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/resizeRequests/{resizeRequest}', options)
          command.response_representation = Google::Apis::ComputeV1::InstanceGroupManagerResizeRequest::Representation
          command.response_class = Google::Apis::ComputeV1::InstanceGroupManagerResizeRequest
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.params['resizeRequest'] = resize_request unless resize_request.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a new resize request that starts provisioning VMs immediately
        # or queues VM creation.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of thezone where the managed
        #   instance group is located and where the resize request will be created.
        #   Name should conform to RFC1035.
        # @param [String] instance_group_manager
        #   The name of the managed instance group to which the resize request will
        #   be added.
        #   Name should conform to RFC1035 or be a resource ID.
        # @param [Google::Apis::ComputeV1::InstanceGroupManagerResizeRequest] instance_group_manager_resize_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_instance_group_manager_resize_request(project, zone, instance_group_manager, instance_group_manager_resize_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/resizeRequests', options)
          command.request_representation = Google::Apis::ComputeV1::InstanceGroupManagerResizeRequest::Representation
          command.request_object = instance_group_manager_resize_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of resize requests that are contained in the
        # managed instance group.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of thezone where the managed
        #   instance group is located. The name should conform to RFC1035.
        # @param [String] instance_group_manager
        #   The name of the managed instance group. The name should conform to RFC1035.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InstanceGroupManagerResizeRequestsListResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InstanceGroupManagerResizeRequestsListResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_instance_group_manager_resize_requests(project, zone, instance_group_manager, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/resizeRequests', options)
          command.response_representation = Google::Apis::ComputeV1::InstanceGroupManagerResizeRequestsListResponse::Representation
          command.response_class = Google::Apis::ComputeV1::InstanceGroupManagerResizeRequestsListResponse
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Flags the specified instances to be removed from the
        # managed instance group. Abandoning an instance does not delete the
        # instance, but it does remove the instance from any target pools that are
        # applied by the managed instance group. This method reduces thetargetSize of
        # the managed instance group by the
        # number of instances that you abandon. This operation is marked asDONE when the
        # action is scheduled even if the instances have
        # not yet been removed from the group. You must separately verify the
        # status of the abandoning action with thelistmanagedinstances
        # method.
        # If the group is part of a backend
        # service that has enabled
        # connection draining, it can take up to 60 seconds after the connection
        # draining duration has elapsed before the VM instance is removed or deleted.
        # You can specify a maximum of 1000 instances with this method per request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of thezone where the managed
        #   instance group is located.
        # @param [String] instance_group_manager
        #   The name of the managed instance group.
        # @param [Google::Apis::ComputeV1::InstanceGroupManagersAbandonInstancesRequest] instance_group_managers_abandon_instances_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def abandon_instance_group_manager_instances(project, zone, instance_group_manager, instance_group_managers_abandon_instances_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/abandonInstances', options)
          command.request_representation = Google::Apis::ComputeV1::InstanceGroupManagersAbandonInstancesRequest::Representation
          command.request_object = instance_group_managers_abandon_instances_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of managed instance groups and groups them by zone.
        # To prevent failure, Google recommends that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InstanceGroupManagerAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InstanceGroupManagerAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_aggregated_instance_group_managers(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/instanceGroupManagers', options)
          command.response_representation = Google::Apis::ComputeV1::InstanceGroupManagerAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::InstanceGroupManagerAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Applies changes to selected instances on the managed instance group.
        # This method can be used to apply new overrides and/or new versions.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of thezone
        #   where the managed instance group is located. Should conform to RFC1035.
        # @param [String] instance_group_manager
        #   The name of the managed instance group, should conform to RFC1035.
        # @param [Google::Apis::ComputeV1::InstanceGroupManagersApplyUpdatesRequest] instance_group_managers_apply_updates_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def apply_instance_group_manager_updates_to_instances(project, zone, instance_group_manager, instance_group_managers_apply_updates_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/applyUpdatesToInstances', options)
          command.request_representation = Google::Apis::ComputeV1::InstanceGroupManagersApplyUpdatesRequest::Representation
          command.request_object = instance_group_managers_apply_updates_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates instances with per-instance configurations in this managed instance
        # group. Instances are created using the current instance template. Thecreate
        # instances operation is marked DONE if thecreateInstances request is successful.
        # The underlying actions
        # take additional time. You must separately verify the status of thecreating or
        # actions with the listmanagedinstances
        # method.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of thezone
        #   where the managed instance group is located.
        #   It should conform to RFC1035.
        # @param [String] instance_group_manager
        #   The name of the managed instance group.
        #   It should conform to RFC1035.
        # @param [Google::Apis::ComputeV1::InstanceGroupManagersCreateInstancesRequest] instance_group_managers_create_instances_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def create_instance_group_manager_instances(project, zone, instance_group_manager, instance_group_managers_create_instances_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/createInstances', options)
          command.request_representation = Google::Apis::ComputeV1::InstanceGroupManagersCreateInstancesRequest::Representation
          command.request_object = instance_group_managers_create_instances_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified managed instance group and all of the instances
        # in that group. Note that the instance group must not belong to a
        # backend service. Read
        # Deleting an instance group for more information.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of thezone where the managed
        #   instance group is located.
        # @param [String] instance_group_manager
        #   The name of the managed instance group to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_instance_group_manager(project, zone, instance_group_manager, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Flags the specified instances in the managed instance group for immediate
        # deletion. The instances are also removed from any target
        # pools of which they were a member. This method reduces thetargetSize of the
        # managed instance group by the number of
        # instances that you delete. This operation is marked as DONE
        # when the action is scheduled even if the instances are still being deleted.
        # You must separately verify the status of the deleting action
        # with thelistmanagedinstances
        # method.
        # If the group is part of a backend
        # service that has enabled
        # connection draining, it can take up to 60 seconds after the connection
        # draining duration has elapsed before the VM instance is removed or deleted.
        # You can specify a maximum of 1000 instances with this method per request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of thezone where the managed
        #   instance group is located.
        # @param [String] instance_group_manager
        #   The name of the managed instance group.
        # @param [Google::Apis::ComputeV1::InstanceGroupManagersDeleteInstancesRequest] instance_group_managers_delete_instances_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_instance_group_manager_instances(project, zone, instance_group_manager, instance_group_managers_delete_instances_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/deleteInstances', options)
          command.request_representation = Google::Apis::ComputeV1::InstanceGroupManagersDeleteInstancesRequest::Representation
          command.request_object = instance_group_managers_delete_instances_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes selected per-instance configurations for the managed instance
        # group.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of thezone
        #   where the managed instance
        #   group is located.
        #   It should conform to RFC1035.
        # @param [String] instance_group_manager
        #   The name of the managed instance group.
        #   It should conform to RFC1035.
        # @param [Google::Apis::ComputeV1::InstanceGroupManagersDeletePerInstanceConfigsReq] instance_group_managers_delete_per_instance_configs_req_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_instance_group_manager_per_instance_configs(project, zone, instance_group_manager, instance_group_managers_delete_per_instance_configs_req_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/deletePerInstanceConfigs', options)
          command.request_representation = Google::Apis::ComputeV1::InstanceGroupManagersDeletePerInstanceConfigsReq::Representation
          command.request_object = instance_group_managers_delete_per_instance_configs_req_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns all of the details about the specified managed instance group.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of thezone where the managed
        #   instance group is located.
        # @param [String] instance_group_manager
        #   The name of the managed instance group.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InstanceGroupManager] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InstanceGroupManager]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_instance_group_manager(project, zone, instance_group_manager, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}', options)
          command.response_representation = Google::Apis::ComputeV1::InstanceGroupManager::Representation
          command.response_class = Google::Apis::ComputeV1::InstanceGroupManager
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a managed instance group using the information that you specify
        # in the request. After the group is created, instances in the group are
        # created using the specified instance template.
        # This operation is marked as DONE when the group is created
        # even if the instances in the group have not yet been created. You
        # must separately verify the status of the individual instances with
        # thelistmanagedinstances
        # method.
        # A managed instance group can have up to 1000 VM instances per group. Please
        # contact Cloud Support if you need an increase in
        # this limit.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone
        #   where you want to create the managed instance group.
        # @param [Google::Apis::ComputeV1::InstanceGroupManager] instance_group_manager_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_instance_group_manager(project, zone, instance_group_manager_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instanceGroupManagers', options)
          command.request_representation = Google::Apis::ComputeV1::InstanceGroupManager::Representation
          command.request_object = instance_group_manager_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of managed instance groups that are contained within the
        # specified project and zone.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of thezone where the managed
        #   instance group is located.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InstanceGroupManagerList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InstanceGroupManagerList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_instance_group_managers(project, zone, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/instanceGroupManagers', options)
          command.response_representation = Google::Apis::ComputeV1::InstanceGroupManagerList::Representation
          command.response_class = Google::Apis::ComputeV1::InstanceGroupManagerList
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists all errors thrown by actions on instances for a given managed
        # instance group. The filter and orderBy query
        # parameters are not supported.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of thezone where the managed
        #   instance group is located.
        #   It should conform to RFC1035.
        # @param [String] instance_group_manager
        #   The name of the managed instance group.
        #   It must be a string that meets the requirements in RFC1035, or an
        #   unsigned long integer: must match regexp pattern:
        #   (?:[a-z](?:[-a-z0-9]`0,61`[a-z0-9])?)|1-9`0,19`.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InstanceGroupManagersListErrorsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InstanceGroupManagersListErrorsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_instance_group_manager_errors(project, zone, instance_group_manager, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/listErrors', options)
          command.response_representation = Google::Apis::ComputeV1::InstanceGroupManagersListErrorsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::InstanceGroupManagersListErrorsResponse
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists all of the instances in the managed instance group. Each instance
        # in the list has a currentAction, which indicates the action
        # that the managed instance group is performing on the instance. For example,
        # if the group is still creating an instance, the currentAction
        # is CREATING. If a previous action failed, the
        # list displays the errors for that failed action. The orderBy
        # query parameter is not supported. The `pageToken` query parameter is
        # supported only if the group's `listManagedInstancesResults` field is set
        # to `PAGINATED`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of thezone where the managed
        #   instance group is located.
        # @param [String] instance_group_manager
        #   The name of the managed instance group.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InstanceGroupManagersListManagedInstancesResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InstanceGroupManagersListManagedInstancesResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_instance_group_manager_managed_instances(project, zone, instance_group_manager, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/listManagedInstances', options)
          command.response_representation = Google::Apis::ComputeV1::InstanceGroupManagersListManagedInstancesResponse::Representation
          command.response_class = Google::Apis::ComputeV1::InstanceGroupManagersListManagedInstancesResponse
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists all of the per-instance configurations defined for the managed
        # instance group. The orderBy query parameter is not supported.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of thezone
        #   where the managed instance group is located.
        #   It should conform to RFC1035.
        # @param [String] instance_group_manager
        #   The name of the managed instance group. It should conform to RFC1035.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InstanceGroupManagersListPerInstanceConfigsResp] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InstanceGroupManagersListPerInstanceConfigsResp]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_instance_group_manager_per_instance_configs(project, zone, instance_group_manager, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/listPerInstanceConfigs', options)
          command.response_representation = Google::Apis::ComputeV1::InstanceGroupManagersListPerInstanceConfigsResp::Representation
          command.response_class = Google::Apis::ComputeV1::InstanceGroupManagersListPerInstanceConfigsResp
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates a managed instance group using the information that you specify
        # in the request.
        # This operation is marked as DONE when the group is patched
        # even if the instances in the group are still in the process of being
        # patched. You must separately verify the status of the individual instances
        # with thelistManagedInstances
        # method. This method supportsPATCH
        # semantics and uses theJSON merge
        # patch format and processing rules.
        # If you update your group to specify a new template or instance
        # configuration, it's possible that your intended specification for each VM
        # in the group is different from the current state of that VM. To learn how
        # to apply an updated configuration to the VMs in a MIG, seeUpdating instances
        # in
        # a MIG.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone where
        #   you want to create the managed instance group.
        # @param [String] instance_group_manager
        #   The name of the instance group manager.
        # @param [Google::Apis::ComputeV1::InstanceGroupManager] instance_group_manager_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_instance_group_manager(project, zone, instance_group_manager, instance_group_manager_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}', options)
          command.request_representation = Google::Apis::ComputeV1::InstanceGroupManager::Representation
          command.request_object = instance_group_manager_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Inserts or patches per-instance configurations for the managed instance
        # group. perInstanceConfig.name serves as a key used to
        # distinguish whether to perform insert or patch.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of thezone
        #   where the managed instance group is located.
        #   It should conform to RFC1035.
        # @param [String] instance_group_manager
        #   The name of the managed instance group.
        #   It should conform to RFC1035.
        # @param [Google::Apis::ComputeV1::InstanceGroupManagersPatchPerInstanceConfigsReq] instance_group_managers_patch_per_instance_configs_req_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_instance_group_manager_per_instance_configs(project, zone, instance_group_manager, instance_group_managers_patch_per_instance_configs_req_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/patchPerInstanceConfigs', options)
          command.request_representation = Google::Apis::ComputeV1::InstanceGroupManagersPatchPerInstanceConfigsReq::Representation
          command.request_object = instance_group_managers_patch_per_instance_configs_req_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Flags the specified VM instances in the managed instance group to be
        # immediately recreated. Each instance is recreated using the group's current
        # configuration. This operation is marked as DONE when the flag
        # is set even if the instances have not yet been recreated. You must
        # separately verify the status of each instance by checking itscurrentAction
        # field; for more information, see Checking
        # the status of managed instances.
        # If the group is part of a backend
        # service that has enabled
        # connection draining, it can take up to 60 seconds after the connection
        # draining duration has elapsed before the VM instance is removed or deleted.
        # You can specify a maximum of 1000 instances with this method per request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of thezone where the managed
        #   instance group is located.
        # @param [String] instance_group_manager
        #   The name of the managed instance group.
        # @param [Google::Apis::ComputeV1::InstanceGroupManagersRecreateInstancesRequest] instance_group_managers_recreate_instances_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def recreate_instance_group_manager_instances(project, zone, instance_group_manager, instance_group_managers_recreate_instances_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/recreateInstances', options)
          command.request_representation = Google::Apis::ComputeV1::InstanceGroupManagersRecreateInstancesRequest::Representation
          command.request_object = instance_group_managers_recreate_instances_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Resizes the managed instance group. If you increase the size, the group
        # creates new instances using the current instance template. If you decrease
        # the size, the group deletes instances. The resize operation is markedDONE when
        # the resize actions are scheduled even if the group
        # has not yet added or deleted any instances. You must separately
        # verify the status of the creating or deleting
        # actions with thelistmanagedinstances
        # method.
        # When resizing down, the instance group arbitrarily chooses the order in
        # which VMs are deleted. The group takes into account some VM attributes when
        # making the selection including:
        # + The status of the VM instance.
        # + The health of the VM instance.
        # + The instance template version the VM is based on.
        # + For regional managed instance groups, the location of the VM instance.
        # This list is subject to change.
        # If the group is part of a backend
        # service that has enabled
        # connection draining, it can take up to 60 seconds after the connection
        # draining duration has elapsed before the VM instance is removed or deleted.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of thezone where the managed
        #   instance group is located.
        # @param [String] instance_group_manager
        #   The name of the managed instance group.
        # @param [Fixnum] size
        #   The number of running instances that the managed instance group should
        #   maintain at any given time. The group automatically adds or removes
        #   instances to maintain the number of instances specified by this parameter.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def resize_instance_group_manager(project, zone, instance_group_manager, size, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/resize', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['size'] = size unless size.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Flags the specified instances in the managed instance group to be
        # resumed. This method increases thetargetSize and decreases the
        # targetSuspendedSize
        # of the managed instance group by the number of instances that you resume.
        # The resumeInstances operation is marked DONE if
        # the resumeInstances request is successful. The underlying
        # actions take additional time. You must separately verify the status of
        # theRESUMING action with thelistmanagedinstances
        # method.
        # In this request, you can only specify instances that are suspended. For
        # example, if an instance was previously suspended using the suspendInstances
        # method, it can be resumed using the resumeInstances method.
        # If a health check is attached to the managed instance group, the specified
        # instances will be verified as healthy after they are resumed.
        # You can specify a maximum of 1000 instances with this method per request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of thezone where the managed
        #   instance group is located.
        # @param [String] instance_group_manager
        #   The name of the managed instance group.
        # @param [Google::Apis::ComputeV1::InstanceGroupManagersResumeInstancesRequest] instance_group_managers_resume_instances_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def resume_instance_group_manager_instances(project, zone, instance_group_manager, instance_group_managers_resume_instances_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/resumeInstances', options)
          command.request_representation = Google::Apis::ComputeV1::InstanceGroupManagersResumeInstancesRequest::Representation
          command.request_object = instance_group_managers_resume_instances_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Specifies the instance template to use when creating new instances in this
        # group. The templates for existing instances in the group do not change
        # unless you run recreateInstances, runapplyUpdatesToInstances, or set the group'
        # supdatePolicy.type to PROACTIVE.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of thezone where the managed
        #   instance group is located.
        # @param [String] instance_group_manager
        #   The name of the managed instance group.
        # @param [Google::Apis::ComputeV1::InstanceGroupManagersSetInstanceTemplateRequest] instance_group_managers_set_instance_template_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_instance_group_manager_instance_template(project, zone, instance_group_manager, instance_group_managers_set_instance_template_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/setInstanceTemplate', options)
          command.request_representation = Google::Apis::ComputeV1::InstanceGroupManagersSetInstanceTemplateRequest::Representation
          command.request_object = instance_group_managers_set_instance_template_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Modifies the target pools to which all instances in this managed instance
        # group are assigned. The target pools automatically apply to all of the
        # instances in the managed instance group. This operation is markedDONE when you
        # make the request even if the instances have not
        # yet been added to their target pools. The change might take some time to
        # apply to all of the instances in the group depending on the size of the
        # group.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of thezone where the managed
        #   instance group is located.
        # @param [String] instance_group_manager
        #   The name of the managed instance group.
        # @param [Google::Apis::ComputeV1::InstanceGroupManagersSetTargetPoolsRequest] instance_group_managers_set_target_pools_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_instance_group_manager_target_pools(project, zone, instance_group_manager, instance_group_managers_set_target_pools_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/setTargetPools', options)
          command.request_representation = Google::Apis::ComputeV1::InstanceGroupManagersSetTargetPoolsRequest::Representation
          command.request_object = instance_group_managers_set_target_pools_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Flags the specified instances in the managed instance group to be
        # started. This method increases thetargetSize and decreases the
        # targetStoppedSize
        # of the managed instance group by the number of instances that you start.
        # The startInstances operation is marked DONE if
        # the startInstances request is successful. The underlying
        # actions take additional time. You must separately verify the status of
        # theSTARTING action with thelistmanagedinstances
        # method.
        # In this request, you can only specify instances that are stopped. For
        # example, if an instance was previously stopped using the stopInstances
        # method, it can be started using the startInstances method.
        # If a health check is attached to the managed instance group, the specified
        # instances will be verified as healthy after they are started.
        # You can specify a maximum of 1000 instances with this method per request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of thezone where the managed
        #   instance group is located.
        # @param [String] instance_group_manager
        #   The name of the managed instance group.
        # @param [Google::Apis::ComputeV1::InstanceGroupManagersStartInstancesRequest] instance_group_managers_start_instances_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def start_instance_group_manager_instances(project, zone, instance_group_manager, instance_group_managers_start_instances_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/startInstances', options)
          command.request_representation = Google::Apis::ComputeV1::InstanceGroupManagersStartInstancesRequest::Representation
          command.request_object = instance_group_managers_start_instances_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Flags the specified instances in the managed instance group to be
        # immediately stopped. You can only specify instances that are running in
        # this request. This method reduces thetargetSize and increases the
        # targetStoppedSize
        # of the managed instance group by the number of instances that you stop.
        # The stopInstances operation is marked DONE if
        # the stopInstances request is successful. The underlying
        # actions take additional time. You must separately verify the status of
        # theSTOPPING action with thelistmanagedinstances
        # method.
        # If the standbyPolicy.initialDelaySec field is set, the group
        # delays stopping the instances until initialDelaySec have
        # passed from instance.creationTimestamp (that is, when the
        # instance was created). This delay gives your application time to
        # set itself up and initialize on the instance. If more thaninitialDelaySec
        # seconds have passed sinceinstance.creationTimestamp when this method is called,
        # there
        # will be zero delay.
        # If the group is part of a backend
        # service that has enabled
        # connection draining, it can take up to 60 seconds after the connection
        # draining duration has elapsed before the VM instance is stopped.
        # Stopped instances can be started using the startInstances
        # method.
        # You can specify a maximum of 1000 instances with this method per request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of thezone where the managed
        #   instance group is located.
        # @param [String] instance_group_manager
        #   The name of the managed instance group.
        # @param [Google::Apis::ComputeV1::InstanceGroupManagersStopInstancesRequest] instance_group_managers_stop_instances_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def stop_instance_group_manager_instances(project, zone, instance_group_manager, instance_group_managers_stop_instances_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/stopInstances', options)
          command.request_representation = Google::Apis::ComputeV1::InstanceGroupManagersStopInstancesRequest::Representation
          command.request_object = instance_group_managers_stop_instances_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Flags the specified instances in the managed instance group to be
        # immediately suspended. You can only specify instances that are running in
        # this request. This method reduces thetargetSize and increases the
        # targetSuspendedSize
        # of the managed instance group by the number of instances that you suspend.
        # The suspendInstances operation is marked DONE if
        # the suspendInstances request is successful. The underlying
        # actions take additional time. You must separately verify the status of
        # theSUSPENDING action with thelistmanagedinstances
        # method.
        # If the standbyPolicy.initialDelaySec field is set, the group
        # delays suspension of the instances until initialDelaySec have
        # passed from instance.creationTimestamp (that is, when the
        # instance was created). This delay gives your application time to
        # set itself up and initialize on the instance. If more thaninitialDelaySec
        # seconds have passed sinceinstance.creationTimestamp when this method is called,
        # there
        # will be zero delay.
        # If the group is part of a backend
        # service that has enabled
        # connection draining, it can take up to 60 seconds after the connection
        # draining duration has elapsed before the VM instance is suspended.
        # Suspended instances can be resumed using the resumeInstances
        # method.
        # You can specify a maximum of 1000 instances with this method per request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of thezone where the managed
        #   instance group is located.
        # @param [String] instance_group_manager
        #   The name of the managed instance group.
        # @param [Google::Apis::ComputeV1::InstanceGroupManagersSuspendInstancesRequest] instance_group_managers_suspend_instances_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def suspend_instance_group_manager_instances(project, zone, instance_group_manager, instance_group_managers_suspend_instances_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/suspendInstances', options)
          command.request_representation = Google::Apis::ComputeV1::InstanceGroupManagersSuspendInstancesRequest::Representation
          command.request_object = instance_group_managers_suspend_instances_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Inserts or updates per-instance configurations for the managed instance
        # group. perInstanceConfig.name serves as a key used to
        # distinguish whether to perform insert or patch.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of thezone
        #   where the managed instance group is located.
        #   It should conform to RFC1035.
        # @param [String] instance_group_manager
        #   The name of the managed instance group.
        #   It should conform to RFC1035.
        # @param [Google::Apis::ComputeV1::InstanceGroupManagersUpdatePerInstanceConfigsReq] instance_group_managers_update_per_instance_configs_req_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def update_instance_group_manager_per_instance_configs(project, zone, instance_group_manager, instance_group_managers_update_per_instance_configs_req_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/updatePerInstanceConfigs', options)
          command.request_representation = Google::Apis::ComputeV1::InstanceGroupManagersUpdatePerInstanceConfigsReq::Representation
          command.request_object = instance_group_managers_update_per_instance_configs_req_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Adds a list of instances to the specified instance group.  All of the
        # instances in the instance group must be in the same network/subnetwork.
        # Read
        # Adding instances for more information.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone
        #   where the instance group is located.
        # @param [String] instance_group
        #   The name of the instance group where you are adding instances.
        # @param [Google::Apis::ComputeV1::InstanceGroupsAddInstancesRequest] instance_groups_add_instances_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def add_instance_group_instances(project, zone, instance_group, instance_groups_add_instances_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instanceGroups/{instanceGroup}/addInstances', options)
          command.request_representation = Google::Apis::ComputeV1::InstanceGroupsAddInstancesRequest::Representation
          command.request_object = instance_groups_add_instances_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instanceGroup'] = instance_group unless instance_group.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of instance groups and sorts them by zone.
        # To prevent failure, Google recommends that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InstanceGroupAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InstanceGroupAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_aggregated_instance_groups(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/instanceGroups', options)
          command.response_representation = Google::Apis::ComputeV1::InstanceGroupAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::InstanceGroupAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified instance group. The instances in the group are not
        # deleted. Note that instance group must not belong to a backend service.
        # Read
        # Deleting an instance group for more information.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone
        #   where the instance group is located.
        # @param [String] instance_group
        #   The name of the instance group to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_instance_group(project, zone, instance_group, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/zones/{zone}/instanceGroups/{instanceGroup}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instanceGroup'] = instance_group unless instance_group.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified zonal instance group. Get a list of available zonal
        # instance groups by making a list() request.
        # For managed instance groups, use theinstanceGroupManagers
        # or regionInstanceGroupManagers
        # methods instead.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone
        #   where the instance group is located.
        # @param [String] instance_group
        #   The name of the instance group.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InstanceGroup] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InstanceGroup]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_instance_group(project, zone, instance_group, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/instanceGroups/{instanceGroup}', options)
          command.response_representation = Google::Apis::ComputeV1::InstanceGroup::Representation
          command.response_class = Google::Apis::ComputeV1::InstanceGroup
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instanceGroup'] = instance_group unless instance_group.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates an instance group in the specified project using the
        # parameters that are included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone
        #   where you want to create the instance group.
        # @param [Google::Apis::ComputeV1::InstanceGroup] instance_group_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_instance_group(project, zone, instance_group_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instanceGroups', options)
          command.request_representation = Google::Apis::ComputeV1::InstanceGroup::Representation
          command.request_object = instance_group_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of zonal instance group resources contained within the
        # specified zone.
        # For managed instance groups, use theinstanceGroupManagers
        # or regionInstanceGroupManagers
        # methods instead.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of thezone
        #   where the instance group is located.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InstanceGroupList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InstanceGroupList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_instance_groups(project, zone, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/instanceGroups', options)
          command.response_representation = Google::Apis::ComputeV1::InstanceGroupList::Representation
          command.response_class = Google::Apis::ComputeV1::InstanceGroupList
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists the instances in the specified instance group.
        # The orderBy query parameter is not supported.
        # The filter query parameter is supported, but only for
        # expressions that use `eq` (equal) or `ne` (not equal) operators.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone
        #   where the instance group is located.
        # @param [String] instance_group
        #   The name of the instance group from which you want to generate a list
        #   of included instances.
        # @param [Google::Apis::ComputeV1::InstanceGroupsListInstancesRequest] instance_groups_list_instances_request_object
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InstanceGroupsListInstances] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InstanceGroupsListInstances]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_instance_group_instances(project, zone, instance_group, instance_groups_list_instances_request_object = nil, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instanceGroups/{instanceGroup}/listInstances', options)
          command.request_representation = Google::Apis::ComputeV1::InstanceGroupsListInstancesRequest::Representation
          command.request_object = instance_groups_list_instances_request_object
          command.response_representation = Google::Apis::ComputeV1::InstanceGroupsListInstances::Representation
          command.response_class = Google::Apis::ComputeV1::InstanceGroupsListInstances
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instanceGroup'] = instance_group unless instance_group.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Removes one or more instances from the specified instance group, but does
        # not delete those instances.
        # If the group is part of a backend
        # service that has enabled
        # connection draining, it can take up to 60 seconds after the connection
        # draining duration before the VM instance is removed or deleted.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone
        #   where the instance group is located.
        # @param [String] instance_group
        #   The name of the instance group where the specified instances will be
        #   removed.
        # @param [Google::Apis::ComputeV1::InstanceGroupsRemoveInstancesRequest] instance_groups_remove_instances_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def remove_instance_group_instances(project, zone, instance_group, instance_groups_remove_instances_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instanceGroups/{instanceGroup}/removeInstances', options)
          command.request_representation = Google::Apis::ComputeV1::InstanceGroupsRemoveInstancesRequest::Representation
          command.request_object = instance_groups_remove_instances_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instanceGroup'] = instance_group unless instance_group.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the named ports for the specified instance group.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone
        #   where the instance group is located.
        # @param [String] instance_group
        #   The name of the instance group where the named ports are updated.
        # @param [Google::Apis::ComputeV1::InstanceGroupsSetNamedPortsRequest] instance_groups_set_named_ports_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_instance_group_named_ports(project, zone, instance_group, instance_groups_set_named_ports_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instanceGroups/{instanceGroup}/setNamedPorts', options)
          command.request_representation = Google::Apis::ComputeV1::InstanceGroupsSetNamedPortsRequest::Representation
          command.request_object = instance_groups_set_named_ports_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instanceGroup'] = instance_group unless instance_group.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_instance_group_iam_permissions(project, zone, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instanceGroups/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Get Instance settings.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone for this request.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InstanceSettings] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InstanceSettings]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_instance_setting(project, zone, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/instanceSettings', options)
          command.response_representation = Google::Apis::ComputeV1::InstanceSettings::Representation
          command.response_class = Google::Apis::ComputeV1::InstanceSettings
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patch Instance settings
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The zone scoping this request. It should conform to RFC1035.
        # @param [Google::Apis::ComputeV1::InstanceSettings] instance_settings_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] update_mask
        #   update_mask indicates fields to be updated as part of this request.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_instance_setting(project, zone, instance_settings_object = nil, request_id: nil, update_mask: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/zones/{zone}/instanceSettings', options)
          command.request_representation = Google::Apis::ComputeV1::InstanceSettings::Representation
          command.request_object = instance_settings_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['updateMask'] = update_mask unless update_mask.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of all InstanceTemplates resources, regional and global,
        # available to the specified project.
        # To prevent failure, Google recommends that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Name of the project scoping this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InstanceTemplateAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InstanceTemplateAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def aggregated_instance_template_list(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/instanceTemplates', options)
          command.response_representation = Google::Apis::ComputeV1::InstanceTemplateAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::InstanceTemplateAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified instance template. Deleting an instance template is
        # permanent and cannot be undone. It is not possible to delete templates
        # that are already in use by a managed instance group.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] instance_template
        #   The name of the instance template to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_instance_template(project, instance_template, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/global/instanceTemplates/{instanceTemplate}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['instanceTemplate'] = instance_template unless instance_template.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified instance template.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] instance_template
        #   The name of the instance template.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InstanceTemplate] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InstanceTemplate]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_instance_template(project, instance_template, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/instanceTemplates/{instanceTemplate}', options)
          command.response_representation = Google::Apis::ComputeV1::InstanceTemplate::Representation
          command.response_class = Google::Apis::ComputeV1::InstanceTemplate
          command.params['project'] = project unless project.nil?
          command.params['instanceTemplate'] = instance_template unless instance_template.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets the access control policy for a resource. May be empty if no such
        # policy or resource exists.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Fixnum] options_requested_policy_version
        #   Requested IAM Policy version.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_instance_template_iam_policy(project, resource, options_requested_policy_version: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/instanceTemplates/{resource}/getIamPolicy', options)
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['optionsRequestedPolicyVersion'] = options_requested_policy_version unless options_requested_policy_version.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates an instance template in the specified project using the
        # data that is included in the request. If you are creating a new template to
        # update an existing instance group, your new instance template must use the
        # same network or, if applicable, the same subnetwork as the original
        # template.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::InstanceTemplate] instance_template_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_instance_template(project, instance_template_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/instanceTemplates', options)
          command.request_representation = Google::Apis::ComputeV1::InstanceTemplate::Representation
          command.request_object = instance_template_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of instance templates that are contained within
        # the specified project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InstanceTemplateList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InstanceTemplateList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_instance_templates(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/instanceTemplates', options)
          command.response_representation = Google::Apis::ComputeV1::InstanceTemplateList::Representation
          command.response_class = Google::Apis::ComputeV1::InstanceTemplateList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the access control policy on the specified resource.
        # Replaces any existing policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::GlobalSetPolicyRequest] global_set_policy_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_instance_template_iam_policy(project, resource, global_set_policy_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/instanceTemplates/{resource}/setIamPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::GlobalSetPolicyRequest::Representation
          command.request_object = global_set_policy_request_object
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_instance_template_iam_permissions(project, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/instanceTemplates/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Adds an access config to an instance's network interface.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   The instance name for this request.
        # @param [String] network_interface
        #   The name of the network interface to add to this instance.
        # @param [Google::Apis::ComputeV1::AccessConfig] access_config_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def add_instance_access_config(project, zone, instance, network_interface, access_config_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instances/{instance}/addAccessConfig', options)
          command.request_representation = Google::Apis::ComputeV1::AccessConfig::Representation
          command.request_object = access_config_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['networkInterface'] = network_interface unless network_interface.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Adds one dynamic network interface to an active instance.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   The instance name for this request stored as resource_id.
        #   Name should conform to RFC1035 or be an unsigned long integer.
        # @param [Google::Apis::ComputeV1::NetworkInterface] network_interface_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def add_instance_network_interface(project, zone, instance, network_interface_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instances/{instance}/addNetworkInterface', options)
          command.request_representation = Google::Apis::ComputeV1::NetworkInterface::Representation
          command.request_object = network_interface_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Adds existing resource policies to an instance. You can only add one
        # policy right now which will be applied to this instance for scheduling live
        # migrations.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   The instance name for this request.
        # @param [Google::Apis::ComputeV1::InstancesAddResourcePoliciesRequest] instances_add_resource_policies_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def add_instance_resource_policies(project, zone, instance, instances_add_resource_policies_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instances/{instance}/addResourcePolicies', options)
          command.request_representation = Google::Apis::ComputeV1::InstancesAddResourcePoliciesRequest::Representation
          command.request_object = instances_add_resource_policies_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves an aggregated list of all of the instances in your project
        # across all regions and zones.
        # The performance of this method degrades when a filter is specified on a
        # project that has a very large number of instances.
        # To prevent failure, Google recommends that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InstanceAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InstanceAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_aggregated_instances(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/instances', options)
          command.response_representation = Google::Apis::ComputeV1::InstanceAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::InstanceAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Attaches an existing Disk resource to an instance. You must first
        # create the disk before you can attach it. It is not possible to create
        # and attach a disk at the same time. For more information, readAdding a
        # persistent disk to your instance.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   The instance name for this request.
        # @param [Google::Apis::ComputeV1::AttachedDisk] attached_disk_object
        # @param [Boolean] force_attach
        #   Whether to force attach the regional disk even if it's currently attached
        #   to another instance. If you try to force attach a zonal disk to an
        #   instance, you will receive an error.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def attach_disk(project, zone, instance, attached_disk_object = nil, force_attach: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instances/{instance}/attachDisk', options)
          command.request_representation = Google::Apis::ComputeV1::AttachedDisk::Representation
          command.request_object = attached_disk_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['forceAttach'] = force_attach unless force_attach.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates multiple instances. Count specifies the number of instances to
        # create. For more information, seeAbout bulk
        # creation of VMs.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [Google::Apis::ComputeV1::BulkInsertInstanceResource] bulk_insert_instance_resource_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def bulk_instance_insert(project, zone, bulk_insert_instance_resource_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instances/bulkInsert', options)
          command.request_representation = Google::Apis::ComputeV1::BulkInsertInstanceResource::Representation
          command.request_object = bulk_insert_instance_resource_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified Instance resource. For more information, seeDeleting
        # an instance.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   Name of the instance resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_instance(project, zone, instance, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/zones/{zone}/instances/{instance}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes an access config from an instance's network interface.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   The instance name for this request.
        # @param [String] access_config
        #   The name of the access config to delete.
        # @param [String] network_interface
        #   The name of the network interface.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_instance_access_config(project, zone, instance, access_config, network_interface, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instances/{instance}/deleteAccessConfig', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['accessConfig'] = access_config unless access_config.nil?
          command.query['networkInterface'] = network_interface unless network_interface.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes one dynamic network interface from an active instance.
        # InstancesDeleteNetworkInterfaceRequest indicates:
        # - instance from which to delete, using project+zone+resource_id fields;
        # - dynamic network interface to be deleted, using network_interface_name
        # field;
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   The instance name for this request stored as resource_id.
        #   Name should conform to RFC1035 or be an unsigned long integer.
        # @param [String] network_interface_name
        #   The name of the dynamic network interface to be deleted from the instance.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_instance_network_interface(project, zone, instance, network_interface_name, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instances/{instance}/deleteNetworkInterface', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['networkInterfaceName'] = network_interface_name unless network_interface_name.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Detaches a disk from an instance.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   Instance name for this request.
        # @param [String] device_name
        #   The device name of the disk to detach. Make a get() request on
        #   the instance to view currently attached disks and device names.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def detach_disk(project, zone, instance, device_name, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instances/{instance}/detachDisk', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['deviceName'] = device_name unless device_name.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified Instance resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   Name of the instance resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Instance] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Instance]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_instance(project, zone, instance, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/instances/{instance}', options)
          command.response_representation = Google::Apis::ComputeV1::Instance::Representation
          command.response_class = Google::Apis::ComputeV1::Instance
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns effective firewalls applied to an interface of the instance.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   Name of the instance scoping this request.
        # @param [String] network_interface
        #   The name of the network interface to get the effective firewalls.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InstancesGetEffectiveFirewallsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InstancesGetEffectiveFirewallsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_instance_effective_firewalls(project, zone, instance, network_interface, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/instances/{instance}/getEffectiveFirewalls', options)
          command.response_representation = Google::Apis::ComputeV1::InstancesGetEffectiveFirewallsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::InstancesGetEffectiveFirewallsResponse
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['networkInterface'] = network_interface unless network_interface.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified guest attributes entry.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   Name of the instance scoping this request.
        # @param [String] query_path
        #   Specifies the guest attributes path to be queried.
        # @param [String] variable_key
        #   Specifies the key for the guest attributes entry.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::GuestAttributes] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::GuestAttributes]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_instance_guest_attributes(project, zone, instance, query_path: nil, variable_key: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/instances/{instance}/getGuestAttributes', options)
          command.response_representation = Google::Apis::ComputeV1::GuestAttributes::Representation
          command.response_class = Google::Apis::ComputeV1::GuestAttributes
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['queryPath'] = query_path unless query_path.nil?
          command.query['variableKey'] = variable_key unless variable_key.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets the access control policy for a resource. May be empty if no such
        # policy or resource exists.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Fixnum] options_requested_policy_version
        #   Requested IAM Policy version.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_instance_iam_policy(project, zone, resource, options_requested_policy_version: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/instances/{resource}/getIamPolicy', options)
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['optionsRequestedPolicyVersion'] = options_requested_policy_version unless options_requested_policy_version.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the screenshot from the specified instance.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   Name of the instance scoping this request.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Screenshot] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Screenshot]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_instance_screenshot(project, zone, instance, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/instances/{instance}/screenshot', options)
          command.response_representation = Google::Apis::ComputeV1::Screenshot::Representation
          command.response_class = Google::Apis::ComputeV1::Screenshot
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the last 1 MB of serial port output from the specified instance.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   Name of the instance for this request.
        # @param [Fixnum] port
        #   Specifies which COM or serial port to retrieve data from.
        # @param [Fixnum] start
        #   Specifies the starting byte position of the output to return. To start with
        #   the first byte of output to the specified port, omit this field or set it
        #   to `0`.
        #   If the output for that byte position is available, this field matches the
        #   `start` parameter sent with the request. If the amount of serial console
        #   output exceeds the size of the buffer (1 MB), the oldest output is
        #   discarded and is no longer available. If the requested start position
        #   refers to discarded output, the start position is adjusted to the oldest
        #   output still available, and the adjusted start position is returned as the
        #   `start` property value.
        #   You can also provide a negative start position, which translates to the
        #   most recent number of bytes written to the serial port. For example, -3 is
        #   interpreted as the most recent 3 bytes written to the serial console. Note
        #   that the negative start is bounded by the retained buffer size, and the
        #   returned serial console output will not exceed the max buffer size.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::SerialPortOutput] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::SerialPortOutput]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_instance_serial_port_output(project, zone, instance, port: nil, start: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/instances/{instance}/serialPort', options)
          command.response_representation = Google::Apis::ComputeV1::SerialPortOutput::Representation
          command.response_class = Google::Apis::ComputeV1::SerialPortOutput
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['port'] = port unless port.nil?
          command.query['start'] = start unless start.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the Shielded Instance Identity of an instance
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   Name or id of the instance scoping this request.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::ShieldedInstanceIdentity] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::ShieldedInstanceIdentity]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_instance_shielded_instance_identity(project, zone, instance, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/instances/{instance}/getShieldedInstanceIdentity', options)
          command.response_representation = Google::Apis::ComputeV1::ShieldedInstanceIdentity::Representation
          command.response_class = Google::Apis::ComputeV1::ShieldedInstanceIdentity
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates an instance resource in the specified project using the data
        # included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [Google::Apis::ComputeV1::Instance] instance_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] source_instance_template
        #   Specifies instance template to create the instance.
        #   This field is optional. It can be a full or partial URL. For example, the
        #   following are all valid URLs to an instance template:
        #   
        #   
        #   - https://www.googleapis.com/compute/v1/projects/project/global/
        #   instanceTemplates/instanceTemplate
        #   - projects/project/global/instanceTemplates/instanceTemplate
        #   - global/instanceTemplates/instanceTemplate
        # @param [String] source_machine_image
        #   Specifies the machine image to use to create the instance.
        #   This field is optional. It can be a full or partial URL. For example, the
        #   following are all valid URLs to a machine image:
        #   
        #   
        #   - https://www.googleapis.com/compute/v1/projects/project/global/global/
        #   machineImages/machineImage
        #   - projects/project/global/global/machineImages/machineImage
        #   - global/machineImages/machineImage
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_instance(project, zone, instance_object = nil, request_id: nil, source_instance_template: nil, source_machine_image: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instances', options)
          command.request_representation = Google::Apis::ComputeV1::Instance::Representation
          command.request_object = instance_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['sourceInstanceTemplate'] = source_instance_template unless source_instance_template.nil?
          command.query['sourceMachineImage'] = source_machine_image unless source_machine_image.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of instances contained within
        # the specified zone.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InstanceList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InstanceList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_instances(project, zone, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/instances', options)
          command.response_representation = Google::Apis::ComputeV1::InstanceList::Representation
          command.response_class = Google::Apis::ComputeV1::InstanceList
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of resources that refer to the VM instance specified in
        # the request. For example, if the VM instance is part of a managed or
        # unmanaged instance group, the referrers list includes the instance group.
        # For more information, readViewing
        # referrers to VM instances.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   Name of the target instance scoping this request, or '-' if the
        #   request should span over all instances in the container.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InstanceListReferrers] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InstanceListReferrers]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_instance_referrers(project, zone, instance, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/instances/{instance}/referrers', options)
          command.response_representation = Google::Apis::ComputeV1::InstanceListReferrers::Representation
          command.response_class = Google::Apis::ComputeV1::InstanceListReferrers
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Perform a manual maintenance on the instance.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   Name of the instance scoping this request.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def perform_instance_maintenance(project, zone, instance, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instances/{instance}/performMaintenance', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Removes resource policies from an instance.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   The instance name for this request.
        # @param [Google::Apis::ComputeV1::InstancesRemoveResourcePoliciesRequest] instances_remove_resource_policies_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def remove_instance_resource_policies(project, zone, instance, instances_remove_resource_policies_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instances/{instance}/removeResourcePolicies', options)
          command.request_representation = Google::Apis::ComputeV1::InstancesRemoveResourcePoliciesRequest::Representation
          command.request_object = instances_remove_resource_policies_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Mark the host as faulty and try to restart the instance on a new host.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   Name of the instance scoping this request.
        # @param [Google::Apis::ComputeV1::InstancesReportHostAsFaultyRequest] instances_report_host_as_faulty_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def report_instance_host_as_faulty(project, zone, instance, instances_report_host_as_faulty_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instances/{instance}/reportHostAsFaulty', options)
          command.request_representation = Google::Apis::ComputeV1::InstancesReportHostAsFaultyRequest::Representation
          command.request_object = instances_report_host_as_faulty_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Performs a reset on the instance. This is a hard reset. The VM
        # does not do a graceful shutdown. For more information, seeResetting
        # an instance.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   Name of the instance scoping this request.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def reset_instance(project, zone, instance, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instances/{instance}/reset', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Resumes an instance that was suspended using theinstances().suspend
        # method.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   Name of the instance resource to resume.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def resume_instance(project, zone, instance, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instances/{instance}/resume', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sends diagnostic interrupt to the instance.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   Name of the instance scoping this request.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [NilClass] No result returned for this method
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [void]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def send_instance_diagnostic_interrupt(project, zone, instance, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instances/{instance}/sendDiagnosticInterrupt', options)
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets deletion protection on the instance.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Boolean] deletion_protection
        #   Whether the resource should be protected against deletion.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_instance_deletion_protection(project, zone, resource, deletion_protection: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instances/{resource}/setDeletionProtection', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['deletionProtection'] = deletion_protection unless deletion_protection.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the auto-delete flag for a disk attached to an instance.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   The instance name for this request.
        # @param [Boolean] auto_delete
        #   Whether to auto-delete the disk when the instance is deleted.
        # @param [String] device_name
        #   The device name of the disk to modify. Make a get() request
        #   on the instance to view currently attached disks and device names.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_disk_auto_delete(project, zone, instance, auto_delete, device_name, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instances/{instance}/setDiskAutoDelete', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['autoDelete'] = auto_delete unless auto_delete.nil?
          command.query['deviceName'] = device_name unless device_name.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the access control policy on the specified resource.
        # Replaces any existing policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::ZoneSetPolicyRequest] zone_set_policy_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_instance_iam_policy(project, zone, resource, zone_set_policy_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instances/{resource}/setIamPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::ZoneSetPolicyRequest::Representation
          command.request_object = zone_set_policy_request_object
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets labels on an instance.  To learn more about labels, read theLabeling
        # Resources documentation.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   Name of the instance scoping this request.
        # @param [Google::Apis::ComputeV1::InstancesSetLabelsRequest] instances_set_labels_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_instance_labels(project, zone, instance, instances_set_labels_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instances/{instance}/setLabels', options)
          command.request_representation = Google::Apis::ComputeV1::InstancesSetLabelsRequest::Representation
          command.request_object = instances_set_labels_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Changes the number and/or type of accelerator for a stopped instance to the
        # values specified in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   Name of the instance scoping this request.
        # @param [Google::Apis::ComputeV1::InstancesSetMachineResourcesRequest] instances_set_machine_resources_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_instance_machine_resources(project, zone, instance, instances_set_machine_resources_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instances/{instance}/setMachineResources', options)
          command.request_representation = Google::Apis::ComputeV1::InstancesSetMachineResourcesRequest::Representation
          command.request_object = instances_set_machine_resources_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Changes the machine type for a stopped instance to the machine
        # type specified in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   Name of the instance scoping this request.
        # @param [Google::Apis::ComputeV1::InstancesSetMachineTypeRequest] instances_set_machine_type_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_instance_machine_type(project, zone, instance, instances_set_machine_type_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instances/{instance}/setMachineType', options)
          command.request_representation = Google::Apis::ComputeV1::InstancesSetMachineTypeRequest::Representation
          command.request_object = instances_set_machine_type_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets metadata for the specified instance to the data included
        # in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   Name of the instance scoping this request.
        # @param [Google::Apis::ComputeV1::Metadata] metadata_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_instance_metadata(project, zone, instance, metadata_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instances/{instance}/setMetadata', options)
          command.request_representation = Google::Apis::ComputeV1::Metadata::Representation
          command.request_object = metadata_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Changes the minimum CPU platform that this instance should use.
        # This method can only
        # be called on a stopped instance. For more information, readSpecifying a
        # Minimum CPU Platform.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   Name of the instance scoping this request.
        # @param [Google::Apis::ComputeV1::InstancesSetMinCpuPlatformRequest] instances_set_min_cpu_platform_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_instance_min_cpu_platform(project, zone, instance, instances_set_min_cpu_platform_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instances/{instance}/setMinCpuPlatform', options)
          command.request_representation = Google::Apis::ComputeV1::InstancesSetMinCpuPlatformRequest::Representation
          command.request_object = instances_set_min_cpu_platform_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets name of an instance.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   The instance name for this request.
        # @param [Google::Apis::ComputeV1::InstancesSetNameRequest] instances_set_name_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_instance_name(project, zone, instance, instances_set_name_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instances/{instance}/setName', options)
          command.request_representation = Google::Apis::ComputeV1::InstancesSetNameRequest::Representation
          command.request_object = instances_set_name_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets an instance's scheduling options. You can only call this method on
        # astopped instance,
        # that is, a VM instance that is in a `TERMINATED` state. SeeInstance Life
        # Cycle for more information on the possible instance states.
        # For more information about setting scheduling options for a VM, seeSet
        # VM host maintenance policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   Instance name for this request.
        # @param [Google::Apis::ComputeV1::Scheduling] scheduling_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_instance_scheduling(project, zone, instance, scheduling_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instances/{instance}/setScheduling', options)
          command.request_representation = Google::Apis::ComputeV1::Scheduling::Representation
          command.request_object = scheduling_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the Google Cloud Armor security policy for the specified instance.
        # For more information, seeGoogle
        # Cloud Armor Overview
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone scoping this request.
        # @param [String] instance
        #   Name of the Instance resource to which the security policy should be
        #   set. The name should conform to RFC1035.
        # @param [Google::Apis::ComputeV1::InstancesSetSecurityPolicyRequest] instances_set_security_policy_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_instance_security_policy(project, zone, instance, instances_set_security_policy_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instances/{instance}/setSecurityPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::InstancesSetSecurityPolicyRequest::Representation
          command.request_object = instances_set_security_policy_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the service account on the instance. For more information,
        # readChanging
        # the service account and access scopes for an instance.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   Name of the instance resource to start.
        # @param [Google::Apis::ComputeV1::InstancesSetServiceAccountRequest] instances_set_service_account_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_instance_service_account(project, zone, instance, instances_set_service_account_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instances/{instance}/setServiceAccount', options)
          command.request_representation = Google::Apis::ComputeV1::InstancesSetServiceAccountRequest::Representation
          command.request_object = instances_set_service_account_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the Shielded Instance integrity policy for an instance. You can
        # only use this method on a running instance. This method
        # supports PATCH semantics and uses the JSON merge
        # patch format and processing rules.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   Name or id of the instance scoping this request.
        # @param [Google::Apis::ComputeV1::ShieldedInstanceIntegrityPolicy] shielded_instance_integrity_policy_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_instance_shielded_instance_integrity_policy(project, zone, instance, shielded_instance_integrity_policy_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/zones/{zone}/instances/{instance}/setShieldedInstanceIntegrityPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::ShieldedInstanceIntegrityPolicy::Representation
          command.request_object = shielded_instance_integrity_policy_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets network tags
        # for the specified instance to the data included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   Name of the instance scoping this request.
        # @param [Google::Apis::ComputeV1::Tags] tags_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_instance_tags(project, zone, instance, tags_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instances/{instance}/setTags', options)
          command.request_representation = Google::Apis::ComputeV1::Tags::Representation
          command.request_object = tags_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Simulates a host maintenance event on a VM. For more information, see
        # Simulate a host maintenance event.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   Name of the instance scoping this request.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [Boolean] with_extended_notifications
        #   Determines whether the customers receive notifications before migration.
        #   Only applicable to SF vms.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def simulate_instance_maintenance_event(project, zone, instance, request_id: nil, with_extended_notifications: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instances/{instance}/simulateMaintenanceEvent', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['withExtendedNotifications'] = with_extended_notifications unless with_extended_notifications.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Starts an instance that was stopped using theinstances().stop
        # method. For more information, seeRestart an
        # instance.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   Name of the instance resource to start.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def start_instance(project, zone, instance, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instances/{instance}/start', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Starts an instance that was stopped using theinstances().stop
        # method. For more information, seeRestart an
        # instance.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   Name of the instance resource to start.
        # @param [Google::Apis::ComputeV1::InstancesStartWithEncryptionKeyRequest] instances_start_with_encryption_key_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def start_instance_with_encryption_key(project, zone, instance, instances_start_with_encryption_key_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instances/{instance}/startWithEncryptionKey', options)
          command.request_representation = Google::Apis::ComputeV1::InstancesStartWithEncryptionKeyRequest::Representation
          command.request_object = instances_start_with_encryption_key_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Stops a running instance, shutting it down cleanly, and allows
        # you to restart the instance at a later time. Stopped instances do not incur
        # VM usage charges while they are stopped. However, resources that the VM is
        # using, such as persistent disks and static IP addresses, will continue to
        # be charged until they are deleted. For more information, seeStopping
        # an instance.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   Name of the instance resource to stop.
        # @param [Boolean] discard_local_ssd
        #   This property is required if the instance has any attached Local SSD disks.
        #   If false, Local SSD data will be preserved when the instance is suspended.
        #   If true, the contents of any attached Local SSD disks will be discarded.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def stop_instance(project, zone, instance, discard_local_ssd: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instances/{instance}/stop', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['discardLocalSsd'] = discard_local_ssd unless discard_local_ssd.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # This method suspends a running instance, saving its state to persistent
        # storage, and allows you to resume the instance at a later time. Suspended
        # instances have no compute costs (cores or RAM), and incur only storage
        # charges for the saved VM memory and localSSD data. Any charged resources
        # the virtual machine was using, such as persistent disks and static IP
        # addresses, will continue to be charged while the instance is suspended.
        # For more information, see
        # Suspending and resuming an instance.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   Name of the instance resource to suspend.
        # @param [Boolean] discard_local_ssd
        #   This property is required if the instance has any attached Local SSD disks.
        #   If false, Local SSD data will be preserved when the instance is suspended.
        #   If true, the contents of any attached Local SSD disks will be discarded.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def suspend_instance(project, zone, instance, discard_local_ssd: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instances/{instance}/suspend', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['discardLocalSsd'] = discard_local_ssd unless discard_local_ssd.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_instance_iam_permissions(project, zone, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instances/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates an instance only if the necessary resources are available. This
        # method can update only a specific set of instance properties. See
        # Updating a running instance for a list of updatable instance
        # properties.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   Name of the instance resource to update.
        # @param [Google::Apis::ComputeV1::Instance] instance_object
        # @param [String] minimal_action
        #   Specifies the action to take when updating an instance even if the
        #   updated properties do not require it. If not specified, then
        #   Compute Engine acts based on the minimum action that the updated
        #   properties require.
        # @param [String] most_disruptive_allowed_action
        #   Specifies the most disruptive action that can be taken on the instance
        #   as part of the update. Compute Engine returns an error if the
        #   instance properties require a more disruptive action as part of the
        #   instance update. Valid options from lowest to highest are
        #   NO_EFFECT, REFRESH, and RESTART.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def update_instance(project, zone, instance, instance_object = nil, minimal_action: nil, most_disruptive_allowed_action: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:put, 'projects/{project}/zones/{zone}/instances/{instance}', options)
          command.request_representation = Google::Apis::ComputeV1::Instance::Representation
          command.request_object = instance_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['minimalAction'] = minimal_action unless minimal_action.nil?
          command.query['mostDisruptiveAllowedAction'] = most_disruptive_allowed_action unless most_disruptive_allowed_action.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates the specified access config from an instance's network interface
        # with the data included in the request. This method supportsPATCH
        # semantics and uses theJSON merge
        # patch format and processing rules.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   The instance name for this request.
        # @param [String] network_interface
        #   The name of the network interface where the access config is attached.
        # @param [Google::Apis::ComputeV1::AccessConfig] access_config_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def update_instance_access_config(project, zone, instance, network_interface, access_config_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instances/{instance}/updateAccessConfig', options)
          command.request_representation = Google::Apis::ComputeV1::AccessConfig::Representation
          command.request_object = access_config_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['networkInterface'] = network_interface unless network_interface.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates the Display config for a VM instance. You can
        # only use this method on a stopped VM instance. This method supportsPATCH
        # semantics and uses theJSON merge
        # patch format and processing rules.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   Name of the instance scoping this request.
        # @param [Google::Apis::ComputeV1::DisplayDevice] display_device_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def update_instance_display_device(project, zone, instance, display_device_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/zones/{zone}/instances/{instance}/updateDisplayDevice', options)
          command.request_representation = Google::Apis::ComputeV1::DisplayDevice::Representation
          command.request_object = display_device_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates an instance's network interface. This method can only update an
        # interface's alias IP range and attached network. See Modifying
        # alias IP ranges for an existing instance for instructions on
        # changing alias IP ranges. See Migrating
        # a VM between networks for instructions on migrating an interface.
        # This method follows PATCH semantics.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   The instance name for this request.
        # @param [String] network_interface
        #   The name of the network interface to update.
        # @param [Google::Apis::ComputeV1::NetworkInterface] network_interface_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def update_instance_network_interface(project, zone, instance, network_interface, network_interface_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/zones/{zone}/instances/{instance}/updateNetworkInterface', options)
          command.request_representation = Google::Apis::ComputeV1::NetworkInterface::Representation
          command.request_object = network_interface_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['networkInterface'] = network_interface unless network_interface.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates the Shielded Instance config for an instance. You can
        # only use this method on a stopped instance. This method supportsPATCH
        # semantics and uses theJSON merge
        # patch format and processing rules.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instance
        #   Name or id of the instance scoping this request.
        # @param [Google::Apis::ComputeV1::ShieldedInstanceConfig] shielded_instance_config_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def update_instance_shielded_instance_config(project, zone, instance, shielded_instance_config_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/zones/{zone}/instances/{instance}/updateShieldedInstanceConfig', options)
          command.request_representation = Google::Apis::ComputeV1::ShieldedInstanceConfig::Representation
          command.request_object = shielded_instance_config_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instance'] = instance unless instance.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves an aggregated list of instantSnapshots.
        # To prevent failure, Google recommends that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InstantSnapshotAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InstantSnapshotAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def aggregated_instant_snapshot_list(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/instantSnapshots', options)
          command.response_representation = Google::Apis::ComputeV1::InstantSnapshotAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::InstantSnapshotAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified InstantSnapshot resource. Keep in mind that deleting
        # a single instantSnapshot might not necessarily delete all the data on that
        # instantSnapshot. If any data on the instantSnapshot that is marked for
        # deletion is needed for subsequent instantSnapshots, the data will be moved
        # to the next corresponding instantSnapshot.
        # For more information, seeDeleting
        # instantSnapshots.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instant_snapshot
        #   Name of the InstantSnapshot resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_instant_snapshot(project, zone, instant_snapshot, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/zones/{zone}/instantSnapshots/{instantSnapshot}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instantSnapshot'] = instant_snapshot unless instant_snapshot.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified InstantSnapshot resource in the specified zone.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] instant_snapshot
        #   Name of the InstantSnapshot resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InstantSnapshot] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InstantSnapshot]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_instant_snapshot(project, zone, instant_snapshot, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/instantSnapshots/{instantSnapshot}', options)
          command.response_representation = Google::Apis::ComputeV1::InstantSnapshot::Representation
          command.response_class = Google::Apis::ComputeV1::InstantSnapshot
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['instantSnapshot'] = instant_snapshot unless instant_snapshot.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets the access control policy for a resource. May be empty if no such
        # policy or resource exists.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Fixnum] options_requested_policy_version
        #   Requested IAM Policy version.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_instant_snapshot_iam_policy(project, zone, resource, options_requested_policy_version: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/instantSnapshots/{resource}/getIamPolicy', options)
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['optionsRequestedPolicyVersion'] = options_requested_policy_version unless options_requested_policy_version.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates an instant snapshot in the specified zone.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone for this request.
        # @param [Google::Apis::ComputeV1::InstantSnapshot] instant_snapshot_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_instant_snapshot(project, zone, instant_snapshot_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instantSnapshots', options)
          command.request_representation = Google::Apis::ComputeV1::InstantSnapshot::Representation
          command.request_object = instant_snapshot_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of InstantSnapshot resources contained within
        # the specified zone.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InstantSnapshotList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InstantSnapshotList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_instant_snapshots(project, zone, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/instantSnapshots', options)
          command.response_representation = Google::Apis::ComputeV1::InstantSnapshotList::Representation
          command.response_class = Google::Apis::ComputeV1::InstantSnapshotList
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the access control policy on the specified resource.
        # Replaces any existing policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::ZoneSetPolicyRequest] zone_set_policy_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_instant_snapshot_iam_policy(project, zone, resource, zone_set_policy_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instantSnapshots/{resource}/setIamPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::ZoneSetPolicyRequest::Representation
          command.request_object = zone_set_policy_request_object
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the labels on a instantSnapshot in the given zone. To learn more about
        # labels, read the Labeling
        # Resources documentation.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::ZoneSetLabelsRequest] zone_set_labels_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_instant_snapshot_labels(project, zone, resource, zone_set_labels_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instantSnapshots/{resource}/setLabels', options)
          command.request_representation = Google::Apis::ComputeV1::ZoneSetLabelsRequest::Representation
          command.request_object = zone_set_labels_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_instant_snapshot_iam_permissions(project, zone, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/instantSnapshots/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified InterconnectAttachmentGroup in the given scope
        # @param [String] project
        #   Project ID for this request.
        # @param [String] interconnect_attachment_group
        #   Name of the InterconnectAttachmentGroup resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        #   end_interface: MixerMutationRequestBuilder
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_interconnect_attachment_group(project, interconnect_attachment_group, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/global/interconnectAttachmentGroups/{interconnectAttachmentGroup}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['interconnectAttachmentGroup'] = interconnect_attachment_group unless interconnect_attachment_group.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified InterconnectAttachmentGroup resource in the given
        # scope.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] interconnect_attachment_group
        #   Name of the InterconnectAttachmentGroup resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InterconnectAttachmentGroup] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InterconnectAttachmentGroup]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_interconnect_attachment_group(project, interconnect_attachment_group, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/interconnectAttachmentGroups/{interconnectAttachmentGroup}', options)
          command.response_representation = Google::Apis::ComputeV1::InterconnectAttachmentGroup::Representation
          command.response_class = Google::Apis::ComputeV1::InterconnectAttachmentGroup
          command.params['project'] = project unless project.nil?
          command.params['interconnectAttachmentGroup'] = interconnect_attachment_group unless interconnect_attachment_group.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets the access control policy for a resource. May be empty if no such
        # policy or resource exists.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Fixnum] options_requested_policy_version
        #   Requested IAM Policy version.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_interconnect_attachment_group_iam_policy(project, resource, options_requested_policy_version: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/interconnectAttachmentGroups/{resource}/getIamPolicy', options)
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['optionsRequestedPolicyVersion'] = options_requested_policy_version unless options_requested_policy_version.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the InterconnectAttachmentStatuses for the specified
        # InterconnectAttachmentGroup resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] interconnect_attachment_group
        #   Name of the interconnectAttachmentGroup resource to query.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InterconnectAttachmentGroupsGetOperationalStatusResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InterconnectAttachmentGroupsGetOperationalStatusResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_interconnect_attachment_group_operational_status(project, interconnect_attachment_group, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/interconnectAttachmentGroups/{interconnectAttachmentGroup}/getOperationalStatus', options)
          command.response_representation = Google::Apis::ComputeV1::InterconnectAttachmentGroupsGetOperationalStatusResponse::Representation
          command.response_class = Google::Apis::ComputeV1::InterconnectAttachmentGroupsGetOperationalStatusResponse
          command.params['project'] = project unless project.nil?
          command.params['interconnectAttachmentGroup'] = interconnect_attachment_group unless interconnect_attachment_group.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a InterconnectAttachmentGroup in the specified project in the given
        # scope using the parameters that are included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::InterconnectAttachmentGroup] interconnect_attachment_group_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        #   end_interface: MixerMutationRequestBuilder
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_interconnect_attachment_group(project, interconnect_attachment_group_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/interconnectAttachmentGroups', options)
          command.request_representation = Google::Apis::ComputeV1::InterconnectAttachmentGroup::Representation
          command.request_object = interconnect_attachment_group_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists the InterconnectAttachmentGroups for a project in the given scope.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InterconnectAttachmentGroupsListResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InterconnectAttachmentGroupsListResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_interconnect_attachment_groups(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/interconnectAttachmentGroups', options)
          command.response_representation = Google::Apis::ComputeV1::InterconnectAttachmentGroupsListResponse::Representation
          command.response_class = Google::Apis::ComputeV1::InterconnectAttachmentGroupsListResponse
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches the specified InterconnectAttachmentGroup resource with the data
        # included in the request. This method supports PATCH
        # semantics and usesJSON merge
        # patch format and processing rules.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] interconnect_attachment_group
        #   Name of the InterconnectAttachmentGroup resource to patch.
        # @param [Google::Apis::ComputeV1::InterconnectAttachmentGroup] interconnect_attachment_group_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        #   end_interface: MixerMutationRequestBuilder
        # @param [String] update_mask
        #   The list of fields to update.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_interconnect_attachment_group(project, interconnect_attachment_group, interconnect_attachment_group_object = nil, request_id: nil, update_mask: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/global/interconnectAttachmentGroups/{interconnectAttachmentGroup}', options)
          command.request_representation = Google::Apis::ComputeV1::InterconnectAttachmentGroup::Representation
          command.request_object = interconnect_attachment_group_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['interconnectAttachmentGroup'] = interconnect_attachment_group unless interconnect_attachment_group.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['updateMask'] = update_mask unless update_mask.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the access control policy on the specified resource.
        # Replaces any existing policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::GlobalSetPolicyRequest] global_set_policy_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_interconnect_attachment_group_iam_policy(project, resource, global_set_policy_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/interconnectAttachmentGroups/{resource}/setIamPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::GlobalSetPolicyRequest::Representation
          command.request_object = global_set_policy_request_object
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_interconnect_attachment_group_iam_permissions(project, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/interconnectAttachmentGroups/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves an aggregated list of interconnect attachments.
        # To prevent failure, Google recommends that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InterconnectAttachmentAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InterconnectAttachmentAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def aggregated_interconnect_attachment_list(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/interconnectAttachments', options)
          command.response_representation = Google::Apis::ComputeV1::InterconnectAttachmentAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::InterconnectAttachmentAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified interconnect attachment.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] interconnect_attachment
        #   Name of the interconnect attachment to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_interconnect_attachment(project, region, interconnect_attachment, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/regions/{region}/interconnectAttachments/{interconnectAttachment}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['interconnectAttachment'] = interconnect_attachment unless interconnect_attachment.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified interconnect attachment.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] interconnect_attachment
        #   Name of the interconnect attachment to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InterconnectAttachment] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InterconnectAttachment]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_interconnect_attachment(project, region, interconnect_attachment, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/interconnectAttachments/{interconnectAttachment}', options)
          command.response_representation = Google::Apis::ComputeV1::InterconnectAttachment::Representation
          command.response_class = Google::Apis::ComputeV1::InterconnectAttachment
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['interconnectAttachment'] = interconnect_attachment unless interconnect_attachment.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates an InterconnectAttachment in the specified project using the data
        # included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [Google::Apis::ComputeV1::InterconnectAttachment] interconnect_attachment_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [Boolean] validate_only
        #   If true, the request will not be committed.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_interconnect_attachment(project, region, interconnect_attachment_object = nil, request_id: nil, validate_only: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/interconnectAttachments', options)
          command.request_representation = Google::Apis::ComputeV1::InterconnectAttachment::Representation
          command.request_object = interconnect_attachment_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['validateOnly'] = validate_only unless validate_only.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of interconnect attachments contained within
        # the specified region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InterconnectAttachmentList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InterconnectAttachmentList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_interconnect_attachments(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/interconnectAttachments', options)
          command.response_representation = Google::Apis::ComputeV1::InterconnectAttachmentList::Representation
          command.response_class = Google::Apis::ComputeV1::InterconnectAttachmentList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates the specified interconnect attachment with the data included in the
        # request. This method supportsPATCH
        # semantics and uses theJSON merge
        # patch format and processing rules.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] interconnect_attachment
        #   Name of the interconnect attachment to patch.
        # @param [Google::Apis::ComputeV1::InterconnectAttachment] interconnect_attachment_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_interconnect_attachment(project, region, interconnect_attachment, interconnect_attachment_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/regions/{region}/interconnectAttachments/{interconnectAttachment}', options)
          command.request_representation = Google::Apis::ComputeV1::InterconnectAttachment::Representation
          command.request_object = interconnect_attachment_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['interconnectAttachment'] = interconnect_attachment unless interconnect_attachment.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the labels on an InterconnectAttachment. To learn more about labels,
        # read the Labeling
        # Resources documentation.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::RegionSetLabelsRequest] region_set_labels_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_interconnect_attachment_labels(project, region, resource, region_set_labels_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/interconnectAttachments/{resource}/setLabels', options)
          command.request_representation = Google::Apis::ComputeV1::RegionSetLabelsRequest::Representation
          command.request_object = region_set_labels_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Create Interconnects with redundancy by creating them in a specified
        # interconnect group.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] interconnect_group
        #   Name of the group resource to create members for.
        # @param [Google::Apis::ComputeV1::InterconnectGroupsCreateMembersRequest] interconnect_groups_create_members_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def create_interconnect_group_members(project, interconnect_group, interconnect_groups_create_members_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/interconnectGroups/{interconnectGroup}/createMembers', options)
          command.request_representation = Google::Apis::ComputeV1::InterconnectGroupsCreateMembersRequest::Representation
          command.request_object = interconnect_groups_create_members_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['interconnectGroup'] = interconnect_group unless interconnect_group.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified InterconnectGroup in the given scope
        # @param [String] project
        #   Project ID for this request.
        # @param [String] interconnect_group
        #   Name of the InterconnectGroup resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        #   end_interface: MixerMutationRequestBuilder
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_interconnect_group(project, interconnect_group, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/global/interconnectGroups/{interconnectGroup}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['interconnectGroup'] = interconnect_group unless interconnect_group.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified InterconnectGroup resource in the given scope.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] interconnect_group
        #   Name of the InterconnectGroup resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InterconnectGroup] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InterconnectGroup]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_interconnect_group(project, interconnect_group, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/interconnectGroups/{interconnectGroup}', options)
          command.response_representation = Google::Apis::ComputeV1::InterconnectGroup::Representation
          command.response_class = Google::Apis::ComputeV1::InterconnectGroup
          command.params['project'] = project unless project.nil?
          command.params['interconnectGroup'] = interconnect_group unless interconnect_group.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets the access control policy for a resource. May be empty if no such
        # policy or resource exists.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Fixnum] options_requested_policy_version
        #   Requested IAM Policy version.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_interconnect_group_iam_policy(project, resource, options_requested_policy_version: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/interconnectGroups/{resource}/getIamPolicy', options)
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['optionsRequestedPolicyVersion'] = options_requested_policy_version unless options_requested_policy_version.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the interconnectStatuses for the specified
        # InterconnectGroup.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] interconnect_group
        #   Name of the interconnectGroup resource to query.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InterconnectGroupsGetOperationalStatusResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InterconnectGroupsGetOperationalStatusResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_interconnect_group_operational_status(project, interconnect_group, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/interconnectGroups/{interconnectGroup}/getOperationalStatus', options)
          command.response_representation = Google::Apis::ComputeV1::InterconnectGroupsGetOperationalStatusResponse::Representation
          command.response_class = Google::Apis::ComputeV1::InterconnectGroupsGetOperationalStatusResponse
          command.params['project'] = project unless project.nil?
          command.params['interconnectGroup'] = interconnect_group unless interconnect_group.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a InterconnectGroup in the specified project in the given scope
        # using the parameters that are included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::InterconnectGroup] interconnect_group_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        #   end_interface: MixerMutationRequestBuilder
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_interconnect_group(project, interconnect_group_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/interconnectGroups', options)
          command.request_representation = Google::Apis::ComputeV1::InterconnectGroup::Representation
          command.request_object = interconnect_group_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists the InterconnectGroups for a project in the given scope.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InterconnectGroupsListResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InterconnectGroupsListResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_interconnect_groups(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/interconnectGroups', options)
          command.response_representation = Google::Apis::ComputeV1::InterconnectGroupsListResponse::Representation
          command.response_class = Google::Apis::ComputeV1::InterconnectGroupsListResponse
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches the specified InterconnectGroup resource with the data included in
        # the request. This method supports PATCH
        # semantics and usesJSON merge
        # patch format and processing rules.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] interconnect_group
        #   Name of the InterconnectGroup resource to patch.
        # @param [Google::Apis::ComputeV1::InterconnectGroup] interconnect_group_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        #   end_interface: MixerMutationRequestBuilder
        # @param [String] update_mask
        #   The list of fields to update.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_interconnect_group(project, interconnect_group, interconnect_group_object = nil, request_id: nil, update_mask: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/global/interconnectGroups/{interconnectGroup}', options)
          command.request_representation = Google::Apis::ComputeV1::InterconnectGroup::Representation
          command.request_object = interconnect_group_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['interconnectGroup'] = interconnect_group unless interconnect_group.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['updateMask'] = update_mask unless update_mask.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the access control policy on the specified resource.
        # Replaces any existing policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::GlobalSetPolicyRequest] global_set_policy_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_interconnect_group_iam_policy(project, resource, global_set_policy_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/interconnectGroups/{resource}/setIamPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::GlobalSetPolicyRequest::Representation
          command.request_object = global_set_policy_request_object
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_interconnect_group_iam_permissions(project, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/interconnectGroups/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the details for the specified interconnect location. Gets a list of
        # available interconnect locations by making a list() request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] interconnect_location
        #   Name of the interconnect location to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InterconnectLocation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InterconnectLocation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_interconnect_location(project, interconnect_location, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/interconnectLocations/{interconnectLocation}', options)
          command.response_representation = Google::Apis::ComputeV1::InterconnectLocation::Representation
          command.response_class = Google::Apis::ComputeV1::InterconnectLocation
          command.params['project'] = project unless project.nil?
          command.params['interconnectLocation'] = interconnect_location unless interconnect_location.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of interconnect locations available to the specified
        # project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InterconnectLocationList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InterconnectLocationList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_interconnect_locations(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/interconnectLocations', options)
          command.response_representation = Google::Apis::ComputeV1::InterconnectLocationList::Representation
          command.response_class = Google::Apis::ComputeV1::InterconnectLocationList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the details for the specified interconnect remote location. Gets a
        # list of available interconnect remote locations by making alist() request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] interconnect_remote_location
        #   Name of the interconnect remote location to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InterconnectRemoteLocation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InterconnectRemoteLocation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_interconnect_remote_location(project, interconnect_remote_location, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/interconnectRemoteLocations/{interconnectRemoteLocation}', options)
          command.response_representation = Google::Apis::ComputeV1::InterconnectRemoteLocation::Representation
          command.response_class = Google::Apis::ComputeV1::InterconnectRemoteLocation
          command.params['project'] = project unless project.nil?
          command.params['interconnectRemoteLocation'] = interconnect_remote_location unless interconnect_remote_location.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of interconnect remote locations available to the
        # specified project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InterconnectRemoteLocationList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InterconnectRemoteLocationList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_interconnect_remote_locations(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/interconnectRemoteLocations', options)
          command.response_representation = Google::Apis::ComputeV1::InterconnectRemoteLocationList::Representation
          command.response_class = Google::Apis::ComputeV1::InterconnectRemoteLocationList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified Interconnect.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] interconnect
        #   Name of the interconnect to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_interconnect(project, interconnect, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/global/interconnects/{interconnect}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['interconnect'] = interconnect unless interconnect.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified Interconnect. Get a list of available Interconnects
        # by making a list() request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] interconnect
        #   Name of the interconnect to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Interconnect] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Interconnect]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_interconnect(project, interconnect, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/interconnects/{interconnect}', options)
          command.response_representation = Google::Apis::ComputeV1::Interconnect::Representation
          command.response_class = Google::Apis::ComputeV1::Interconnect
          command.params['project'] = project unless project.nil?
          command.params['interconnect'] = interconnect unless interconnect.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the interconnectDiagnostics for the specified
        # Interconnect.
        # In the event of a
        # global outage, do not use this API to make decisions about where to
        # redirect your network traffic.
        # Unlike a VLAN attachment, which is regional, a Cloud Interconnect
        # connection is a global resource. A global outage can prevent this
        # API from functioning properly.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] interconnect
        #   Name of the interconnect resource to query.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InterconnectsGetDiagnosticsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InterconnectsGetDiagnosticsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_interconnect_diagnostics(project, interconnect, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/interconnects/{interconnect}/getDiagnostics', options)
          command.response_representation = Google::Apis::ComputeV1::InterconnectsGetDiagnosticsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::InterconnectsGetDiagnosticsResponse
          command.params['project'] = project unless project.nil?
          command.params['interconnect'] = interconnect unless interconnect.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the interconnectMacsecConfig for the specified
        # Interconnect.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] interconnect
        #   Name of the interconnect resource to query.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InterconnectsGetMacsecConfigResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InterconnectsGetMacsecConfigResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_interconnect_macsec_config(project, interconnect, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/interconnects/{interconnect}/getMacsecConfig', options)
          command.response_representation = Google::Apis::ComputeV1::InterconnectsGetMacsecConfigResponse::Representation
          command.response_class = Google::Apis::ComputeV1::InterconnectsGetMacsecConfigResponse
          command.params['project'] = project unless project.nil?
          command.params['interconnect'] = interconnect unless interconnect.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates an Interconnect in the specified project using
        # the data included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::Interconnect] interconnect_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_interconnect(project, interconnect_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/interconnects', options)
          command.request_representation = Google::Apis::ComputeV1::Interconnect::Representation
          command.request_object = interconnect_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of Interconnects available to the specified project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InterconnectList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InterconnectList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_interconnects(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/interconnects', options)
          command.response_representation = Google::Apis::ComputeV1::InterconnectList::Representation
          command.response_class = Google::Apis::ComputeV1::InterconnectList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates the specified Interconnect with the data included in the request.
        # This method supportsPATCH
        # semantics and uses theJSON merge
        # patch format and processing rules.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] interconnect
        #   Name of the interconnect to update.
        # @param [Google::Apis::ComputeV1::Interconnect] interconnect_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_interconnect(project, interconnect, interconnect_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/global/interconnects/{interconnect}', options)
          command.request_representation = Google::Apis::ComputeV1::Interconnect::Representation
          command.request_object = interconnect_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['interconnect'] = interconnect unless interconnect.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the labels on an Interconnect. To learn more about labels,
        # read the Labeling
        # Resources documentation.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::GlobalSetLabelsRequest] global_set_labels_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_interconnect_labels(project, resource, global_set_labels_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/interconnects/{resource}/setLabels', options)
          command.request_representation = Google::Apis::ComputeV1::GlobalSetLabelsRequest::Representation
          command.request_object = global_set_labels_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Return a specified license code. License codes are mirrored across
        # all projects that have permissions to read the License Code.
        # *Caution* This resource is intended
        # for use only by third-party partners who are creatingCloud Marketplace
        # images.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] license_code
        #   Number corresponding to the License code resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::LicenseCode] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::LicenseCode]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_license_code(project, license_code, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/licenseCodes/{licenseCode}', options)
          command.response_representation = Google::Apis::ComputeV1::LicenseCode::Representation
          command.response_class = Google::Apis::ComputeV1::LicenseCode
          command.params['project'] = project unless project.nil?
          command.params['licenseCode'] = license_code unless license_code.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # *Caution* This resource is intended
        # for use only by third-party partners who are creatingCloud Marketplace
        # images.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_license_code_iam_permissions(project, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/licenseCodes/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified license.
        # *Caution* This resource is intended
        # for use only by third-party partners who are creatingCloud Marketplace
        # images.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] license
        #   Name of the license resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_license(project, license, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/global/licenses/{license}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['license'] = license unless license.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified License resource.
        # *Caution* This resource is intended
        # for use only by third-party partners who are creatingCloud Marketplace
        # images.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] license
        #   Name of the License resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::License] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::License]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_license(project, license, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/licenses/{license}', options)
          command.response_representation = Google::Apis::ComputeV1::License::Representation
          command.response_class = Google::Apis::ComputeV1::License
          command.params['project'] = project unless project.nil?
          command.params['license'] = license unless license.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets the access control policy for a resource. May be empty if no such
        # policy or resource exists.
        # *Caution* This resource is intended
        # for use only by third-party partners who are creatingCloud Marketplace
        # images.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Fixnum] options_requested_policy_version
        #   Requested IAM Policy version.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_license_iam_policy(project, resource, options_requested_policy_version: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/licenses/{resource}/getIamPolicy', options)
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['optionsRequestedPolicyVersion'] = options_requested_policy_version unless options_requested_policy_version.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Create a License resource in the specified project.
        # *Caution* This resource is intended
        # for use only by third-party partners who are creatingCloud Marketplace
        # images.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::License] license_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_license(project, license_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/licenses', options)
          command.request_representation = Google::Apis::ComputeV1::License::Representation
          command.request_object = license_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of licenses
        # available in the specified project. This method does not
        # get any licenses that belong to other projects, including licenses attached
        # to publicly-available images, like Debian 9. If you want to get a list of
        # publicly-available licenses, use this method to make a request to the
        # respective image project, such as debian-cloud orwindows-cloud.
        # *Caution* This resource is intended
        # for use only by third-party partners who are creatingCloud Marketplace
        # images.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::LicensesListResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::LicensesListResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_licenses(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/licenses', options)
          command.response_representation = Google::Apis::ComputeV1::LicensesListResponse::Representation
          command.response_class = Google::Apis::ComputeV1::LicensesListResponse
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the access control policy on the specified resource.
        # Replaces any existing policy.
        # *Caution* This resource is intended
        # for use only by third-party partners who are creatingCloud Marketplace
        # images.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::GlobalSetPolicyRequest] global_set_policy_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_license_iam_policy(project, resource, global_set_policy_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/licenses/{resource}/setIamPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::GlobalSetPolicyRequest::Representation
          command.request_object = global_set_policy_request_object
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # *Caution* This resource is intended
        # for use only by third-party partners who are creatingCloud Marketplace
        # images.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_license_iam_permissions(project, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/licenses/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates a License resource in the specified project.
        # *Caution* This resource is intended
        # for use only by third-party partners who are creatingCloud Marketplace
        # images.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] license
        #   The license name for this request.
        # @param [Google::Apis::ComputeV1::License] license_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] update_mask
        #   update_mask indicates fields to be updated as part of this request.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def update_license(project, license, license_object = nil, request_id: nil, update_mask: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/global/licenses/{license}', options)
          command.request_representation = Google::Apis::ComputeV1::License::Representation
          command.request_object = license_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['license'] = license unless license.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['updateMask'] = update_mask unless update_mask.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified machine image. Deleting a machine image is permanent
        # and cannot be undone.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] machine_image
        #   The name of the machine image to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_machine_image(project, machine_image, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/global/machineImages/{machineImage}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['machineImage'] = machine_image unless machine_image.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified machine image.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] machine_image
        #   The name of the machine image.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::MachineImage] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::MachineImage]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_machine_image(project, machine_image, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/machineImages/{machineImage}', options)
          command.response_representation = Google::Apis::ComputeV1::MachineImage::Representation
          command.response_class = Google::Apis::ComputeV1::MachineImage
          command.params['project'] = project unless project.nil?
          command.params['machineImage'] = machine_image unless machine_image.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets the access control policy for a resource. May be empty if no such
        # policy or resource exists.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Fixnum] options_requested_policy_version
        #   Requested IAM Policy version.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_machine_image_iam_policy(project, resource, options_requested_policy_version: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/machineImages/{resource}/getIamPolicy', options)
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['optionsRequestedPolicyVersion'] = options_requested_policy_version unless options_requested_policy_version.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a machine image in the specified project using the
        # data that is included in the request. If you are creating a new machine
        # image to update an existing instance, your new machine image should use the
        # same network or, if applicable, the same subnetwork as the original
        # instance.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::MachineImage] machine_image_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] source_instance
        #   Required. Source instance that is used to create the machine image from.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_machine_image(project, machine_image_object = nil, request_id: nil, source_instance: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/machineImages', options)
          command.request_representation = Google::Apis::ComputeV1::MachineImage::Representation
          command.request_object = machine_image_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['sourceInstance'] = source_instance unless source_instance.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of machine images that are contained within
        # the specified project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::MachineImageList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::MachineImageList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_machine_images(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/machineImages', options)
          command.response_representation = Google::Apis::ComputeV1::MachineImageList::Representation
          command.response_class = Google::Apis::ComputeV1::MachineImageList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the access control policy on the specified resource.
        # Replaces any existing policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::GlobalSetPolicyRequest] global_set_policy_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_machine_image_iam_policy(project, resource, global_set_policy_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/machineImages/{resource}/setIamPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::GlobalSetPolicyRequest::Representation
          command.request_object = global_set_policy_request_object
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the labels on a machine image. To learn more about labels, read
        # theLabeling
        # Resources documentation.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::GlobalSetLabelsRequest] global_set_labels_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_machine_image_labels(project, resource, global_set_labels_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/machineImages/{resource}/setLabels', options)
          command.request_representation = Google::Apis::ComputeV1::GlobalSetLabelsRequest::Representation
          command.request_object = global_set_labels_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_machine_image_iam_permissions(project, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/machineImages/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves an aggregated list of machine types.
        # To prevent failure, Google recommends that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::MachineTypeAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::MachineTypeAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_aggregated_machine_types(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/machineTypes', options)
          command.response_representation = Google::Apis::ComputeV1::MachineTypeAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::MachineTypeAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified machine type.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] machine_type
        #   Name of the machine type to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::MachineType] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::MachineType]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_machine_type(project, zone, machine_type, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/machineTypes/{machineType}', options)
          command.response_representation = Google::Apis::ComputeV1::MachineType::Representation
          command.response_class = Google::Apis::ComputeV1::MachineType
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['machineType'] = machine_type unless machine_type.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of machine types available to the specified
        # project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::MachineTypeList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::MachineTypeList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_machine_types(project, zone, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/machineTypes', options)
          command.response_representation = Google::Apis::ComputeV1::MachineTypeList::Representation
          command.response_class = Google::Apis::ComputeV1::MachineTypeList
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of all NetworkAttachment resources,
        # regional and global, available to the specified project.
        # To prevent failure, Google recommends that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::NetworkAttachmentAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::NetworkAttachmentAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def aggregated_network_attachment_list(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/networkAttachments', options)
          command.response_representation = Google::Apis::ComputeV1::NetworkAttachmentAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::NetworkAttachmentAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified NetworkAttachment in the given scope
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region of this request.
        # @param [String] network_attachment
        #   Name of the NetworkAttachment resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        #   end_interface: MixerMutationRequestBuilder
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_network_attachment(project, region, network_attachment, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/regions/{region}/networkAttachments/{networkAttachment}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['networkAttachment'] = network_attachment unless network_attachment.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified NetworkAttachment resource in the given scope.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region of this request.
        # @param [String] network_attachment
        #   Name of the NetworkAttachment resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::NetworkAttachment] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::NetworkAttachment]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_network_attachment(project, region, network_attachment, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/networkAttachments/{networkAttachment}', options)
          command.response_representation = Google::Apis::ComputeV1::NetworkAttachment::Representation
          command.response_class = Google::Apis::ComputeV1::NetworkAttachment
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['networkAttachment'] = network_attachment unless network_attachment.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets the access control policy for a resource. May be empty if no such
        # policy or resource exists.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Fixnum] options_requested_policy_version
        #   Requested IAM Policy version.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_network_attachment_iam_policy(project, region, resource, options_requested_policy_version: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/networkAttachments/{resource}/getIamPolicy', options)
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['optionsRequestedPolicyVersion'] = options_requested_policy_version unless options_requested_policy_version.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a NetworkAttachment in the specified project in the given scope
        # using the parameters that are included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region of this request.
        # @param [Google::Apis::ComputeV1::NetworkAttachment] network_attachment_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        #   end_interface: MixerMutationRequestBuilder
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_network_attachment(project, region, network_attachment_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/networkAttachments', options)
          command.request_representation = Google::Apis::ComputeV1::NetworkAttachment::Representation
          command.request_object = network_attachment_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists the NetworkAttachments for a project in the given scope.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region of this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::NetworkAttachmentList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::NetworkAttachmentList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_network_attachments(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/networkAttachments', options)
          command.response_representation = Google::Apis::ComputeV1::NetworkAttachmentList::Representation
          command.response_class = Google::Apis::ComputeV1::NetworkAttachmentList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches the specified NetworkAttachment resource with the data included in
        # the request. This method supports PATCH
        # semantics and usesJSON merge
        # patch format and processing rules.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] network_attachment
        #   Name of the NetworkAttachment resource to patch.
        # @param [Google::Apis::ComputeV1::NetworkAttachment] network_attachment_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        #   end_interface: MixerMutationRequestBuilder
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_network_attachment(project, region, network_attachment, network_attachment_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/regions/{region}/networkAttachments/{networkAttachment}', options)
          command.request_representation = Google::Apis::ComputeV1::NetworkAttachment::Representation
          command.request_object = network_attachment_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['networkAttachment'] = network_attachment unless network_attachment.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the access control policy on the specified resource.
        # Replaces any existing policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::RegionSetPolicyRequest] region_set_policy_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_network_attachment_iam_policy(project, region, resource, region_set_policy_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/networkAttachments/{resource}/setIamPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::RegionSetPolicyRequest::Representation
          command.request_object = region_set_policy_request_object
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_network_attachment_iam_permissions(project, region, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/networkAttachments/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of all NetworkEdgeSecurityService resources available to
        # the specified project.
        # To prevent failure, Google recommends that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Name of the project scoping this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::NetworkEdgeSecurityServiceAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::NetworkEdgeSecurityServiceAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def aggregated_network_edge_security_service_list(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/networkEdgeSecurityServices', options)
          command.response_representation = Google::Apis::ComputeV1::NetworkEdgeSecurityServiceAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::NetworkEdgeSecurityServiceAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified service.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] network_edge_security_service
        #   Name of the network edge security service to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_network_edge_security_service(project, region, network_edge_security_service, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/regions/{region}/networkEdgeSecurityServices/{networkEdgeSecurityService}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['networkEdgeSecurityService'] = network_edge_security_service unless network_edge_security_service.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets a specified NetworkEdgeSecurityService.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] network_edge_security_service
        #   Name of the network edge security service to get.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::NetworkEdgeSecurityService] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::NetworkEdgeSecurityService]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_network_edge_security_service(project, region, network_edge_security_service, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/networkEdgeSecurityServices/{networkEdgeSecurityService}', options)
          command.response_representation = Google::Apis::ComputeV1::NetworkEdgeSecurityService::Representation
          command.response_class = Google::Apis::ComputeV1::NetworkEdgeSecurityService
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['networkEdgeSecurityService'] = network_edge_security_service unless network_edge_security_service.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a new service in the specified project using the data included in
        # the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [Google::Apis::ComputeV1::NetworkEdgeSecurityService] network_edge_security_service_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [Boolean] validate_only
        #   If true, the request will not be committed.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_network_edge_security_service(project, region, network_edge_security_service_object = nil, request_id: nil, validate_only: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/networkEdgeSecurityServices', options)
          command.request_representation = Google::Apis::ComputeV1::NetworkEdgeSecurityService::Representation
          command.request_object = network_edge_security_service_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['validateOnly'] = validate_only unless validate_only.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches the specified policy with the data included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] network_edge_security_service
        #   Name of the network edge security service to update.
        # @param [Google::Apis::ComputeV1::NetworkEdgeSecurityService] network_edge_security_service_object
        # @param [Array<String>, String] paths
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] update_mask
        #   Indicates fields to be updated as part of this request.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_network_edge_security_service(project, region, network_edge_security_service, network_edge_security_service_object = nil, paths: nil, request_id: nil, update_mask: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/regions/{region}/networkEdgeSecurityServices/{networkEdgeSecurityService}', options)
          command.request_representation = Google::Apis::ComputeV1::NetworkEdgeSecurityService::Representation
          command.request_object = network_edge_security_service_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['networkEdgeSecurityService'] = network_edge_security_service unless network_edge_security_service.nil?
          command.query['paths'] = paths unless paths.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['updateMask'] = update_mask unless update_mask.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of network endpoint groups and sorts them by zone.
        # To prevent failure, Google recommends that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::NetworkEndpointGroupAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::NetworkEndpointGroupAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def aggregated_network_endpoint_group_list(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/networkEndpointGroups', options)
          command.response_representation = Google::Apis::ComputeV1::NetworkEndpointGroupAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::NetworkEndpointGroupAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Attach a list of network endpoints to the specified network endpoint group.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone where
        #   the network endpoint group is located. It should comply with RFC1035.
        # @param [String] network_endpoint_group
        #   The name of the network endpoint group where you are attaching network
        #   endpoints to. It should comply with RFC1035.
        # @param [Google::Apis::ComputeV1::NetworkEndpointGroupsAttachEndpointsRequest] network_endpoint_groups_attach_endpoints_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def attach_network_endpoint_group_network_endpoints(project, zone, network_endpoint_group, network_endpoint_groups_attach_endpoints_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/networkEndpointGroups/{networkEndpointGroup}/attachNetworkEndpoints', options)
          command.request_representation = Google::Apis::ComputeV1::NetworkEndpointGroupsAttachEndpointsRequest::Representation
          command.request_object = network_endpoint_groups_attach_endpoints_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['networkEndpointGroup'] = network_endpoint_group unless network_endpoint_group.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified network endpoint group. The network endpoints in the
        # NEG and the VM instances they belong to are not terminated when the NEG is
        # deleted. Note that the NEG cannot be deleted if there are backend services
        # referencing it.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone where
        #   the network endpoint group is located. It should comply with RFC1035.
        # @param [String] network_endpoint_group
        #   The name of the network endpoint group to delete. It should comply with
        #   RFC1035.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_network_endpoint_group(project, zone, network_endpoint_group, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/zones/{zone}/networkEndpointGroups/{networkEndpointGroup}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['networkEndpointGroup'] = network_endpoint_group unless network_endpoint_group.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Detach a list of network endpoints from the specified network endpoint
        # group.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone where
        #   the network endpoint group is located. It should comply with RFC1035.
        # @param [String] network_endpoint_group
        #   The name of the network endpoint group where you are removing network
        #   endpoints. It should comply with RFC1035.
        # @param [Google::Apis::ComputeV1::NetworkEndpointGroupsDetachEndpointsRequest] network_endpoint_groups_detach_endpoints_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def detach_network_endpoint_group_network_endpoints(project, zone, network_endpoint_group, network_endpoint_groups_detach_endpoints_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/networkEndpointGroups/{networkEndpointGroup}/detachNetworkEndpoints', options)
          command.request_representation = Google::Apis::ComputeV1::NetworkEndpointGroupsDetachEndpointsRequest::Representation
          command.request_object = network_endpoint_groups_detach_endpoints_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['networkEndpointGroup'] = network_endpoint_group unless network_endpoint_group.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified network endpoint group.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone where
        #   the network endpoint group is located. It should comply with RFC1035.
        # @param [String] network_endpoint_group
        #   The name of the network endpoint group. It should comply with RFC1035.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::NetworkEndpointGroup] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::NetworkEndpointGroup]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_network_endpoint_group(project, zone, network_endpoint_group, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/networkEndpointGroups/{networkEndpointGroup}', options)
          command.response_representation = Google::Apis::ComputeV1::NetworkEndpointGroup::Representation
          command.response_class = Google::Apis::ComputeV1::NetworkEndpointGroup
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['networkEndpointGroup'] = network_endpoint_group unless network_endpoint_group.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a network endpoint group in the specified project using the
        # parameters that are included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone where
        #   you want to create the network endpoint group. It should comply with
        #   RFC1035.
        # @param [Google::Apis::ComputeV1::NetworkEndpointGroup] network_endpoint_group_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_network_endpoint_group(project, zone, network_endpoint_group_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/networkEndpointGroups', options)
          command.request_representation = Google::Apis::ComputeV1::NetworkEndpointGroup::Representation
          command.request_object = network_endpoint_group_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of network endpoint groups that are located in the
        # specified project and zone.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of thezone
        #   where the network endpoint group is located. It should comply with RFC1035.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::NetworkEndpointGroupList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::NetworkEndpointGroupList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_network_endpoint_groups(project, zone, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/networkEndpointGroups', options)
          command.response_representation = Google::Apis::ComputeV1::NetworkEndpointGroupList::Representation
          command.response_class = Google::Apis::ComputeV1::NetworkEndpointGroupList
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists the network endpoints in the specified network endpoint group.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone where
        #   the network endpoint group is located. It should comply with RFC1035.
        # @param [String] network_endpoint_group
        #   The name of the network endpoint group from which you want to generate a
        #   list of included network endpoints. It should comply with RFC1035.
        # @param [Google::Apis::ComputeV1::NetworkEndpointGroupsListEndpointsRequest] network_endpoint_groups_list_endpoints_request_object
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::NetworkEndpointGroupsListNetworkEndpoints] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::NetworkEndpointGroupsListNetworkEndpoints]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_network_endpoint_group_network_endpoints(project, zone, network_endpoint_group, network_endpoint_groups_list_endpoints_request_object = nil, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/networkEndpointGroups/{networkEndpointGroup}/listNetworkEndpoints', options)
          command.request_representation = Google::Apis::ComputeV1::NetworkEndpointGroupsListEndpointsRequest::Representation
          command.request_object = network_endpoint_groups_list_endpoints_request_object
          command.response_representation = Google::Apis::ComputeV1::NetworkEndpointGroupsListNetworkEndpoints::Representation
          command.response_class = Google::Apis::ComputeV1::NetworkEndpointGroupsListNetworkEndpoints
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['networkEndpointGroup'] = network_endpoint_group unless network_endpoint_group.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_network_endpoint_group_iam_permissions(project, zone, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/networkEndpointGroups/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Inserts an association for the specified firewall policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] firewall_policy
        #   Name of the firewall policy to update.
        # @param [Google::Apis::ComputeV1::FirewallPolicyAssociation] firewall_policy_association_object
        # @param [Boolean] replace_existing_association
        #   Indicates whether or not to replace it if an association of the attachment
        #   already exists. This is false by default, in which case an error will be
        #   returned if an association already exists.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def add_network_firewall_policy_association(project, firewall_policy, firewall_policy_association_object = nil, replace_existing_association: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/firewallPolicies/{firewallPolicy}/addAssociation', options)
          command.request_representation = Google::Apis::ComputeV1::FirewallPolicyAssociation::Representation
          command.request_object = firewall_policy_association_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['replaceExistingAssociation'] = replace_existing_association unless replace_existing_association.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Inserts a packet mirroring rule into a firewall policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] firewall_policy
        #   Name of the firewall policy to update.
        # @param [Google::Apis::ComputeV1::FirewallPolicyRule] firewall_policy_rule_object
        # @param [Fixnum] max_priority
        #   When rule.priority is not specified, auto choose a unused priority
        #   betweenminPriority and maxPriority>.
        #   This field is exclusive with rule.priority.
        # @param [Fixnum] min_priority
        #   When rule.priority is not specified, auto choose a unused priority
        #   betweenminPriority and maxPriority>.
        #   This field is exclusive with rule.priority.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def add_network_firewall_policy_packet_mirroring_rule(project, firewall_policy, firewall_policy_rule_object = nil, max_priority: nil, min_priority: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/firewallPolicies/{firewallPolicy}/addPacketMirroringRule', options)
          command.request_representation = Google::Apis::ComputeV1::FirewallPolicyRule::Representation
          command.request_object = firewall_policy_rule_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['maxPriority'] = max_priority unless max_priority.nil?
          command.query['minPriority'] = min_priority unless min_priority.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Inserts a rule into a firewall policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] firewall_policy
        #   Name of the firewall policy to update.
        # @param [Google::Apis::ComputeV1::FirewallPolicyRule] firewall_policy_rule_object
        # @param [Fixnum] max_priority
        #   When rule.priority is not specified, auto choose a unused priority
        #   betweenminPriority and maxPriority>.
        #   This field is exclusive with rule.priority.
        # @param [Fixnum] min_priority
        #   When rule.priority is not specified, auto choose a unused priority
        #   betweenminPriority and maxPriority>.
        #   This field is exclusive with rule.priority.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def add_network_firewall_policy_rule(project, firewall_policy, firewall_policy_rule_object = nil, max_priority: nil, min_priority: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/firewallPolicies/{firewallPolicy}/addRule', options)
          command.request_representation = Google::Apis::ComputeV1::FirewallPolicyRule::Representation
          command.request_object = firewall_policy_rule_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['maxPriority'] = max_priority unless max_priority.nil?
          command.query['minPriority'] = min_priority unless min_priority.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves an aggregated list of network firewall policies, listing network
        # firewall policies from all applicable scopes (global and regional) and
        # grouping the results per scope.
        # To prevent failure, it is recommended that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::NetworkFirewallPolicyAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::NetworkFirewallPolicyAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def aggregated_network_firewall_policy_list(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/firewallPolicies', options)
          command.response_representation = Google::Apis::ComputeV1::NetworkFirewallPolicyAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::NetworkFirewallPolicyAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Copies rules to the specified firewall policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] firewall_policy
        #   Name of the firewall policy to update.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] source_firewall_policy
        #   The firewall policy from which to copy rules.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def clone_network_firewall_policy_rules(project, firewall_policy, request_id: nil, source_firewall_policy: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/firewallPolicies/{firewallPolicy}/cloneRules', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['sourceFirewallPolicy'] = source_firewall_policy unless source_firewall_policy.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] firewall_policy
        #   Name of the firewall policy to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_network_firewall_policy(project, firewall_policy, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/global/firewallPolicies/{firewallPolicy}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified network firewall policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] firewall_policy
        #   Name of the firewall policy to get.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::FirewallPolicy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::FirewallPolicy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_network_firewall_policy(project, firewall_policy, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/firewallPolicies/{firewallPolicy}', options)
          command.response_representation = Google::Apis::ComputeV1::FirewallPolicy::Representation
          command.response_class = Google::Apis::ComputeV1::FirewallPolicy
          command.params['project'] = project unless project.nil?
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets an association with the specified name.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] firewall_policy
        #   Name of the firewall policy to which the queried association belongs.
        # @param [String] name
        #   The name of the association to get from the firewall policy.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::FirewallPolicyAssociation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::FirewallPolicyAssociation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_network_firewall_policy_association(project, firewall_policy, name: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/firewallPolicies/{firewallPolicy}/getAssociation', options)
          command.response_representation = Google::Apis::ComputeV1::FirewallPolicyAssociation::Representation
          command.response_class = Google::Apis::ComputeV1::FirewallPolicyAssociation
          command.params['project'] = project unless project.nil?
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['name'] = name unless name.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets the access control policy for a resource. May be empty if no such
        # policy or resource exists.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Fixnum] options_requested_policy_version
        #   Requested IAM Policy version.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_network_firewall_policy_iam_policy(project, resource, options_requested_policy_version: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/firewallPolicies/{resource}/getIamPolicy', options)
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['optionsRequestedPolicyVersion'] = options_requested_policy_version unless options_requested_policy_version.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets a packet mirroring rule of the specified priority.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] firewall_policy
        #   Name of the firewall policy to which the queried rule belongs.
        # @param [Fixnum] priority
        #   The priority of the rule to get from the firewall policy.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::FirewallPolicyRule] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::FirewallPolicyRule]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_network_firewall_policy_packet_mirroring_rule(project, firewall_policy, priority: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/firewallPolicies/{firewallPolicy}/getPacketMirroringRule', options)
          command.response_representation = Google::Apis::ComputeV1::FirewallPolicyRule::Representation
          command.response_class = Google::Apis::ComputeV1::FirewallPolicyRule
          command.params['project'] = project unless project.nil?
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['priority'] = priority unless priority.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets a rule of the specified priority.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] firewall_policy
        #   Name of the firewall policy to which the queried rule belongs.
        # @param [Fixnum] priority
        #   The priority of the rule to get from the firewall policy.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::FirewallPolicyRule] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::FirewallPolicyRule]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_network_firewall_policy_rule(project, firewall_policy, priority: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/firewallPolicies/{firewallPolicy}/getRule', options)
          command.response_representation = Google::Apis::ComputeV1::FirewallPolicyRule::Representation
          command.response_class = Google::Apis::ComputeV1::FirewallPolicyRule
          command.params['project'] = project unless project.nil?
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['priority'] = priority unless priority.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a new policy in the specified project using the data included in
        # the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::FirewallPolicy] firewall_policy_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_network_firewall_policy(project, firewall_policy_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/firewallPolicies', options)
          command.request_representation = Google::Apis::ComputeV1::FirewallPolicy::Representation
          command.request_object = firewall_policy_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists all the policies that have been configured for the specified project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::FirewallPolicyList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::FirewallPolicyList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_network_firewall_policies(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/firewallPolicies', options)
          command.response_representation = Google::Apis::ComputeV1::FirewallPolicyList::Representation
          command.response_class = Google::Apis::ComputeV1::FirewallPolicyList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches the specified policy with the data included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] firewall_policy
        #   Name of the firewall policy to update.
        # @param [Google::Apis::ComputeV1::FirewallPolicy] firewall_policy_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_network_firewall_policy(project, firewall_policy, firewall_policy_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/global/firewallPolicies/{firewallPolicy}', options)
          command.request_representation = Google::Apis::ComputeV1::FirewallPolicy::Representation
          command.request_object = firewall_policy_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches a packet mirroring rule of the specified priority.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] firewall_policy
        #   Name of the firewall policy to update.
        # @param [Google::Apis::ComputeV1::FirewallPolicyRule] firewall_policy_rule_object
        # @param [Fixnum] priority
        #   The priority of the rule to patch.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_network_firewall_policy_packet_mirroring_rule(project, firewall_policy, firewall_policy_rule_object = nil, priority: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/firewallPolicies/{firewallPolicy}/patchPacketMirroringRule', options)
          command.request_representation = Google::Apis::ComputeV1::FirewallPolicyRule::Representation
          command.request_object = firewall_policy_rule_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['priority'] = priority unless priority.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches a rule of the specified priority.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] firewall_policy
        #   Name of the firewall policy to update.
        # @param [Google::Apis::ComputeV1::FirewallPolicyRule] firewall_policy_rule_object
        # @param [Fixnum] priority
        #   The priority of the rule to patch.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_network_firewall_policy_rule(project, firewall_policy, firewall_policy_rule_object = nil, priority: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/firewallPolicies/{firewallPolicy}/patchRule', options)
          command.request_representation = Google::Apis::ComputeV1::FirewallPolicyRule::Representation
          command.request_object = firewall_policy_rule_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['priority'] = priority unless priority.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Removes an association for the specified firewall policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] firewall_policy
        #   Name of the firewall policy to update.
        # @param [String] name
        #   Name for the attachment that will be removed.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def remove_network_firewall_policy_association(project, firewall_policy, name: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/firewallPolicies/{firewallPolicy}/removeAssociation', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['name'] = name unless name.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes a packet mirroring rule of the specified priority.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] firewall_policy
        #   Name of the firewall policy to update.
        # @param [Fixnum] priority
        #   The priority of the rule to remove from the firewall policy.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def remove_network_firewall_policy_packet_mirroring_rule(project, firewall_policy, priority: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/firewallPolicies/{firewallPolicy}/removePacketMirroringRule', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['priority'] = priority unless priority.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes a rule of the specified priority.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] firewall_policy
        #   Name of the firewall policy to update.
        # @param [Fixnum] priority
        #   The priority of the rule to remove from the firewall policy.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def remove_network_firewall_policy_rule(project, firewall_policy, priority: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/firewallPolicies/{firewallPolicy}/removeRule', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['priority'] = priority unless priority.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the access control policy on the specified resource.
        # Replaces any existing policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::GlobalSetPolicyRequest] global_set_policy_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_network_firewall_policy_iam_policy(project, resource, global_set_policy_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/firewallPolicies/{resource}/setIamPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::GlobalSetPolicyRequest::Representation
          command.request_object = global_set_policy_request_object
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_network_firewall_policy_iam_permissions(project, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/firewallPolicies/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified network profile.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] network_profile
        #   Name of the network profile to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::NetworkProfile] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::NetworkProfile]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_network_profile(project, network_profile, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/networkProfiles/{networkProfile}', options)
          command.response_representation = Google::Apis::ComputeV1::NetworkProfile::Representation
          command.response_class = Google::Apis::ComputeV1::NetworkProfile
          command.params['project'] = project unless project.nil?
          command.params['networkProfile'] = network_profile unless network_profile.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of network profiles available to the specified
        # project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::NetworkProfilesListResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::NetworkProfilesListResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_network_profiles(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/networkProfiles', options)
          command.response_representation = Google::Apis::ComputeV1::NetworkProfilesListResponse::Representation
          command.response_class = Google::Apis::ComputeV1::NetworkProfilesListResponse
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Adds a peering to the specified network.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] network
        #   Name of the network resource to add peering to.
        # @param [Google::Apis::ComputeV1::NetworksAddPeeringRequest] networks_add_peering_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def add_network_peering(project, network, networks_add_peering_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/networks/{network}/addPeering', options)
          command.request_representation = Google::Apis::ComputeV1::NetworksAddPeeringRequest::Representation
          command.request_object = networks_add_peering_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['network'] = network unless network.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified network.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] network
        #   Name of the network to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_network(project, network, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/global/networks/{network}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['network'] = network unless network.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified network.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] network
        #   Name of the network to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Network] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Network]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_network(project, network, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/networks/{network}', options)
          command.response_representation = Google::Apis::ComputeV1::Network::Representation
          command.response_class = Google::Apis::ComputeV1::Network
          command.params['project'] = project unless project.nil?
          command.params['network'] = network unless network.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the effective firewalls on a given network.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] network
        #   Name of the network for this request.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::NetworksGetEffectiveFirewallsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::NetworksGetEffectiveFirewallsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_network_effective_firewalls(project, network, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/networks/{network}/getEffectiveFirewalls', options)
          command.response_representation = Google::Apis::ComputeV1::NetworksGetEffectiveFirewallsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::NetworksGetEffectiveFirewallsResponse
          command.params['project'] = project unless project.nil?
          command.params['network'] = network unless network.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a network in the specified project using the data included
        # in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::Network] network_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_network(project, network_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/networks', options)
          command.request_representation = Google::Apis::ComputeV1::Network::Representation
          command.request_object = network_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of networks available to the specified project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::NetworkList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::NetworkList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_networks(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/networks', options)
          command.response_representation = Google::Apis::ComputeV1::NetworkList::Representation
          command.response_class = Google::Apis::ComputeV1::NetworkList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists the peering routes exchanged over peering connection.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] network
        #   Name of the network for this request.
        # @param [String] direction
        #   The direction of the exchanged routes.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [String] peering_name
        #   The response will show routes exchanged over the given peering connection.
        # @param [String] region
        #   The region of the request. The response will include all subnet routes,
        #   static routes and dynamic routes in the region.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::ExchangedPeeringRoutesList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::ExchangedPeeringRoutesList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_network_peering_routes(project, network, direction: nil, filter: nil, max_results: nil, order_by: nil, page_token: nil, peering_name: nil, region: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/networks/{network}/listPeeringRoutes', options)
          command.response_representation = Google::Apis::ComputeV1::ExchangedPeeringRoutesList::Representation
          command.response_class = Google::Apis::ComputeV1::ExchangedPeeringRoutesList
          command.params['project'] = project unless project.nil?
          command.params['network'] = network unless network.nil?
          command.query['direction'] = direction unless direction.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['peeringName'] = peering_name unless peering_name.nil?
          command.query['region'] = region unless region.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches the specified network with the data included in the request.
        # Only routingConfig can be modified.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] network
        #   Name of the network to update.
        # @param [Google::Apis::ComputeV1::Network] network_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_network(project, network, network_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/global/networks/{network}', options)
          command.request_representation = Google::Apis::ComputeV1::Network::Representation
          command.request_object = network_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['network'] = network unless network.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Removes a peering from the specified network.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] network
        #   Name of the network resource to remove peering from.
        # @param [Google::Apis::ComputeV1::NetworksRemovePeeringRequest] networks_remove_peering_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def remove_network_peering(project, network, networks_remove_peering_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/networks/{network}/removePeering', options)
          command.request_representation = Google::Apis::ComputeV1::NetworksRemovePeeringRequest::Representation
          command.request_object = networks_remove_peering_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['network'] = network unless network.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Requests to remove a peering from the specified network. Applicable only
        # for PeeringConnection with update_strategy=CONSENSUS.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] network
        #   Name of the network resource to remove peering from.
        # @param [Google::Apis::ComputeV1::NetworksRequestRemovePeeringRequest] networks_request_remove_peering_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def request_network_remove_peering(project, network, networks_request_remove_peering_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/networks/{network}/requestRemovePeering', options)
          command.request_representation = Google::Apis::ComputeV1::NetworksRequestRemovePeeringRequest::Representation
          command.request_object = networks_request_remove_peering_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['network'] = network unless network.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Switches the network mode from auto subnet mode to custom subnet mode.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] network
        #   Name of the network to be updated.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def switch_network_to_custom_mode(project, network, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/networks/{network}/switchToCustomMode', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['network'] = network unless network.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates the specified network peering with the data included in the
        # request. You can only modify the NetworkPeering.export_custom_routes field
        # and the NetworkPeering.import_custom_routes field.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] network
        #   Name of the network resource which the updated peering is belonging to.
        # @param [Google::Apis::ComputeV1::NetworksUpdatePeeringRequest] networks_update_peering_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def update_network_peering(project, network, networks_update_peering_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/global/networks/{network}/updatePeering', options)
          command.request_representation = Google::Apis::ComputeV1::NetworksUpdatePeeringRequest::Representation
          command.request_object = networks_update_peering_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['network'] = network unless network.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Adds specified number of nodes to the node group.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] node_group
        #   Name of the NodeGroup resource.
        # @param [Google::Apis::ComputeV1::NodeGroupsAddNodesRequest] node_groups_add_nodes_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def add_node_group_nodes(project, zone, node_group, node_groups_add_nodes_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/nodeGroups/{nodeGroup}/addNodes', options)
          command.request_representation = Google::Apis::ComputeV1::NodeGroupsAddNodesRequest::Representation
          command.request_object = node_groups_add_nodes_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['nodeGroup'] = node_group unless node_group.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves an aggregated list of node groups.
        # Note: use nodeGroups.listNodes for more details about each group.
        # To prevent failure, Google recommends that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::NodeGroupAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::NodeGroupAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def aggregated_node_group_list(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/nodeGroups', options)
          command.response_representation = Google::Apis::ComputeV1::NodeGroupAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::NodeGroupAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified NodeGroup resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] node_group
        #   Name of the NodeGroup resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_node_group(project, zone, node_group, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/zones/{zone}/nodeGroups/{nodeGroup}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['nodeGroup'] = node_group unless node_group.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes specified nodes from the node group.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] node_group
        #   Name of the NodeGroup resource whose nodes will be deleted.
        # @param [Google::Apis::ComputeV1::NodeGroupsDeleteNodesRequest] node_groups_delete_nodes_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_node_group_nodes(project, zone, node_group, node_groups_delete_nodes_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/nodeGroups/{nodeGroup}/deleteNodes', options)
          command.request_representation = Google::Apis::ComputeV1::NodeGroupsDeleteNodesRequest::Representation
          command.request_object = node_groups_delete_nodes_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['nodeGroup'] = node_group unless node_group.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified NodeGroup. Get a list of available NodeGroups
        # by making a list() request.
        # Note: the "nodes" field should not be used. Use nodeGroups.listNodes
        # instead.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] node_group
        #   Name of the node group to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::NodeGroup] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::NodeGroup]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_node_group(project, zone, node_group, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/nodeGroups/{nodeGroup}', options)
          command.response_representation = Google::Apis::ComputeV1::NodeGroup::Representation
          command.response_class = Google::Apis::ComputeV1::NodeGroup
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['nodeGroup'] = node_group unless node_group.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets the access control policy for a resource. May be empty if no such
        # policy or resource exists.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Fixnum] options_requested_policy_version
        #   Requested IAM Policy version.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_node_group_iam_policy(project, zone, resource, options_requested_policy_version: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/nodeGroups/{resource}/getIamPolicy', options)
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['optionsRequestedPolicyVersion'] = options_requested_policy_version unless options_requested_policy_version.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a NodeGroup resource in the specified project using the data
        # included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [Fixnum] initial_node_count
        #   Initial count of nodes in the node group.
        # @param [Google::Apis::ComputeV1::NodeGroup] node_group_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_node_group(project, zone, initial_node_count, node_group_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/nodeGroups', options)
          command.request_representation = Google::Apis::ComputeV1::NodeGroup::Representation
          command.request_object = node_group_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['initialNodeCount'] = initial_node_count unless initial_node_count.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of node groups available to the specified project.
        # Note: use nodeGroups.listNodes for more details about each group.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::NodeGroupList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::NodeGroupList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_node_groups(project, zone, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/nodeGroups', options)
          command.response_representation = Google::Apis::ComputeV1::NodeGroupList::Representation
          command.response_class = Google::Apis::ComputeV1::NodeGroupList
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists nodes in the node group.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] node_group
        #   Name of the NodeGroup resource whose nodes you want to list.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::NodeGroupsListNodes] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::NodeGroupsListNodes]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_node_group_nodes(project, zone, node_group, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/nodeGroups/{nodeGroup}/listNodes', options)
          command.response_representation = Google::Apis::ComputeV1::NodeGroupsListNodes::Representation
          command.response_class = Google::Apis::ComputeV1::NodeGroupsListNodes
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['nodeGroup'] = node_group unless node_group.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates the specified node group.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] node_group
        #   Name of the NodeGroup resource to update.
        # @param [Google::Apis::ComputeV1::NodeGroup] node_group_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_node_group(project, zone, node_group, node_group_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/zones/{zone}/nodeGroups/{nodeGroup}', options)
          command.request_representation = Google::Apis::ComputeV1::NodeGroup::Representation
          command.request_object = node_group_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['nodeGroup'] = node_group unless node_group.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Perform maintenance on a subset of nodes in the node group.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] node_group
        #   Name of the node group scoping this request.
        # @param [Google::Apis::ComputeV1::NodeGroupsPerformMaintenanceRequest] node_groups_perform_maintenance_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def perform_node_group_maintenance(project, zone, node_group, node_groups_perform_maintenance_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/nodeGroups/{nodeGroup}/performMaintenance', options)
          command.request_representation = Google::Apis::ComputeV1::NodeGroupsPerformMaintenanceRequest::Representation
          command.request_object = node_groups_perform_maintenance_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['nodeGroup'] = node_group unless node_group.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the access control policy on the specified resource.
        # Replaces any existing policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::ZoneSetPolicyRequest] zone_set_policy_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_node_group_iam_policy(project, zone, resource, zone_set_policy_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/nodeGroups/{resource}/setIamPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::ZoneSetPolicyRequest::Representation
          command.request_object = zone_set_policy_request_object
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates the node template of the node group.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] node_group
        #   Name of the NodeGroup resource to update.
        # @param [Google::Apis::ComputeV1::NodeGroupsSetNodeTemplateRequest] node_groups_set_node_template_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_node_group_node_template(project, zone, node_group, node_groups_set_node_template_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/nodeGroups/{nodeGroup}/setNodeTemplate', options)
          command.request_representation = Google::Apis::ComputeV1::NodeGroupsSetNodeTemplateRequest::Representation
          command.request_object = node_groups_set_node_template_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['nodeGroup'] = node_group unless node_group.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Simulates maintenance event on specified nodes from the node group.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] node_group
        #   Name of the NodeGroup resource whose nodes will go under maintenance
        #   simulation.
        # @param [Google::Apis::ComputeV1::NodeGroupsSimulateMaintenanceEventRequest] node_groups_simulate_maintenance_event_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def simulate_node_group_maintenance_event(project, zone, node_group, node_groups_simulate_maintenance_event_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/nodeGroups/{nodeGroup}/simulateMaintenanceEvent', options)
          command.request_representation = Google::Apis::ComputeV1::NodeGroupsSimulateMaintenanceEventRequest::Representation
          command.request_object = node_groups_simulate_maintenance_event_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['nodeGroup'] = node_group unless node_group.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_node_group_iam_permissions(project, zone, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/nodeGroups/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves an aggregated list of node templates.
        # To prevent failure, Google recommends that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::NodeTemplateAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::NodeTemplateAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def aggregated_node_template_list(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/nodeTemplates', options)
          command.response_representation = Google::Apis::ComputeV1::NodeTemplateAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::NodeTemplateAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified NodeTemplate resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] node_template
        #   Name of the NodeTemplate resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_node_template(project, region, node_template, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/regions/{region}/nodeTemplates/{nodeTemplate}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['nodeTemplate'] = node_template unless node_template.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified node template.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] node_template
        #   Name of the node template to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::NodeTemplate] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::NodeTemplate]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_node_template(project, region, node_template, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/nodeTemplates/{nodeTemplate}', options)
          command.response_representation = Google::Apis::ComputeV1::NodeTemplate::Representation
          command.response_class = Google::Apis::ComputeV1::NodeTemplate
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['nodeTemplate'] = node_template unless node_template.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets the access control policy for a resource. May be empty if no such
        # policy or resource exists.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Fixnum] options_requested_policy_version
        #   Requested IAM Policy version.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_node_template_iam_policy(project, region, resource, options_requested_policy_version: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/nodeTemplates/{resource}/getIamPolicy', options)
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['optionsRequestedPolicyVersion'] = options_requested_policy_version unless options_requested_policy_version.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a NodeTemplate resource in the specified project using the data
        # included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [Google::Apis::ComputeV1::NodeTemplate] node_template_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_node_template(project, region, node_template_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/nodeTemplates', options)
          command.request_representation = Google::Apis::ComputeV1::NodeTemplate::Representation
          command.request_object = node_template_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of node templates available to the specified
        # project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::NodeTemplateList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::NodeTemplateList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_node_templates(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/nodeTemplates', options)
          command.response_representation = Google::Apis::ComputeV1::NodeTemplateList::Representation
          command.response_class = Google::Apis::ComputeV1::NodeTemplateList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the access control policy on the specified resource.
        # Replaces any existing policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::RegionSetPolicyRequest] region_set_policy_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_node_template_iam_policy(project, region, resource, region_set_policy_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/nodeTemplates/{resource}/setIamPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::RegionSetPolicyRequest::Representation
          command.request_object = region_set_policy_request_object
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_node_template_iam_permissions(project, region, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/nodeTemplates/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves an aggregated list of node types.
        # To prevent failure, Google recommends that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::NodeTypeAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::NodeTypeAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def aggregated_node_type_list(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/nodeTypes', options)
          command.response_representation = Google::Apis::ComputeV1::NodeTypeAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::NodeTypeAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified node type.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] node_type
        #   Name of the node type to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::NodeType] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::NodeType]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_node_type(project, zone, node_type, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/nodeTypes/{nodeType}', options)
          command.response_representation = Google::Apis::ComputeV1::NodeType::Representation
          command.response_class = Google::Apis::ComputeV1::NodeType
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['nodeType'] = node_type unless node_type.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of node types available to the specified
        # project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::NodeTypeList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::NodeTypeList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_node_types(project, zone, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/nodeTypes', options)
          command.response_representation = Google::Apis::ComputeV1::NodeTypeList::Representation
          command.response_class = Google::Apis::ComputeV1::NodeTypeList
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Inserts an association for the specified security policy.
        # This has billing implications.  Projects in the hierarchy with effective
        # hierarchical security policies will be automatically enrolled into Cloud
        # Armor Enterprise if not already enrolled.
        # Use this API to modify Cloud Armor policies. Previously, alpha and beta
        # versions of this API were used to modify firewall policies. This usage is
        # now disabled for most organizations. Use firewallPolicies.addAssociation
        # instead.
        # @param [String] security_policy
        #   Name of the security policy to update.
        # @param [Google::Apis::ComputeV1::SecurityPolicyAssociation] security_policy_association_object
        # @param [Boolean] replace_existing_association
        #   Indicates whether or not to replace it if an association of the attachment
        #   already exists. This is false by default, in which case an error will be
        #   returned if an association already exists.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def add_organization_security_policy_association(security_policy, security_policy_association_object = nil, replace_existing_association: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'locations/global/securityPolicies/{securityPolicy}/addAssociation', options)
          command.request_representation = Google::Apis::ComputeV1::SecurityPolicyAssociation::Representation
          command.request_object = security_policy_association_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['securityPolicy'] = security_policy unless security_policy.nil?
          command.query['replaceExistingAssociation'] = replace_existing_association unless replace_existing_association.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Inserts a rule into a security policy.
        # Use this API to modify Cloud Armor policies. Previously, alpha and beta
        # versions of this API were used to modify firewall policies. This usage is
        # now disabled for most organizations. Use firewallPolicies.addRule instead.
        # @param [String] security_policy
        #   Name of the security policy to update.
        # @param [Google::Apis::ComputeV1::SecurityPolicyRule] security_policy_rule_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def add_organization_security_policy_rule(security_policy, security_policy_rule_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'locations/global/securityPolicies/{securityPolicy}/addRule', options)
          command.request_representation = Google::Apis::ComputeV1::SecurityPolicyRule::Representation
          command.request_object = security_policy_rule_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['securityPolicy'] = security_policy unless security_policy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Copies rules to the specified security policy.
        # Use this API to modify Cloud Armor policies. Previously, alpha and beta
        # versions of this API were used to modify firewall policies. This usage is
        # now disabled for most organizations. Use firewallPolicies.cloneRules
        # instead.
        # @param [String] security_policy
        #   Name of the security policy to update.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] source_security_policy
        #   The security policy from which to copy rules.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def copy_organization_security_policy_rules(security_policy, request_id: nil, source_security_policy: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'locations/global/securityPolicies/{securityPolicy}/copyRules', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['securityPolicy'] = security_policy unless security_policy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['sourceSecurityPolicy'] = source_security_policy unless source_security_policy.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified policy.
        # Use this API to remove Cloud Armor policies. Previously, alpha and beta
        # versions of this API were used to remove firewall policies. This usage is
        # now disabled for most organizations. Use firewallPolicies.delete instead.
        # @param [String] security_policy
        #   Name of the security policy to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_organization_security_policy(security_policy, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'locations/global/securityPolicies/{securityPolicy}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['securityPolicy'] = security_policy unless security_policy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # List all of the ordered rules present in a single specified policy.
        # Use this API to read Cloud Armor policies. Previously, alpha and beta
        # versions of this API were used to read firewall policies. This usage is now
        # disabled for most organizations. Use firewallPolicies.get instead.
        # @param [String] security_policy
        #   Name of the security policy to get.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::SecurityPolicy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::SecurityPolicy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_organization_security_policy(security_policy, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'locations/global/securityPolicies/{securityPolicy}', options)
          command.response_representation = Google::Apis::ComputeV1::SecurityPolicy::Representation
          command.response_class = Google::Apis::ComputeV1::SecurityPolicy
          command.params['securityPolicy'] = security_policy unless security_policy.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets an association with the specified name.
        # Use this API to read Cloud Armor policies. Previously, alpha and beta
        # versions of this API were used to read firewall policies. This usage is
        # now disabled for most organizations. Use firewallPolicies.getAssociation
        # instead.
        # @param [String] security_policy
        #   Name of the security policy to which the queried rule belongs.
        # @param [String] name
        #   The name of the association to get from the security policy.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::SecurityPolicyAssociation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::SecurityPolicyAssociation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_organization_security_policy_association(security_policy, name: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'locations/global/securityPolicies/{securityPolicy}/getAssociation', options)
          command.response_representation = Google::Apis::ComputeV1::SecurityPolicyAssociation::Representation
          command.response_class = Google::Apis::ComputeV1::SecurityPolicyAssociation
          command.params['securityPolicy'] = security_policy unless security_policy.nil?
          command.query['name'] = name unless name.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets a rule at the specified priority.
        # Use this API to read Cloud Armor policies. Previously, alpha and beta
        # versions of this API were used to read firewall policies. This usage is now
        # disabled for most organizations. Use firewallPolicies.getRule instead.
        # @param [String] security_policy
        #   Name of the security policy to which the queried rule belongs.
        # @param [Fixnum] priority
        #   The priority of the rule to get from the security policy.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::SecurityPolicyRule] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::SecurityPolicyRule]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_organization_security_policy_rule(security_policy, priority: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'locations/global/securityPolicies/{securityPolicy}/getRule', options)
          command.response_representation = Google::Apis::ComputeV1::SecurityPolicyRule::Representation
          command.response_class = Google::Apis::ComputeV1::SecurityPolicyRule
          command.params['securityPolicy'] = security_policy unless security_policy.nil?
          command.query['priority'] = priority unless priority.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a new policy in the specified organization using the data included
        # in the request.
        # Use this API to add Cloud Armor policies. Previously, alpha and beta
        # versions of this API were used to add firewall policies. This usage is now
        # disabled for most organizations. Use firewallPolicies.insert instead.
        # @param [Google::Apis::ComputeV1::SecurityPolicy] security_policy_object
        # @param [String] parent_id
        #   Parent ID for this request. The ID can be either be "folders/[FOLDER_ID]"
        #   if the parent is a folder or "organizations/[ORGANIZATION_ID]" if the
        #   parent is an organization.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_organization_security_policy(security_policy_object = nil, parent_id: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'locations/global/securityPolicies', options)
          command.request_representation = Google::Apis::ComputeV1::SecurityPolicy::Representation
          command.request_object = security_policy_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.query['parentId'] = parent_id unless parent_id.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # List all the policies that have been configured for the specified
        # organization.
        # Use this API to read Cloud Armor policies. Previously, alpha and beta
        # versions of this API were used to read firewall policies. This usage is now
        # disabled for most organizations. Use firewallPolicies.list instead.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [String] parent_id
        #   Parent ID for this request.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::SecurityPolicyList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::SecurityPolicyList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_organization_security_policies(filter: nil, max_results: nil, order_by: nil, page_token: nil, parent_id: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'locations/global/securityPolicies', options)
          command.response_representation = Google::Apis::ComputeV1::SecurityPolicyList::Representation
          command.response_class = Google::Apis::ComputeV1::SecurityPolicyList
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['parentId'] = parent_id unless parent_id.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists associations of a specified target, i.e., organization or folder.
        # Use this API to read Cloud Armor policies. Previously, alpha and beta
        # versions of this API were used to read firewall policies. This usage is
        # now disabled for most organizations. Use firewallPolicies.listAssociations
        # instead.
        # @param [String] target_resource
        #   The target resource to list associations. It is an organization, or a
        #   folder.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::OrganizationSecurityPoliciesListAssociationsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::OrganizationSecurityPoliciesListAssociationsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_organization_security_policy_associations(target_resource: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'locations/global/securityPolicies/listAssociations', options)
          command.response_representation = Google::Apis::ComputeV1::OrganizationSecurityPoliciesListAssociationsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::OrganizationSecurityPoliciesListAssociationsResponse
          command.query['targetResource'] = target_resource unless target_resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets the current list of preconfigured Web Application Firewall (WAF)
        # expressions.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [String] parent_id
        #   Parent ID for this request.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::SecurityPoliciesListPreconfiguredExpressionSetsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::SecurityPoliciesListPreconfiguredExpressionSetsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_organization_security_policy_preconfigured_expression_sets(filter: nil, max_results: nil, order_by: nil, page_token: nil, parent_id: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'locations/global/securityPolicies/listPreconfiguredExpressionSets', options)
          command.response_representation = Google::Apis::ComputeV1::SecurityPoliciesListPreconfiguredExpressionSetsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::SecurityPoliciesListPreconfiguredExpressionSetsResponse
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['parentId'] = parent_id unless parent_id.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Moves the specified security policy.
        # Use this API to modify Cloud Armor policies. Previously, alpha and beta
        # versions of this API were used to modify firewall policies. This usage is
        # now disabled for most organizations. Use firewallPolicies.move instead.
        # @param [String] security_policy
        #   Name of the security policy to update.
        # @param [String] parent_id
        #   The new parent of the security policy.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def move_organization_security_policy(security_policy, parent_id: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'locations/global/securityPolicies/{securityPolicy}/move', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['securityPolicy'] = security_policy unless security_policy.nil?
          command.query['parentId'] = parent_id unless parent_id.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches the specified policy with the data included in the request.
        # Use this API to modify Cloud Armor policies. Previously, alpha and beta
        # versions of this API were used to modify firewall policies. This usage is
        # now disabled for most organizations. Use firewallPolicies.patch instead.
        # @param [String] security_policy
        #   Name of the security policy to update.
        # @param [Google::Apis::ComputeV1::SecurityPolicy] security_policy_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_organization_security_policy(security_policy, security_policy_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'locations/global/securityPolicies/{securityPolicy}', options)
          command.request_representation = Google::Apis::ComputeV1::SecurityPolicy::Representation
          command.request_object = security_policy_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['securityPolicy'] = security_policy unless security_policy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches a rule at the specified priority.
        # Use this API to modify Cloud Armor policies. Previously, alpha and beta
        # versions of this API were used to modify firewall policies. This usage is
        # now disabled for most organizations. Use firewallPolicies.patchRule
        # instead.
        # @param [String] security_policy
        #   Name of the security policy to update.
        # @param [Google::Apis::ComputeV1::SecurityPolicyRule] security_policy_rule_object
        # @param [Fixnum] priority
        #   The priority of the rule to patch.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_organization_security_policy_rule(security_policy, security_policy_rule_object = nil, priority: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'locations/global/securityPolicies/{securityPolicy}/patchRule', options)
          command.request_representation = Google::Apis::ComputeV1::SecurityPolicyRule::Representation
          command.request_object = security_policy_rule_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['securityPolicy'] = security_policy unless security_policy.nil?
          command.query['priority'] = priority unless priority.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Removes an association for the specified security policy.
        # Use this API to modify Cloud Armor policies. Previously, alpha and beta
        # versions of this API were used to modify firewall policies. This usage is
        # now disabled for most organizations. Use firewallPolicies.removeAssociation
        # instead.
        # @param [String] security_policy
        #   Name of the security policy to update.
        # @param [String] name
        #   Name for the attachment that will be removed.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def remove_organization_security_policy_association(security_policy, name: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'locations/global/securityPolicies/{securityPolicy}/removeAssociation', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['securityPolicy'] = security_policy unless security_policy.nil?
          command.query['name'] = name unless name.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes a rule at the specified priority.
        # Use this API to modify Cloud Armor policies. Previously, alpha and beta
        # versions of this API were used to modify firewall policies. This usage is
        # now disabled for most organizations. Use firewallPolicies.removeRule
        # instead.
        # @param [String] security_policy
        #   Name of the security policy to update.
        # @param [Fixnum] priority
        #   The priority of the rule to remove from the security policy.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def remove_organization_security_policy_rule(security_policy, priority: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'locations/global/securityPolicies/{securityPolicy}/removeRule', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['securityPolicy'] = security_policy unless security_policy.nil?
          command.query['priority'] = priority unless priority.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves an aggregated list of packetMirrorings.
        # To prevent failure, Google recommends that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::PacketMirroringAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::PacketMirroringAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def aggregated_packet_mirroring_list(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/packetMirrorings', options)
          command.response_representation = Google::Apis::ComputeV1::PacketMirroringAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::PacketMirroringAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified PacketMirroring resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] packet_mirroring
        #   Name of the PacketMirroring resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_packet_mirroring(project, region, packet_mirroring, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/regions/{region}/packetMirrorings/{packetMirroring}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['packetMirroring'] = packet_mirroring unless packet_mirroring.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified PacketMirroring resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] packet_mirroring
        #   Name of the PacketMirroring resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::PacketMirroring] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::PacketMirroring]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_packet_mirroring(project, region, packet_mirroring, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/packetMirrorings/{packetMirroring}', options)
          command.response_representation = Google::Apis::ComputeV1::PacketMirroring::Representation
          command.response_class = Google::Apis::ComputeV1::PacketMirroring
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['packetMirroring'] = packet_mirroring unless packet_mirroring.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a PacketMirroring resource in the specified project and region
        # using the data included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [Google::Apis::ComputeV1::PacketMirroring] packet_mirroring_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_packet_mirroring(project, region, packet_mirroring_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/packetMirrorings', options)
          command.request_representation = Google::Apis::ComputeV1::PacketMirroring::Representation
          command.request_object = packet_mirroring_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of PacketMirroring resources available to the specified
        # project and region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::PacketMirroringList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::PacketMirroringList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_packet_mirrorings(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/packetMirrorings', options)
          command.response_representation = Google::Apis::ComputeV1::PacketMirroringList::Representation
          command.response_class = Google::Apis::ComputeV1::PacketMirroringList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches the specified PacketMirroring resource with the data included in
        # the request. This method supportsPATCH
        # semantics and usesJSON merge
        # patch format and processing rules.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] packet_mirroring
        #   Name of the PacketMirroring resource to patch.
        # @param [Google::Apis::ComputeV1::PacketMirroring] packet_mirroring_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_packet_mirroring(project, region, packet_mirroring, packet_mirroring_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/regions/{region}/packetMirrorings/{packetMirroring}', options)
          command.request_representation = Google::Apis::ComputeV1::PacketMirroring::Representation
          command.request_object = packet_mirroring_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['packetMirroring'] = packet_mirroring unless packet_mirroring.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_packet_mirroring_iam_permissions(project, region, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/packetMirrorings/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the details of the given PreviewFeature.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] preview_feature
        #   Name of the PreviewFeature for this request.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::PreviewFeature] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::PreviewFeature]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_preview_feature(project, preview_feature, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/previewFeatures/{previewFeature}', options)
          command.response_representation = Google::Apis::ComputeV1::PreviewFeature::Representation
          command.response_class = Google::Apis::ComputeV1::PreviewFeature
          command.params['project'] = project unless project.nil?
          command.params['previewFeature'] = preview_feature unless preview_feature.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the details of the given PreviewFeature.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::PreviewFeatureList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::PreviewFeatureList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_preview_features(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/previewFeatures', options)
          command.response_representation = Google::Apis::ComputeV1::PreviewFeatureList::Representation
          command.response_class = Google::Apis::ComputeV1::PreviewFeatureList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches the given PreviewFeature. This method is used to enable or disable
        # a PreviewFeature.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] preview_feature
        #   Name of the PreviewFeature for this request.
        # @param [Google::Apis::ComputeV1::PreviewFeature] preview_feature_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def update_preview_feature(project, preview_feature, preview_feature_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/global/previewFeatures/{previewFeature}', options)
          command.request_representation = Google::Apis::ComputeV1::PreviewFeature::Representation
          command.request_object = preview_feature_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['previewFeature'] = preview_feature unless preview_feature.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Disable this project as a shared VPC host project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def disable_project_xpn_host(project, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/disableXpnHost', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Disable a service resource (also known as service project) associated with
        # this host project.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::ProjectsDisableXpnResourceRequest] projects_disable_xpn_resource_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def disable_project_xpn_resource(project, projects_disable_xpn_resource_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/disableXpnResource', options)
          command.request_representation = Google::Apis::ComputeV1::ProjectsDisableXpnResourceRequest::Representation
          command.request_object = projects_disable_xpn_resource_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Enable this project as a shared VPC host project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def enable_project_xpn_host(project, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/enableXpnHost', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Enable service resource (a.k.a service project) for a host project, so that
        # subnets in the host project can be used by instances in the service
        # project.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::ProjectsEnableXpnResourceRequest] projects_enable_xpn_resource_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def enable_project_xpn_resource(project, projects_enable_xpn_resource_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/enableXpnResource', options)
          command.request_representation = Google::Apis::ComputeV1::ProjectsEnableXpnResourceRequest::Representation
          command.request_object = projects_enable_xpn_resource_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified Project resource.
        # To decrease latency for this method, you can optionally omit any unneeded
        # information from the response by using a field mask. This practice is
        # especially recommended for unused quota information (the `quotas` field).
        # To exclude one or more fields, set your request's `fields` query parameter
        # to only include the fields you need. For example, to only include the `id`
        # and `selfLink` fields, add the query parameter `?fields=id,selfLink` to
        # your request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Project] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Project]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_project(project, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}', options)
          command.response_representation = Google::Apis::ComputeV1::Project::Representation
          command.response_class = Google::Apis::ComputeV1::Project
          command.params['project'] = project unless project.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets the shared VPC host project that this project links to. May be empty
        # if no link exists.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Project] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Project]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_project_xpn_host(project, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/getXpnHost', options)
          command.response_representation = Google::Apis::ComputeV1::Project::Representation
          command.response_class = Google::Apis::ComputeV1::Project
          command.params['project'] = project unless project.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets service resources (a.k.a service project) associated with this host
        # project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::ProjectsGetXpnResources] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::ProjectsGetXpnResources]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_project_xpn_resources(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/getXpnResources', options)
          command.response_representation = Google::Apis::ComputeV1::ProjectsGetXpnResources::Representation
          command.response_class = Google::Apis::ComputeV1::ProjectsGetXpnResources
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists all shared VPC host projects visible to the user in an organization.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::ProjectsListXpnHostsRequest] projects_list_xpn_hosts_request_object
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::XpnHostList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::XpnHostList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_project_xpn_hosts(project, projects_list_xpn_hosts_request_object = nil, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/listXpnHosts', options)
          command.request_representation = Google::Apis::ComputeV1::ProjectsListXpnHostsRequest::Representation
          command.request_object = projects_list_xpn_hosts_request_object
          command.response_representation = Google::Apis::ComputeV1::XpnHostList::Representation
          command.response_class = Google::Apis::ComputeV1::XpnHostList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Moves a persistent disk from one zone to another.
        # *Note*: The moveDisk API will be deprecated on September 29, 2026.
        # Starting September 29, 2025, you can't use the moveDisk API on new
        # projects. To move a disk to a different region or zone, follow the steps in
        # [Change the location of a
        # disk](https://cloud.google.com/compute/docs/disks/migrate-to-hyperdisk#migrate-
        # to-hd).
        # Projects that already use the moveDisk API can continue usage until
        # September 29, 2026.
        # Starting November 1, 2025, API responses will include a warning message in
        # the response body about the upcoming deprecation. You can skip the message
        # to continue using the service without interruption.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::MoveDiskRequest] move_disk_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def move_disk(project, move_disk_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/moveDisk', options)
          command.request_representation = Google::Apis::ComputeV1::MoveDiskRequest::Representation
          command.request_object = move_disk_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Moves an instance and its attached persistent disks from one zone to
        # another.
        # *Note*: Moving VMs or disks by using this method might
        # cause unexpected behavior. For more information, see the [known
        # issue](/compute/docs/troubleshooting/known-issues#
        # ving_vms_or_disks_using_the_moveinstance_api_or_the_causes_unexpected_behavior)
        # .
        # [Deprecated] This method is deprecated. See [moving instance across
        # zones](/compute/docs/instances/moving-instance-across-zones) instead.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::MoveInstanceRequest] move_instance_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def move_instance(project, move_instance_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/moveInstance', options)
          command.request_representation = Google::Apis::ComputeV1::MoveInstanceRequest::Representation
          command.request_object = move_instance_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the Cloud Armor tier of the project. To set ENTERPRISE or above the
        # billing account of the project must be subscribed to Cloud Armor
        # Enterprise. See Subscribing
        # to Cloud Armor Enterprise for more information.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::ProjectsSetCloudArmorTierRequest] projects_set_cloud_armor_tier_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_project_cloud_armor_tier(project, projects_set_cloud_armor_tier_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/setCloudArmorTier', options)
          command.request_representation = Google::Apis::ComputeV1::ProjectsSetCloudArmorTierRequest::Representation
          command.request_object = projects_set_cloud_armor_tier_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets metadata common to all instances within the specified project using
        # the data included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::Metadata] metadata_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_common_instance_metadata(project, metadata_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/setCommonInstanceMetadata', options)
          command.request_representation = Google::Apis::ComputeV1::Metadata::Representation
          command.request_object = metadata_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the default network tier of the project. The default network tier is
        # used when an address/forwardingRule/instance is created without specifying
        # the network tier field.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::ProjectsSetDefaultNetworkTierRequest] projects_set_default_network_tier_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_project_default_network_tier(project, projects_set_default_network_tier_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/setDefaultNetworkTier', options)
          command.request_representation = Google::Apis::ComputeV1::ProjectsSetDefaultNetworkTierRequest::Representation
          command.request_object = projects_set_default_network_tier_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Enables the usage export feature and sets theusage export bucket
        # where reports are stored. If you provide an empty request body using this
        # method, the usage export feature will be disabled.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::UsageExportLocation] usage_export_location_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_usage_export_bucket(project, usage_export_location_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/setUsageExportBucket', options)
          command.request_representation = Google::Apis::ComputeV1::UsageExportLocation::Representation
          command.request_object = usage_export_location_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Announces the specified PublicAdvertisedPrefix
        # @param [String] project
        #   Project ID for this request.
        # @param [String] public_advertised_prefix
        #   The name of the public advertised prefix. It should comply with RFC1035.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def announce_public_advertised_prefix(project, public_advertised_prefix, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/publicAdvertisedPrefixes/{publicAdvertisedPrefix}/announce', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['publicAdvertisedPrefix'] = public_advertised_prefix unless public_advertised_prefix.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified PublicAdvertisedPrefix
        # @param [String] project
        #   Project ID for this request.
        # @param [String] public_advertised_prefix
        #   Name of the PublicAdvertisedPrefix resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_public_advertised_prefix(project, public_advertised_prefix, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/global/publicAdvertisedPrefixes/{publicAdvertisedPrefix}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['publicAdvertisedPrefix'] = public_advertised_prefix unless public_advertised_prefix.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified PublicAdvertisedPrefix resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] public_advertised_prefix
        #   Name of the PublicAdvertisedPrefix resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::PublicAdvertisedPrefix] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::PublicAdvertisedPrefix]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_public_advertised_prefix(project, public_advertised_prefix, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/publicAdvertisedPrefixes/{publicAdvertisedPrefix}', options)
          command.response_representation = Google::Apis::ComputeV1::PublicAdvertisedPrefix::Representation
          command.response_class = Google::Apis::ComputeV1::PublicAdvertisedPrefix
          command.params['project'] = project unless project.nil?
          command.params['publicAdvertisedPrefix'] = public_advertised_prefix unless public_advertised_prefix.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a PublicAdvertisedPrefix in the specified project
        # using the parameters that are included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::PublicAdvertisedPrefix] public_advertised_prefix_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_public_advertised_prefix(project, public_advertised_prefix_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/publicAdvertisedPrefixes', options)
          command.request_representation = Google::Apis::ComputeV1::PublicAdvertisedPrefix::Representation
          command.request_object = public_advertised_prefix_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists the PublicAdvertisedPrefixes for a project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::PublicAdvertisedPrefixList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::PublicAdvertisedPrefixList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_public_advertised_prefixes(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/publicAdvertisedPrefixes', options)
          command.response_representation = Google::Apis::ComputeV1::PublicAdvertisedPrefixList::Representation
          command.response_class = Google::Apis::ComputeV1::PublicAdvertisedPrefixList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches the specified Router resource with the data included in the
        # request. This method supportsPATCH
        # semantics and usesJSON merge
        # patch format and processing rules.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] public_advertised_prefix
        #   Name of the PublicAdvertisedPrefix resource to patch.
        # @param [Google::Apis::ComputeV1::PublicAdvertisedPrefix] public_advertised_prefix_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_public_advertised_prefix(project, public_advertised_prefix, public_advertised_prefix_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/global/publicAdvertisedPrefixes/{publicAdvertisedPrefix}', options)
          command.request_representation = Google::Apis::ComputeV1::PublicAdvertisedPrefix::Representation
          command.request_object = public_advertised_prefix_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['publicAdvertisedPrefix'] = public_advertised_prefix unless public_advertised_prefix.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Withdraws the specified PublicAdvertisedPrefix
        # @param [String] project
        #   Project ID for this request.
        # @param [String] public_advertised_prefix
        #   The name of the public advertised prefix. It should comply with RFC1035.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def withdraw_public_advertised_prefix(project, public_advertised_prefix, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/publicAdvertisedPrefixes/{publicAdvertisedPrefix}/withdraw', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['publicAdvertisedPrefix'] = public_advertised_prefix unless public_advertised_prefix.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists all PublicDelegatedPrefix resources owned by the specific project
        # across all scopes.
        # To prevent failure, Google recommends that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Name of the project scoping this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::PublicDelegatedPrefixAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::PublicDelegatedPrefixAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def aggregated_public_delegated_prefix_list(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/publicDelegatedPrefixes', options)
          command.response_representation = Google::Apis::ComputeV1::PublicDelegatedPrefixAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::PublicDelegatedPrefixAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Announces the specified PublicDelegatedPrefix in the given region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of theregion where
        #   the public delegated prefix is located. It should comply with RFC1035.
        # @param [String] public_delegated_prefix
        #   The name of the public delegated prefix. It should comply with RFC1035.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def announce_public_delegated_prefix(project, region, public_delegated_prefix, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/publicDelegatedPrefixes/{publicDelegatedPrefix}/announce', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['publicDelegatedPrefix'] = public_delegated_prefix unless public_delegated_prefix.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified PublicDelegatedPrefix in the given region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region of this request.
        # @param [String] public_delegated_prefix
        #   Name of the PublicDelegatedPrefix resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_public_delegated_prefix(project, region, public_delegated_prefix, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/regions/{region}/publicDelegatedPrefixes/{publicDelegatedPrefix}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['publicDelegatedPrefix'] = public_delegated_prefix unless public_delegated_prefix.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified PublicDelegatedPrefix resource in the given region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region of this request.
        # @param [String] public_delegated_prefix
        #   Name of the PublicDelegatedPrefix resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::PublicDelegatedPrefix] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::PublicDelegatedPrefix]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_public_delegated_prefix(project, region, public_delegated_prefix, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/publicDelegatedPrefixes/{publicDelegatedPrefix}', options)
          command.response_representation = Google::Apis::ComputeV1::PublicDelegatedPrefix::Representation
          command.response_class = Google::Apis::ComputeV1::PublicDelegatedPrefix
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['publicDelegatedPrefix'] = public_delegated_prefix unless public_delegated_prefix.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a PublicDelegatedPrefix in the specified project in the given
        # region using the parameters that are included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region of this request.
        # @param [Google::Apis::ComputeV1::PublicDelegatedPrefix] public_delegated_prefix_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_public_delegated_prefix(project, region, public_delegated_prefix_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/publicDelegatedPrefixes', options)
          command.request_representation = Google::Apis::ComputeV1::PublicDelegatedPrefix::Representation
          command.request_object = public_delegated_prefix_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists the PublicDelegatedPrefixes for a project in the given region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region of this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::PublicDelegatedPrefixList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::PublicDelegatedPrefixList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_public_delegated_prefixes(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/publicDelegatedPrefixes', options)
          command.response_representation = Google::Apis::ComputeV1::PublicDelegatedPrefixList::Representation
          command.response_class = Google::Apis::ComputeV1::PublicDelegatedPrefixList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches the specified PublicDelegatedPrefix resource with the data included
        # in the request. This method supportsPATCH
        # semantics and usesJSON merge
        # patch format and processing rules.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] public_delegated_prefix
        #   Name of the PublicDelegatedPrefix resource to patch.
        # @param [Google::Apis::ComputeV1::PublicDelegatedPrefix] public_delegated_prefix_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_public_delegated_prefix(project, region, public_delegated_prefix, public_delegated_prefix_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/regions/{region}/publicDelegatedPrefixes/{publicDelegatedPrefix}', options)
          command.request_representation = Google::Apis::ComputeV1::PublicDelegatedPrefix::Representation
          command.request_object = public_delegated_prefix_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['publicDelegatedPrefix'] = public_delegated_prefix unless public_delegated_prefix.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Withdraws the specified PublicDelegatedPrefix in the given region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of theregion where
        #   the public delegated prefix is located. It should comply with RFC1035.
        # @param [String] public_delegated_prefix
        #   The name of the public delegated prefix. It should comply with RFC1035.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def withdraw_public_delegated_prefix(project, region, public_delegated_prefix, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/publicDelegatedPrefixes/{publicDelegatedPrefix}/withdraw', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['publicDelegatedPrefix'] = public_delegated_prefix unless public_delegated_prefix.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified autoscaler.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] autoscaler
        #   Name of the autoscaler to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_region_autoscaler(project, region, autoscaler, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/regions/{region}/autoscalers/{autoscaler}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['autoscaler'] = autoscaler unless autoscaler.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified autoscaler.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] autoscaler
        #   Name of the autoscaler to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Autoscaler] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Autoscaler]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_region_autoscaler(project, region, autoscaler, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/autoscalers/{autoscaler}', options)
          command.response_representation = Google::Apis::ComputeV1::Autoscaler::Representation
          command.response_class = Google::Apis::ComputeV1::Autoscaler
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['autoscaler'] = autoscaler unless autoscaler.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates an autoscaler in the specified project using
        # the data included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [Google::Apis::ComputeV1::Autoscaler] autoscaler_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_region_autoscaler(project, region, autoscaler_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/autoscalers', options)
          command.request_representation = Google::Apis::ComputeV1::Autoscaler::Representation
          command.request_object = autoscaler_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of autoscalers contained within
        # the specified region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::RegionAutoscalerList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::RegionAutoscalerList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_region_autoscalers(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/autoscalers', options)
          command.response_representation = Google::Apis::ComputeV1::RegionAutoscalerList::Representation
          command.response_class = Google::Apis::ComputeV1::RegionAutoscalerList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates an autoscaler in the specified project using
        # the data included in the request. This method supportsPATCH
        # semantics and uses theJSON merge
        # patch format and processing rules.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [Google::Apis::ComputeV1::Autoscaler] autoscaler_object
        # @param [String] autoscaler
        #   Name of the autoscaler to patch.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_region_autoscaler(project, region, autoscaler_object = nil, autoscaler: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/regions/{region}/autoscalers', options)
          command.request_representation = Google::Apis::ComputeV1::Autoscaler::Representation
          command.request_object = autoscaler_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['autoscaler'] = autoscaler unless autoscaler.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_region_autoscaler_iam_permissions(project, region, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/autoscalers/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates an autoscaler in the specified project using
        # the data included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [Google::Apis::ComputeV1::Autoscaler] autoscaler_object
        # @param [String] autoscaler
        #   Name of the autoscaler to update.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def update_region_autoscaler(project, region, autoscaler_object = nil, autoscaler: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:put, 'projects/{project}/regions/{region}/autoscalers', options)
          command.request_representation = Google::Apis::ComputeV1::Autoscaler::Representation
          command.request_object = autoscaler_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['autoscaler'] = autoscaler unless autoscaler.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified regional BackendService resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] backend_service
        #   Name of the BackendService resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_region_backend_service(project, region, backend_service, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/regions/{region}/backendServices/{backendService}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['backendService'] = backend_service unless backend_service.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified regional BackendService resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] backend_service
        #   Name of the BackendService resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::BackendService] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::BackendService]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_region_backend_service(project, region, backend_service, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/backendServices/{backendService}', options)
          command.response_representation = Google::Apis::ComputeV1::BackendService::Representation
          command.response_class = Google::Apis::ComputeV1::BackendService
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['backendService'] = backend_service unless backend_service.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets the most recent health check results for this
        # regional BackendService.
        # @param [String] project
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] backend_service
        #   Name of the BackendService resource for which to get health.
        # @param [Google::Apis::ComputeV1::ResourceGroupReference] resource_group_reference_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::BackendServiceGroupHealth] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::BackendServiceGroupHealth]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_region_backend_service_health(project, region, backend_service, resource_group_reference_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/backendServices/{backendService}/getHealth', options)
          command.request_representation = Google::Apis::ComputeV1::ResourceGroupReference::Representation
          command.request_object = resource_group_reference_object
          command.response_representation = Google::Apis::ComputeV1::BackendServiceGroupHealth::Representation
          command.response_class = Google::Apis::ComputeV1::BackendServiceGroupHealth
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['backendService'] = backend_service unless backend_service.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets the access control policy for a resource. May be empty if no such
        # policy or resource exists.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Fixnum] options_requested_policy_version
        #   Requested IAM Policy version.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_region_backend_service_iam_policy(project, region, resource, options_requested_policy_version: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/backendServices/{resource}/getIamPolicy', options)
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['optionsRequestedPolicyVersion'] = options_requested_policy_version unless options_requested_policy_version.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a regional BackendService resource in the specified project using
        # the data included in the request. For more information, see
        # Backend services overview.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [Google::Apis::ComputeV1::BackendService] backend_service_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_region_backend_service(project, region, backend_service_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/backendServices', options)
          command.request_representation = Google::Apis::ComputeV1::BackendService::Representation
          command.request_object = backend_service_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of regional BackendService resources available to the
        # specified project in the given region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::BackendServiceList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::BackendServiceList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_region_backend_services(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/backendServices', options)
          command.response_representation = Google::Apis::ComputeV1::BackendServiceList::Representation
          command.response_class = Google::Apis::ComputeV1::BackendServiceList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of all usable backend services in the specified project in
        # the given region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        #   It must be a string that meets the requirements in RFC1035.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::BackendServiceListUsable] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::BackendServiceListUsable]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_region_backend_service_usable(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/backendServices/listUsable', options)
          command.response_representation = Google::Apis::ComputeV1::BackendServiceListUsable::Representation
          command.response_class = Google::Apis::ComputeV1::BackendServiceListUsable
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates the specified regional BackendService resource with the data
        # included in the request. For more information, see
        # Understanding backend services This method
        # supports PATCH semantics and uses the JSON merge
        # patch format and processing rules.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] backend_service
        #   Name of the BackendService resource to patch.
        # @param [Google::Apis::ComputeV1::BackendService] backend_service_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_region_backend_service(project, region, backend_service, backend_service_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/regions/{region}/backendServices/{backendService}', options)
          command.request_representation = Google::Apis::ComputeV1::BackendService::Representation
          command.request_object = backend_service_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['backendService'] = backend_service unless backend_service.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the access control policy on the specified resource.
        # Replaces any existing policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::RegionSetPolicyRequest] region_set_policy_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_region_backend_service_iam_policy(project, region, resource, region_set_policy_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/backendServices/{resource}/setIamPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::RegionSetPolicyRequest::Representation
          command.request_object = region_set_policy_request_object
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the Google Cloud Armor security policy for the specified backend
        # service. For more information, seeGoogle
        # Cloud Armor Overview
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] backend_service
        #   Name of the BackendService resource to which the security policy should be
        #   set. The name should conform to RFC1035.
        # @param [Google::Apis::ComputeV1::SecurityPolicyReference] security_policy_reference_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_region_backend_service_security_policy(project, region, backend_service, security_policy_reference_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/backendServices/{backendService}/setSecurityPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::SecurityPolicyReference::Representation
          command.request_object = security_policy_reference_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['backendService'] = backend_service unless backend_service.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_region_backend_service_iam_permissions(project, region, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/backendServices/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates the specified regional BackendService resource with the data
        # included in the request. For more information,
        # see
        # Backend services overview.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] backend_service
        #   Name of the BackendService resource to update.
        # @param [Google::Apis::ComputeV1::BackendService] backend_service_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def update_region_backend_service(project, region, backend_service, backend_service_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:put, 'projects/{project}/regions/{region}/backendServices/{backendService}', options)
          command.request_representation = Google::Apis::ComputeV1::BackendService::Representation
          command.request_object = backend_service_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['backendService'] = backend_service unless backend_service.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves an aggregated list of commitments by region.
        # To prevent failure, it is recommended that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::CommitmentAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::CommitmentAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def aggregated_region_commitment_list(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/commitments', options)
          command.response_representation = Google::Apis::ComputeV1::CommitmentAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::CommitmentAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified commitment resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] commitment
        #   Name of the commitment to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Commitment] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Commitment]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_region_commitment(project, region, commitment, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/commitments/{commitment}', options)
          command.response_representation = Google::Apis::ComputeV1::Commitment::Representation
          command.response_class = Google::Apis::ComputeV1::Commitment
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['commitment'] = commitment unless commitment.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a commitment in the specified project using the data
        # included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [Google::Apis::ComputeV1::Commitment] commitment_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_region_commitment(project, region, commitment_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/commitments', options)
          command.request_representation = Google::Apis::ComputeV1::Commitment::Representation
          command.request_object = commitment_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of commitments contained within
        # the specified region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::CommitmentList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::CommitmentList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_region_commitments(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/commitments', options)
          command.response_representation = Google::Apis::ComputeV1::CommitmentList::Representation
          command.response_class = Google::Apis::ComputeV1::CommitmentList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates the specified commitment with the data included in the request.
        # Update is performed only on selected fields included as part of
        # update-mask. Only the following fields can be updated: auto_renew and plan.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] commitment
        #   Name of the commitment that you want to update.
        # @param [Google::Apis::ComputeV1::Commitment] commitment_object
        # @param [Array<String>, String] paths
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] update_mask
        #   update_mask indicates fields to be updated as part of this request.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def update_region_commitment(project, region, commitment, commitment_object = nil, paths: nil, request_id: nil, update_mask: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/regions/{region}/commitments/{commitment}', options)
          command.request_representation = Google::Apis::ComputeV1::Commitment::Representation
          command.request_object = commitment_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['commitment'] = commitment unless commitment.nil?
          command.query['paths'] = paths unless paths.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['updateMask'] = update_mask unless update_mask.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified regional disk type.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] disk_type
        #   Name of the disk type to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::DiskType] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::DiskType]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_region_disk_type(project, region, disk_type, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/diskTypes/{diskType}', options)
          command.response_representation = Google::Apis::ComputeV1::DiskType::Representation
          command.response_class = Google::Apis::ComputeV1::DiskType
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['diskType'] = disk_type unless disk_type.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of regional disk types available to the specified project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::RegionDiskTypeList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::RegionDiskTypeList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_region_disk_types(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/diskTypes', options)
          command.response_representation = Google::Apis::ComputeV1::RegionDiskTypeList::Representation
          command.response_class = Google::Apis::ComputeV1::RegionDiskTypeList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Adds existing resource policies to a regional disk. You can only add one
        # policy which will be applied to this disk for scheduling snapshot
        # creation.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] disk
        #   The disk name for this request.
        # @param [Google::Apis::ComputeV1::RegionDisksAddResourcePoliciesRequest] region_disks_add_resource_policies_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def add_region_disk_resource_policies(project, region, disk, region_disks_add_resource_policies_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/disks/{disk}/addResourcePolicies', options)
          command.request_representation = Google::Apis::ComputeV1::RegionDisksAddResourcePoliciesRequest::Representation
          command.request_object = region_disks_add_resource_policies_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['disk'] = disk unless disk.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Bulk create a set of disks.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [Google::Apis::ComputeV1::BulkInsertDiskResource] bulk_insert_disk_resource_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def bulk_region_disk_insert(project, region, bulk_insert_disk_resource_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/disks/bulkInsert', options)
          command.request_representation = Google::Apis::ComputeV1::BulkInsertDiskResource::Representation
          command.request_object = bulk_insert_disk_resource_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a snapshot of a specified persistent disk. For regular snapshot
        # creation, consider using snapshots.insert
        # instead, as that method supports more features, such as creating snapshots
        # in a project different from the source disk project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] disk
        #   Name of the regional persistent disk to snapshot.
        # @param [Google::Apis::ComputeV1::Snapshot] snapshot_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def create_region_disk_snapshot(project, region, disk, snapshot_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/disks/{disk}/createSnapshot', options)
          command.request_representation = Google::Apis::ComputeV1::Snapshot::Representation
          command.request_object = snapshot_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['disk'] = disk unless disk.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified regional persistent disk. Deleting a regional disk
        # removes all the replicas of its data permanently and is irreversible.
        # However, deleting a disk does not delete anysnapshots
        # previously made from the disk. You must separatelydelete
        # snapshots.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] disk
        #   Name of the regional persistent disk to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_region_disk(project, region, disk, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/regions/{region}/disks/{disk}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['disk'] = disk unless disk.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns a specified regional persistent disk.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] disk
        #   Name of the regional persistent disk to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Disk] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Disk]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_region_disk(project, region, disk, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/disks/{disk}', options)
          command.response_representation = Google::Apis::ComputeV1::Disk::Representation
          command.response_class = Google::Apis::ComputeV1::Disk
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['disk'] = disk unless disk.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets the access control policy for a resource. May be empty if no such
        # policy or resource exists.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Fixnum] options_requested_policy_version
        #   Requested IAM Policy version.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_region_disk_iam_policy(project, region, resource, options_requested_policy_version: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/disks/{resource}/getIamPolicy', options)
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['optionsRequestedPolicyVersion'] = options_requested_policy_version unless options_requested_policy_version.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a persistent regional disk in the specified project using the data
        # included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [Google::Apis::ComputeV1::Disk] disk_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] source_image
        #   Source image to restore onto a disk. This field is optional.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_region_disk(project, region, disk_object = nil, request_id: nil, source_image: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/disks', options)
          command.request_representation = Google::Apis::ComputeV1::Disk::Representation
          command.request_object = disk_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['sourceImage'] = source_image unless source_image.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of persistent disks contained within
        # the specified region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::DiskList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::DiskList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_region_disks(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/disks', options)
          command.response_representation = Google::Apis::ComputeV1::DiskList::Representation
          command.response_class = Google::Apis::ComputeV1::DiskList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Removes resource policies from a regional disk.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] disk
        #   The disk name for this request.
        # @param [Google::Apis::ComputeV1::RegionDisksRemoveResourcePoliciesRequest] region_disks_remove_resource_policies_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def remove_region_disk_resource_policies(project, region, disk, region_disks_remove_resource_policies_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/disks/{disk}/removeResourcePolicies', options)
          command.request_representation = Google::Apis::ComputeV1::RegionDisksRemoveResourcePoliciesRequest::Representation
          command.request_object = region_disks_remove_resource_policies_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['disk'] = disk unless disk.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Resizes the specified regional persistent disk.
        # @param [String] project
        #   The project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] disk
        #   Name of the regional persistent disk.
        # @param [Google::Apis::ComputeV1::RegionDisksResizeRequest] region_disks_resize_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def resize_region_disk(project, region, disk, region_disks_resize_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/disks/{disk}/resize', options)
          command.request_representation = Google::Apis::ComputeV1::RegionDisksResizeRequest::Representation
          command.request_object = region_disks_resize_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['disk'] = disk unless disk.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the access control policy on the specified resource.
        # Replaces any existing policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::RegionSetPolicyRequest] region_set_policy_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_region_disk_iam_policy(project, region, resource, region_set_policy_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/disks/{resource}/setIamPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::RegionSetPolicyRequest::Representation
          command.request_object = region_set_policy_request_object
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the labels on the target regional disk.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::RegionSetLabelsRequest] region_set_labels_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_region_disk_labels(project, region, resource, region_set_labels_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/disks/{resource}/setLabels', options)
          command.request_representation = Google::Apis::ComputeV1::RegionSetLabelsRequest::Representation
          command.request_object = region_set_labels_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Starts asynchronous replication.
        # Must be invoked on the primary disk.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] disk
        #   The name of the persistent disk.
        # @param [Google::Apis::ComputeV1::RegionDisksStartAsyncReplicationRequest] region_disks_start_async_replication_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def start_region_disk_async_replication(project, region, disk, region_disks_start_async_replication_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/disks/{disk}/startAsyncReplication', options)
          command.request_representation = Google::Apis::ComputeV1::RegionDisksStartAsyncReplicationRequest::Representation
          command.request_object = region_disks_start_async_replication_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['disk'] = disk unless disk.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Stops asynchronous replication.
        # Can be invoked either on the primary or on the secondary disk.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] disk
        #   The name of the persistent disk.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def stop_region_disk_async_replication(project, region, disk, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/disks/{disk}/stopAsyncReplication', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['disk'] = disk unless disk.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Stops asynchronous replication for a consistency group of disks.
        # Can be invoked either in the primary or secondary scope.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request. This must be the region of the
        #   primary or secondary disks in the consistency group.
        # @param [Google::Apis::ComputeV1::DisksStopGroupAsyncReplicationResource] disks_stop_group_async_replication_resource_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def stop_region_disk_group_async_replication(project, region, disks_stop_group_async_replication_resource_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/disks/stopGroupAsyncReplication', options)
          command.request_representation = Google::Apis::ComputeV1::DisksStopGroupAsyncReplicationResource::Representation
          command.request_object = disks_stop_group_async_replication_resource_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_region_disk_iam_permissions(project, region, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/disks/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Update the specified disk with the data included in the request. Update is
        # performed only on selected fields included as part of update-mask. Only the
        # following fields can be modified: user_license.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] disk
        #   The disk name for this request.
        # @param [Google::Apis::ComputeV1::Disk] disk_object
        # @param [Array<String>, String] paths
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] update_mask
        #   update_mask indicates fields to be updated as part of this request.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def update_region_disk(project, region, disk, disk_object = nil, paths: nil, request_id: nil, update_mask: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/regions/{region}/disks/{disk}', options)
          command.request_representation = Google::Apis::ComputeV1::Disk::Representation
          command.request_object = disk_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['disk'] = disk unless disk.nil?
          command.query['paths'] = paths unless paths.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['updateMask'] = update_mask unless update_mask.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified regional HealthCheckService.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] health_check_service
        #   Name of the HealthCheckService to delete. The name
        #   must be 1-63 characters long, and comply with RFC1035.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_region_health_check_service(project, region, health_check_service, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/regions/{region}/healthCheckServices/{healthCheckService}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['healthCheckService'] = health_check_service unless health_check_service.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified regional HealthCheckService resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] health_check_service
        #   Name of the HealthCheckService to update. The name
        #   must be 1-63 characters long, and comply with RFC1035.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::HealthCheckService] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::HealthCheckService]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_region_health_check_service(project, region, health_check_service, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/healthCheckServices/{healthCheckService}', options)
          command.response_representation = Google::Apis::ComputeV1::HealthCheckService::Representation
          command.response_class = Google::Apis::ComputeV1::HealthCheckService
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['healthCheckService'] = health_check_service unless health_check_service.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a regional HealthCheckService resource in the
        # specified project and region using the data included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [Google::Apis::ComputeV1::HealthCheckService] health_check_service_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_region_health_check_service(project, region, health_check_service_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/healthCheckServices', options)
          command.request_representation = Google::Apis::ComputeV1::HealthCheckService::Representation
          command.request_object = health_check_service_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists all the HealthCheckService resources that have been
        # configured for the specified project in the given region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::HealthCheckServicesList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::HealthCheckServicesList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_region_health_check_services(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/healthCheckServices', options)
          command.response_representation = Google::Apis::ComputeV1::HealthCheckServicesList::Representation
          command.response_class = Google::Apis::ComputeV1::HealthCheckServicesList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates the specified regional HealthCheckService resource
        # with the data included in the request.  This method supportsPATCH
        # semantics and uses theJSON merge
        # patch format and processing rules.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] health_check_service
        #   Name of the HealthCheckService to update. The name
        #   must be 1-63 characters long, and comply with RFC1035.
        # @param [Google::Apis::ComputeV1::HealthCheckService] health_check_service_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_region_health_check_service(project, region, health_check_service, health_check_service_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/regions/{region}/healthCheckServices/{healthCheckService}', options)
          command.request_representation = Google::Apis::ComputeV1::HealthCheckService::Representation
          command.request_object = health_check_service_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['healthCheckService'] = health_check_service unless health_check_service.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_region_health_check_service_iam_permissions(project, region, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/healthCheckServices/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified HealthCheck resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] health_check
        #   Name of the HealthCheck resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_region_health_check(project, region, health_check, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/regions/{region}/healthChecks/{healthCheck}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['healthCheck'] = health_check unless health_check.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified HealthCheck resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] health_check
        #   Name of the HealthCheck resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::HealthCheck] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::HealthCheck]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_region_health_check(project, region, health_check, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/healthChecks/{healthCheck}', options)
          command.response_representation = Google::Apis::ComputeV1::HealthCheck::Representation
          command.response_class = Google::Apis::ComputeV1::HealthCheck
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['healthCheck'] = health_check unless health_check.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a HealthCheck resource in the specified project using the data
        # included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [Google::Apis::ComputeV1::HealthCheck] health_check_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_region_health_check(project, region, health_check_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/healthChecks', options)
          command.request_representation = Google::Apis::ComputeV1::HealthCheck::Representation
          command.request_object = health_check_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of HealthCheck resources available to the specified
        # project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::HealthCheckList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::HealthCheckList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_region_health_checks(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/healthChecks', options)
          command.response_representation = Google::Apis::ComputeV1::HealthCheckList::Representation
          command.response_class = Google::Apis::ComputeV1::HealthCheckList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates a HealthCheck resource in the specified project using the data
        # included in the request. This method supportsPATCH
        # semantics and uses theJSON merge
        # patch format and processing rules.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] health_check
        #   Name of the HealthCheck resource to patch.
        # @param [Google::Apis::ComputeV1::HealthCheck] health_check_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_region_health_check(project, region, health_check, health_check_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/regions/{region}/healthChecks/{healthCheck}', options)
          command.request_representation = Google::Apis::ComputeV1::HealthCheck::Representation
          command.request_object = health_check_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['healthCheck'] = health_check unless health_check.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_region_health_check_iam_permissions(project, region, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/healthChecks/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates a HealthCheck resource in the specified project using the data
        # included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] health_check
        #   Name of the HealthCheck resource to update.
        # @param [Google::Apis::ComputeV1::HealthCheck] health_check_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def update_region_health_check(project, region, health_check, health_check_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:put, 'projects/{project}/regions/{region}/healthChecks/{healthCheck}', options)
          command.request_representation = Google::Apis::ComputeV1::HealthCheck::Representation
          command.request_object = health_check_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['healthCheck'] = health_check unless health_check.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Flags the specified instances to be immediately removed from the managed
        # instance group. Abandoning an instance does not delete the
        # instance, but it does remove the instance from any target pools that are
        # applied by the managed instance group. This method reduces thetargetSize of
        # the managed instance group by the
        # number of instances that you abandon. This operation is marked asDONE when the
        # action is scheduled even if the instances have
        # not yet been removed from the group. You must separately verify the
        # status of the abandoning action with thelistmanagedinstances
        # method.
        # If the group is part of a backend
        # service that has enabled
        # connection draining, it can take up to 60 seconds after the connection
        # draining duration has elapsed before the VM instance is removed or deleted.
        # You can specify a maximum of 1000 instances with this method per request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] instance_group_manager
        #   Name of the managed instance group.
        # @param [Google::Apis::ComputeV1::RegionInstanceGroupManagersAbandonInstancesRequest] region_instance_group_managers_abandon_instances_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def abandon_region_instance_group_manager_instances(project, region, instance_group_manager, region_instance_group_managers_abandon_instances_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/abandonInstances', options)
          command.request_representation = Google::Apis::ComputeV1::RegionInstanceGroupManagersAbandonInstancesRequest::Representation
          command.request_object = region_instance_group_managers_abandon_instances_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Apply updates to selected instances the managed instance group.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request, should conform to RFC1035.
        # @param [String] instance_group_manager
        #   The name of the managed instance group, should conform to RFC1035.
        # @param [Google::Apis::ComputeV1::RegionInstanceGroupManagersApplyUpdatesRequest] region_instance_group_managers_apply_updates_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def apply_region_instance_group_manager_updates_to_instances(project, region, instance_group_manager, region_instance_group_managers_apply_updates_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/applyUpdatesToInstances', options)
          command.request_representation = Google::Apis::ComputeV1::RegionInstanceGroupManagersApplyUpdatesRequest::Representation
          command.request_object = region_instance_group_managers_apply_updates_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates instances with per-instance configurations in this regional managed
        # instance group. Instances are created using the current instance template.
        # The create instances operation is marked DONE if
        # the createInstances request is successful. The underlying
        # actions take additional time. You must separately verify the status of
        # thecreating or actions with the listmanagedinstances
        # method.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of theregion
        #   where the managed instance group is located.
        #   It should conform to RFC1035.
        # @param [String] instance_group_manager
        #   The name of the managed instance group.
        #   It should conform to RFC1035.
        # @param [Google::Apis::ComputeV1::RegionInstanceGroupManagersCreateInstancesRequest] region_instance_group_managers_create_instances_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def create_region_instance_group_manager_instances(project, region, instance_group_manager, region_instance_group_managers_create_instances_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/createInstances', options)
          command.request_representation = Google::Apis::ComputeV1::RegionInstanceGroupManagersCreateInstancesRequest::Representation
          command.request_object = region_instance_group_managers_create_instances_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified managed instance group and all of the instances
        # in that group.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] instance_group_manager
        #   Name of the managed instance group to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_region_instance_group_manager(project, region, instance_group_manager, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Flags the specified instances in the managed instance group to be
        # immediately deleted. The instances are also removed from any target
        # pools of which they were a member. This method reduces thetargetSize of the
        # managed instance group by the number of
        # instances that you delete.
        # The deleteInstances operation is marked DONE if
        # the deleteInstances request is successful. The underlying
        # actions take additional time. You must separately verify the status of
        # thedeleting action with thelistmanagedinstances
        # method.
        # If the group is part of a backend
        # service that has enabled
        # connection draining, it can take up to 60 seconds after the connection
        # draining duration has elapsed before the VM instance is removed or deleted.
        # You can specify a maximum of 1000 instances with this method per request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] instance_group_manager
        #   Name of the managed instance group.
        # @param [Google::Apis::ComputeV1::RegionInstanceGroupManagersDeleteInstancesRequest] region_instance_group_managers_delete_instances_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_region_instance_group_manager_instances(project, region, instance_group_manager, region_instance_group_managers_delete_instances_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/deleteInstances', options)
          command.request_representation = Google::Apis::ComputeV1::RegionInstanceGroupManagersDeleteInstancesRequest::Representation
          command.request_object = region_instance_group_managers_delete_instances_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes selected per-instance configurations for the managed instance
        # group.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request, should conform to RFC1035.
        # @param [String] instance_group_manager
        #   The name of the managed instance group. It should conform to RFC1035.
        # @param [Google::Apis::ComputeV1::RegionInstanceGroupManagerDeleteInstanceConfigReq] region_instance_group_manager_delete_instance_config_req_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_region_instance_group_manager_per_instance_configs(project, region, instance_group_manager, region_instance_group_manager_delete_instance_config_req_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/deletePerInstanceConfigs', options)
          command.request_representation = Google::Apis::ComputeV1::RegionInstanceGroupManagerDeleteInstanceConfigReq::Representation
          command.request_object = region_instance_group_manager_delete_instance_config_req_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns all of the details about the specified managed instance group.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] instance_group_manager
        #   Name of the managed instance group to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InstanceGroupManager] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InstanceGroupManager]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_region_instance_group_manager(project, region, instance_group_manager, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}', options)
          command.response_representation = Google::Apis::ComputeV1::InstanceGroupManager::Representation
          command.response_class = Google::Apis::ComputeV1::InstanceGroupManager
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a managed instance group using the information that you specify
        # in the request. After the group is created, instances in the group are
        # created using the specified instance template.
        # This operation is marked as DONE when the group is created
        # even if the instances in the group have not yet been created. You must
        # separately verify the status of the individual instances with
        # thelistmanagedinstances
        # method.
        # A regional managed instance group can contain up to 2000 instances.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [Google::Apis::ComputeV1::InstanceGroupManager] instance_group_manager_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_region_instance_group_manager(project, region, instance_group_manager_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/instanceGroupManagers', options)
          command.request_representation = Google::Apis::ComputeV1::InstanceGroupManager::Representation
          command.request_object = instance_group_manager_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of managed instance groups that are contained
        # within the specified region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::RegionInstanceGroupManagerList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::RegionInstanceGroupManagerList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_region_instance_group_managers(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/instanceGroupManagers', options)
          command.response_representation = Google::Apis::ComputeV1::RegionInstanceGroupManagerList::Representation
          command.response_class = Google::Apis::ComputeV1::RegionInstanceGroupManagerList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists all errors thrown by actions on instances for a given regional
        # managed instance group. The filter andorderBy query parameters are not
        # supported.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        #   This should conform to RFC1035.
        # @param [String] instance_group_manager
        #   The name of the managed instance group.
        #   It must be a string that meets the requirements in RFC1035, or an
        #   unsigned long integer: must match regexp pattern:
        #   (?:[a-z](?:[-a-z0-9]`0,61`[a-z0-9])?)|1-9`0,19`.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::RegionInstanceGroupManagersListErrorsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::RegionInstanceGroupManagersListErrorsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_region_instance_group_manager_errors(project, region, instance_group_manager, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/listErrors', options)
          command.response_representation = Google::Apis::ComputeV1::RegionInstanceGroupManagersListErrorsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::RegionInstanceGroupManagersListErrorsResponse
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists the instances in the managed instance group and instances that are
        # scheduled to be created. The list includes any current actions
        # that the group has scheduled for its instances. The orderBy
        # query parameter is not supported.   The `pageToken` query parameter is
        # supported only if the group's `listManagedInstancesResults` field is set
        # to `PAGINATED`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] instance_group_manager
        #   The name of the managed instance group.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::RegionInstanceGroupManagersListInstancesResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::RegionInstanceGroupManagersListInstancesResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_region_instance_group_manager_managed_instances(project, region, instance_group_manager, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/listManagedInstances', options)
          command.response_representation = Google::Apis::ComputeV1::RegionInstanceGroupManagersListInstancesResponse::Representation
          command.response_class = Google::Apis::ComputeV1::RegionInstanceGroupManagersListInstancesResponse
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists all of the per-instance configurations defined for the managed
        # instance group. The orderBy query parameter is not supported.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request, should conform to RFC1035.
        # @param [String] instance_group_manager
        #   The name of the managed instance group. It should conform to RFC1035.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::RegionInstanceGroupManagersListInstanceConfigsResp] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::RegionInstanceGroupManagersListInstanceConfigsResp]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_region_instance_group_manager_per_instance_configs(project, region, instance_group_manager, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/listPerInstanceConfigs', options)
          command.response_representation = Google::Apis::ComputeV1::RegionInstanceGroupManagersListInstanceConfigsResp::Representation
          command.response_class = Google::Apis::ComputeV1::RegionInstanceGroupManagersListInstanceConfigsResp
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates a managed instance group using the information that you specify
        # in the request.
        # This operation is marked as DONE when the group is patched
        # even if the instances in the group are still in the process of being
        # patched. You must separately verify the status of the individual instances
        # with the listmanagedinstances
        # method. This method supportsPATCH
        # semantics and uses theJSON merge
        # patch format and processing rules.
        # If you update your group to specify a new template or instance
        # configuration, it's possible that your intended specification for each VM
        # in the group is different from the current state of that VM. To learn how
        # to apply an updated configuration to the VMs in a MIG, seeUpdating instances
        # in
        # a MIG.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] instance_group_manager
        #   The name of the instance group manager.
        # @param [Google::Apis::ComputeV1::InstanceGroupManager] instance_group_manager_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_region_instance_group_manager(project, region, instance_group_manager, instance_group_manager_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}', options)
          command.request_representation = Google::Apis::ComputeV1::InstanceGroupManager::Representation
          command.request_object = instance_group_manager_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Inserts or patches per-instance configurations for the managed instance
        # group. perInstanceConfig.name serves as a key used to
        # distinguish whether to perform insert or patch.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request, should conform to RFC1035.
        # @param [String] instance_group_manager
        #   The name of the managed instance group.
        #   It should conform to RFC1035.
        # @param [Google::Apis::ComputeV1::RegionInstanceGroupManagerPatchInstanceConfigReq] region_instance_group_manager_patch_instance_config_req_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_region_instance_group_manager_per_instance_configs(project, region, instance_group_manager, region_instance_group_manager_patch_instance_config_req_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/patchPerInstanceConfigs', options)
          command.request_representation = Google::Apis::ComputeV1::RegionInstanceGroupManagerPatchInstanceConfigReq::Representation
          command.request_object = region_instance_group_manager_patch_instance_config_req_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Flags the specified VM instances in the managed instance group to be
        # immediately recreated. Each instance is recreated using the group's current
        # configuration. This operation is marked as DONE when the flag
        # is set even if the instances have not yet been recreated. You must
        # separately verify the status of each instance by checking itscurrentAction
        # field; for more information, see Checking
        # the status of managed instances.
        # If the group is part of a backend
        # service that has enabled
        # connection draining, it can take up to 60 seconds after the connection
        # draining duration has elapsed before the VM instance is removed or deleted.
        # You can specify a maximum of 1000 instances with this method per request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] instance_group_manager
        #   Name of the managed instance group.
        # @param [Google::Apis::ComputeV1::RegionInstanceGroupManagersRecreateRequest] region_instance_group_managers_recreate_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def recreate_region_instance_group_manager_instances(project, region, instance_group_manager, region_instance_group_managers_recreate_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/recreateInstances', options)
          command.request_representation = Google::Apis::ComputeV1::RegionInstanceGroupManagersRecreateRequest::Representation
          command.request_object = region_instance_group_managers_recreate_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Changes the intended size of the managed instance group. If you increase
        # the size, the group creates new instances using the current instance
        # template. If you decrease the size, the group deletes one or more
        # instances.
        # The resize operation is marked DONE if theresize request is successful. The
        # underlying actions take
        # additional time. You must separately verify the status of thecreating or
        # deleting actions with thelistmanagedinstances
        # method.
        # If the group is part of a backend
        # service that has enabled
        # connection draining, it can take up to 60 seconds after the connection
        # draining duration has elapsed before the VM instance is removed or deleted.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] instance_group_manager
        #   Name of the managed instance group.
        # @param [Fixnum] size
        #   Number of instances that should exist in this instance group
        #   manager.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def resize_region_instance_group_manager(project, region, instance_group_manager, size, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/resize', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['size'] = size unless size.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Flags the specified instances in the managed instance group to be
        # resumed. This method increases thetargetSize and decreases the
        # targetSuspendedSize
        # of the managed instance group by the number of instances that you resume.
        # The resumeInstances operation is marked DONE if
        # the resumeInstances request is successful. The underlying
        # actions take additional time. You must separately verify the status of
        # theRESUMING action with thelistmanagedinstances
        # method.
        # In this request, you can only specify instances that are suspended. For
        # example, if an instance was previously suspended using the suspendInstances
        # method, it can be resumed using the resumeInstances method.
        # If a health check is attached to the managed instance group, the specified
        # instances will be verified as healthy after they are resumed.
        # You can specify a maximum of 1000 instances with this method per request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] instance_group_manager
        #   Name of the managed instance group.
        # @param [Google::Apis::ComputeV1::RegionInstanceGroupManagersResumeInstancesRequest] region_instance_group_managers_resume_instances_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def resume_region_instance_group_manager_instances(project, region, instance_group_manager, region_instance_group_managers_resume_instances_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/resumeInstances', options)
          command.request_representation = Google::Apis::ComputeV1::RegionInstanceGroupManagersResumeInstancesRequest::Representation
          command.request_object = region_instance_group_managers_resume_instances_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the instance template to use when creating new instances or recreating
        # instances in this group. Existing instances are not affected.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] instance_group_manager
        #   The name of the managed instance group.
        # @param [Google::Apis::ComputeV1::RegionInstanceGroupManagersSetTemplateRequest] region_instance_group_managers_set_template_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_region_instance_group_manager_instance_template(project, region, instance_group_manager, region_instance_group_managers_set_template_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/setInstanceTemplate', options)
          command.request_representation = Google::Apis::ComputeV1::RegionInstanceGroupManagersSetTemplateRequest::Representation
          command.request_object = region_instance_group_managers_set_template_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Modifies the target pools to which all new instances in this group are
        # assigned. Existing instances in the group are not affected.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] instance_group_manager
        #   Name of the managed instance group.
        # @param [Google::Apis::ComputeV1::RegionInstanceGroupManagersSetTargetPoolsRequest] region_instance_group_managers_set_target_pools_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_region_instance_group_manager_target_pools(project, region, instance_group_manager, region_instance_group_managers_set_target_pools_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/setTargetPools', options)
          command.request_representation = Google::Apis::ComputeV1::RegionInstanceGroupManagersSetTargetPoolsRequest::Representation
          command.request_object = region_instance_group_managers_set_target_pools_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Flags the specified instances in the managed instance group to be
        # started. This method increases thetargetSize and decreases the
        # targetStoppedSize
        # of the managed instance group by the number of instances that you start.
        # The startInstances operation is marked DONE if
        # the startInstances request is successful. The underlying
        # actions take additional time. You must separately verify the status of
        # theSTARTING action with thelistmanagedinstances
        # method.
        # In this request, you can only specify instances that are stopped. For
        # example, if an instance was previously stopped using the stopInstances
        # method, it can be started using the startInstances method.
        # If a health check is attached to the managed instance group, the specified
        # instances will be verified as healthy after they are started.
        # You can specify a maximum of 1000 instances with this method per request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] instance_group_manager
        #   Name of the managed instance group.
        # @param [Google::Apis::ComputeV1::RegionInstanceGroupManagersStartInstancesRequest] region_instance_group_managers_start_instances_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def start_region_instance_group_manager_instances(project, region, instance_group_manager, region_instance_group_managers_start_instances_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/startInstances', options)
          command.request_representation = Google::Apis::ComputeV1::RegionInstanceGroupManagersStartInstancesRequest::Representation
          command.request_object = region_instance_group_managers_start_instances_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Flags the specified instances in the managed instance group to be
        # immediately stopped. You can only specify instances that are running in
        # this request. This method reduces thetargetSize and increases the
        # targetStoppedSize
        # of the managed instance group by the number of instances that you stop.
        # The stopInstances operation is marked DONE if
        # the stopInstances request is successful. The underlying
        # actions take additional time. You must separately verify the status of
        # theSTOPPING action with thelistmanagedinstances
        # method.
        # If the standbyPolicy.initialDelaySec field is set, the group
        # delays stopping the instances until initialDelaySec have
        # passed from instance.creationTimestamp (that is, when the
        # instance was created). This delay gives your application time to
        # set itself up and initialize on the instance. If more thaninitialDelaySec
        # seconds have passed sinceinstance.creationTimestamp when this method is called,
        # there
        # will be zero delay.
        # If the group is part of a backend
        # service that has enabled
        # connection draining, it can take up to 60 seconds after the connection
        # draining duration has elapsed before the VM instance is stopped.
        # Stopped instances can be started using the startInstances
        # method.
        # You can specify a maximum of 1000 instances with this method per request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] instance_group_manager
        #   The name of the managed instance group.
        # @param [Google::Apis::ComputeV1::RegionInstanceGroupManagersStopInstancesRequest] region_instance_group_managers_stop_instances_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def stop_region_instance_group_manager_instances(project, region, instance_group_manager, region_instance_group_managers_stop_instances_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/stopInstances', options)
          command.request_representation = Google::Apis::ComputeV1::RegionInstanceGroupManagersStopInstancesRequest::Representation
          command.request_object = region_instance_group_managers_stop_instances_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Flags the specified instances in the managed instance group to be
        # immediately suspended. You can only specify instances that are running in
        # this request. This method reduces thetargetSize and increases the
        # targetSuspendedSize
        # of the managed instance group by the number of instances that you suspend.
        # The suspendInstances operation is marked DONE if
        # the suspendInstances request is successful. The underlying
        # actions take additional time. You must separately verify the status of
        # theSUSPENDING action with thelistmanagedinstances
        # method.
        # If the standbyPolicy.initialDelaySec field is set, the group
        # delays suspension of the instances until initialDelaySec have
        # passed from instance.creationTimestamp (that is, when the
        # instance was created). This delay gives your application time to
        # set itself up and initialize on the instance. If more thaninitialDelaySec
        # seconds have passed sinceinstance.creationTimestamp when this method is called,
        # there
        # will be zero delay.
        # If the group is part of a backend
        # service that has enabled
        # connection draining, it can take up to 60 seconds after the connection
        # draining duration has elapsed before the VM instance is suspended.
        # Suspended instances can be resumed using the resumeInstances
        # method.
        # You can specify a maximum of 1000 instances with this method per request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] instance_group_manager
        #   Name of the managed instance group.
        # @param [Google::Apis::ComputeV1::RegionInstanceGroupManagersSuspendInstancesRequest] region_instance_group_managers_suspend_instances_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def suspend_region_instance_group_manager_instances(project, region, instance_group_manager, region_instance_group_managers_suspend_instances_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/suspendInstances', options)
          command.request_representation = Google::Apis::ComputeV1::RegionInstanceGroupManagersSuspendInstancesRequest::Representation
          command.request_object = region_instance_group_managers_suspend_instances_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Inserts or updates per-instance configurations for the managed instance
        # group. perInstanceConfig.name serves as a key used to
        # distinguish whether to perform insert or patch.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request, should conform to RFC1035.
        # @param [String] instance_group_manager
        #   The name of the managed instance group.
        #   It should conform to RFC1035.
        # @param [Google::Apis::ComputeV1::RegionInstanceGroupManagerUpdateInstanceConfigReq] region_instance_group_manager_update_instance_config_req_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def update_region_instance_group_manager_per_instance_configs(project, region, instance_group_manager, region_instance_group_manager_update_instance_config_req_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/updatePerInstanceConfigs', options)
          command.request_representation = Google::Apis::ComputeV1::RegionInstanceGroupManagerUpdateInstanceConfigReq::Representation
          command.request_object = region_instance_group_manager_update_instance_config_req_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['instanceGroupManager'] = instance_group_manager unless instance_group_manager.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified instance group resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] instance_group
        #   Name of the instance group resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InstanceGroup] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InstanceGroup]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_region_instance_group(project, region, instance_group, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/instanceGroups/{instanceGroup}', options)
          command.response_representation = Google::Apis::ComputeV1::InstanceGroup::Representation
          command.response_class = Google::Apis::ComputeV1::InstanceGroup
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['instanceGroup'] = instance_group unless instance_group.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of instance group resources contained within
        # the specified region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::RegionInstanceGroupList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::RegionInstanceGroupList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_region_instance_groups(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/instanceGroups', options)
          command.response_representation = Google::Apis::ComputeV1::RegionInstanceGroupList::Representation
          command.response_class = Google::Apis::ComputeV1::RegionInstanceGroupList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists the instances in the specified instance group and displays
        # information about the named ports. Depending on the specified options, this
        # method can list all instances or only the instances that are running.
        # The orderBy query parameter is not supported.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] instance_group
        #   Name of the regional instance group for which we want to list the
        #   instances.
        # @param [Google::Apis::ComputeV1::RegionInstanceGroupsListInstancesRequest] region_instance_groups_list_instances_request_object
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::RegionInstanceGroupsListInstances] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::RegionInstanceGroupsListInstances]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_region_instance_group_instances(project, region, instance_group, region_instance_groups_list_instances_request_object = nil, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/instanceGroups/{instanceGroup}/listInstances', options)
          command.request_representation = Google::Apis::ComputeV1::RegionInstanceGroupsListInstancesRequest::Representation
          command.request_object = region_instance_groups_list_instances_request_object
          command.response_representation = Google::Apis::ComputeV1::RegionInstanceGroupsListInstances::Representation
          command.response_class = Google::Apis::ComputeV1::RegionInstanceGroupsListInstances
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['instanceGroup'] = instance_group unless instance_group.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the named ports for the specified regional instance group.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] instance_group
        #   The name of the regional instance group where the named ports are updated.
        # @param [Google::Apis::ComputeV1::RegionInstanceGroupsSetNamedPortsRequest] region_instance_groups_set_named_ports_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_region_instance_group_named_ports(project, region, instance_group, region_instance_groups_set_named_ports_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/instanceGroups/{instanceGroup}/setNamedPorts', options)
          command.request_representation = Google::Apis::ComputeV1::RegionInstanceGroupsSetNamedPortsRequest::Representation
          command.request_object = region_instance_groups_set_named_ports_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['instanceGroup'] = instance_group unless instance_group.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_region_instance_group_iam_permissions(project, region, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/instanceGroups/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified instance template. Deleting an instance template is
        # permanent and cannot be undone.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] instance_template
        #   The name of the instance template to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_region_instance_template(project, region, instance_template, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/regions/{region}/instanceTemplates/{instanceTemplate}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['instanceTemplate'] = instance_template unless instance_template.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified instance template.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] instance_template
        #   The name of the instance template.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InstanceTemplate] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InstanceTemplate]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_region_instance_template(project, region, instance_template, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/instanceTemplates/{instanceTemplate}', options)
          command.response_representation = Google::Apis::ComputeV1::InstanceTemplate::Representation
          command.response_class = Google::Apis::ComputeV1::InstanceTemplate
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['instanceTemplate'] = instance_template unless instance_template.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates an instance template in the specified project and region using the
        # global instance template whose URL is included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [Google::Apis::ComputeV1::InstanceTemplate] instance_template_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_region_instance_template(project, region, instance_template_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/instanceTemplates', options)
          command.request_representation = Google::Apis::ComputeV1::InstanceTemplate::Representation
          command.request_object = instance_template_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of instance templates that are contained within the
        # specified project and region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the regions for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InstanceTemplateList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InstanceTemplateList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_region_instance_templates(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/instanceTemplates', options)
          command.response_representation = Google::Apis::ComputeV1::InstanceTemplateList::Representation
          command.response_class = Google::Apis::ComputeV1::InstanceTemplateList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates multiple instances in a given region. Count specifies the number of
        # instances to create.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [Google::Apis::ComputeV1::BulkInsertInstanceResource] bulk_insert_instance_resource_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def bulk_region_instance_insert(project, region, bulk_insert_instance_resource_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/instances/bulkInsert', options)
          command.request_representation = Google::Apis::ComputeV1::BulkInsertInstanceResource::Representation
          command.request_object = bulk_insert_instance_resource_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified InstantSnapshot resource. Keep in mind that deleting
        # a single instantSnapshot might not necessarily delete all the data on that
        # instantSnapshot. If any data on the instantSnapshot that is marked for
        # deletion is needed for subsequent instantSnapshots, the data will be moved
        # to the next corresponding instantSnapshot.
        # For more information, seeDeleting
        # instantSnapshots.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] instant_snapshot
        #   Name of the InstantSnapshot resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_region_instant_snapshot(project, region, instant_snapshot, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/regions/{region}/instantSnapshots/{instantSnapshot}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['instantSnapshot'] = instant_snapshot unless instant_snapshot.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified InstantSnapshot resource in the specified region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] instant_snapshot
        #   Name of the InstantSnapshot resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InstantSnapshot] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InstantSnapshot]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_region_instant_snapshot(project, region, instant_snapshot, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/instantSnapshots/{instantSnapshot}', options)
          command.response_representation = Google::Apis::ComputeV1::InstantSnapshot::Representation
          command.response_class = Google::Apis::ComputeV1::InstantSnapshot
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['instantSnapshot'] = instant_snapshot unless instant_snapshot.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets the access control policy for a resource. May be empty if no such
        # policy or resource exists.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Fixnum] options_requested_policy_version
        #   Requested IAM Policy version.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_region_instant_snapshot_iam_policy(project, region, resource, options_requested_policy_version: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/instantSnapshots/{resource}/getIamPolicy', options)
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['optionsRequestedPolicyVersion'] = options_requested_policy_version unless options_requested_policy_version.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates an instant snapshot in the specified region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [Google::Apis::ComputeV1::InstantSnapshot] instant_snapshot_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_region_instant_snapshot(project, region, instant_snapshot_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/instantSnapshots', options)
          command.request_representation = Google::Apis::ComputeV1::InstantSnapshot::Representation
          command.request_object = instant_snapshot_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of InstantSnapshot resources contained within
        # the specified region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::InstantSnapshotList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::InstantSnapshotList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_region_instant_snapshots(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/instantSnapshots', options)
          command.response_representation = Google::Apis::ComputeV1::InstantSnapshotList::Representation
          command.response_class = Google::Apis::ComputeV1::InstantSnapshotList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the access control policy on the specified resource.
        # Replaces any existing policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::RegionSetPolicyRequest] region_set_policy_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_region_instant_snapshot_iam_policy(project, region, resource, region_set_policy_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/instantSnapshots/{resource}/setIamPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::RegionSetPolicyRequest::Representation
          command.request_object = region_set_policy_request_object
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the labels on a instantSnapshot in the given region. To learn more
        # about labels, read the Labeling
        # Resources documentation.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::RegionSetLabelsRequest] region_set_labels_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_region_instant_snapshot_labels(project, region, resource, region_set_labels_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/instantSnapshots/{resource}/setLabels', options)
          command.request_representation = Google::Apis::ComputeV1::RegionSetLabelsRequest::Representation
          command.request_object = region_set_labels_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_region_instant_snapshot_iam_permissions(project, region, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/instantSnapshots/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Attach a list of network endpoints to the specified network endpoint group.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region where
        #   you want to create the network endpoint group. It should comply with
        #   RFC1035.
        # @param [String] network_endpoint_group
        #   The name of the network endpoint group where you are attaching network
        #   endpoints to. It should comply with RFC1035.
        # @param [Google::Apis::ComputeV1::RegionNetworkEndpointGroupsAttachEndpointsRequest] region_network_endpoint_groups_attach_endpoints_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def attach_region_network_endpoint_group_network_endpoints(project, region, network_endpoint_group, region_network_endpoint_groups_attach_endpoints_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/networkEndpointGroups/{networkEndpointGroup}/attachNetworkEndpoints', options)
          command.request_representation = Google::Apis::ComputeV1::RegionNetworkEndpointGroupsAttachEndpointsRequest::Representation
          command.request_object = region_network_endpoint_groups_attach_endpoints_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['networkEndpointGroup'] = network_endpoint_group unless network_endpoint_group.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified network endpoint group. Note that the NEG cannot be
        # deleted if it is configured as a backend of a backend service.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region where
        #   the network endpoint group is located. It should comply with RFC1035.
        # @param [String] network_endpoint_group
        #   The name of the network endpoint group to delete. It should comply with
        #   RFC1035.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_region_network_endpoint_group(project, region, network_endpoint_group, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/regions/{region}/networkEndpointGroups/{networkEndpointGroup}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['networkEndpointGroup'] = network_endpoint_group unless network_endpoint_group.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Detach the network endpoint from the specified network endpoint group.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region where
        #   the network endpoint group is located. It should comply with
        #   RFC1035.
        # @param [String] network_endpoint_group
        #   The name of the network endpoint group you are detaching network
        #   endpoints from. It should comply with RFC1035.
        # @param [Google::Apis::ComputeV1::RegionNetworkEndpointGroupsDetachEndpointsRequest] region_network_endpoint_groups_detach_endpoints_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        #   end_interface: MixerMutationRequestBuilder
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def detach_region_network_endpoint_group_network_endpoints(project, region, network_endpoint_group, region_network_endpoint_groups_detach_endpoints_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/networkEndpointGroups/{networkEndpointGroup}/detachNetworkEndpoints', options)
          command.request_representation = Google::Apis::ComputeV1::RegionNetworkEndpointGroupsDetachEndpointsRequest::Representation
          command.request_object = region_network_endpoint_groups_detach_endpoints_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['networkEndpointGroup'] = network_endpoint_group unless network_endpoint_group.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified network endpoint group.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region where
        #   the network endpoint group is located. It should comply with RFC1035.
        # @param [String] network_endpoint_group
        #   The name of the network endpoint group. It should comply with RFC1035.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::NetworkEndpointGroup] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::NetworkEndpointGroup]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_region_network_endpoint_group(project, region, network_endpoint_group, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/networkEndpointGroups/{networkEndpointGroup}', options)
          command.response_representation = Google::Apis::ComputeV1::NetworkEndpointGroup::Representation
          command.response_class = Google::Apis::ComputeV1::NetworkEndpointGroup
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['networkEndpointGroup'] = network_endpoint_group unless network_endpoint_group.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a network endpoint group in the specified project using the
        # parameters that are included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region where
        #   you want to create the network endpoint group. It should comply with
        #   RFC1035.
        # @param [Google::Apis::ComputeV1::NetworkEndpointGroup] network_endpoint_group_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_region_network_endpoint_group(project, region, network_endpoint_group_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/networkEndpointGroups', options)
          command.request_representation = Google::Apis::ComputeV1::NetworkEndpointGroup::Representation
          command.request_object = network_endpoint_group_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of regional network endpoint groups available to the
        # specified project in the given region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of theregion
        #   where the network endpoint group is located. It should comply with RFC1035.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::NetworkEndpointGroupList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::NetworkEndpointGroupList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_region_network_endpoint_groups(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/networkEndpointGroups', options)
          command.response_representation = Google::Apis::ComputeV1::NetworkEndpointGroupList::Representation
          command.response_class = Google::Apis::ComputeV1::NetworkEndpointGroupList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists the network endpoints in the specified network endpoint group.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of theregion
        #   where the network endpoint group is located. It should comply with RFC1035.
        # @param [String] network_endpoint_group
        #   The name of the network endpoint group from which you want to generate a
        #   list of included network endpoints. It should comply with RFC1035.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::NetworkEndpointGroupsListNetworkEndpoints] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::NetworkEndpointGroupsListNetworkEndpoints]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_region_network_endpoint_group_network_endpoints(project, region, network_endpoint_group, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/networkEndpointGroups/{networkEndpointGroup}/listNetworkEndpoints', options)
          command.response_representation = Google::Apis::ComputeV1::NetworkEndpointGroupsListNetworkEndpoints::Representation
          command.response_class = Google::Apis::ComputeV1::NetworkEndpointGroupsListNetworkEndpoints
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['networkEndpointGroup'] = network_endpoint_group unless network_endpoint_group.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Inserts an association for the specified network firewall policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] firewall_policy
        #   Name of the firewall policy to update.
        # @param [Google::Apis::ComputeV1::FirewallPolicyAssociation] firewall_policy_association_object
        # @param [Boolean] replace_existing_association
        #   Indicates whether or not to replace it if an association already exists.
        #   This is false by default, in which case an error will be returned if an
        #   association already exists.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def add_region_network_firewall_policy_association(project, region, firewall_policy, firewall_policy_association_object = nil, replace_existing_association: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/firewallPolicies/{firewallPolicy}/addAssociation', options)
          command.request_representation = Google::Apis::ComputeV1::FirewallPolicyAssociation::Representation
          command.request_object = firewall_policy_association_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['replaceExistingAssociation'] = replace_existing_association unless replace_existing_association.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Inserts a rule into a network firewall policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] firewall_policy
        #   Name of the firewall policy to update.
        # @param [Google::Apis::ComputeV1::FirewallPolicyRule] firewall_policy_rule_object
        # @param [Fixnum] max_priority
        #   When rule.priority is not specified, auto choose a unused priority
        #   betweenminPriority and maxPriority>.
        #   This field is exclusive with rule.priority.
        # @param [Fixnum] min_priority
        #   When rule.priority is not specified, auto choose a unused priority
        #   betweenminPriority and maxPriority>.
        #   This field is exclusive with rule.priority.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def add_region_network_firewall_policy_rule(project, region, firewall_policy, firewall_policy_rule_object = nil, max_priority: nil, min_priority: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/firewallPolicies/{firewallPolicy}/addRule', options)
          command.request_representation = Google::Apis::ComputeV1::FirewallPolicyRule::Representation
          command.request_object = firewall_policy_rule_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['maxPriority'] = max_priority unless max_priority.nil?
          command.query['minPriority'] = min_priority unless min_priority.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Copies rules to the specified network firewall policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] firewall_policy
        #   Name of the firewall policy to update.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] source_firewall_policy
        #   The firewall policy from which to copy rules.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def clone_region_network_firewall_policy_rules(project, region, firewall_policy, request_id: nil, source_firewall_policy: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/firewallPolicies/{firewallPolicy}/cloneRules', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['sourceFirewallPolicy'] = source_firewall_policy unless source_firewall_policy.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified network firewall policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] firewall_policy
        #   Name of the firewall policy to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_region_network_firewall_policy(project, region, firewall_policy, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/regions/{region}/firewallPolicies/{firewallPolicy}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified network firewall policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] firewall_policy
        #   Name of the firewall policy to get.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::FirewallPolicy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::FirewallPolicy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_region_network_firewall_policy(project, region, firewall_policy, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/firewallPolicies/{firewallPolicy}', options)
          command.response_representation = Google::Apis::ComputeV1::FirewallPolicy::Representation
          command.response_class = Google::Apis::ComputeV1::FirewallPolicy
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets an association with the specified name.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] firewall_policy
        #   Name of the firewall policy to which the queried association belongs.
        # @param [String] name
        #   The name of the association to get from the firewall policy.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::FirewallPolicyAssociation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::FirewallPolicyAssociation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_region_network_firewall_policy_association(project, region, firewall_policy, name: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/firewallPolicies/{firewallPolicy}/getAssociation', options)
          command.response_representation = Google::Apis::ComputeV1::FirewallPolicyAssociation::Representation
          command.response_class = Google::Apis::ComputeV1::FirewallPolicyAssociation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['name'] = name unless name.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the effective firewalls on a given network.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] network
        #   Network reference
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_region_network_firewall_policy_effective_firewalls(project, region, network, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/firewallPolicies/getEffectiveFirewalls', options)
          command.response_representation = Google::Apis::ComputeV1::RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['network'] = network unless network.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets the access control policy for a resource. May be empty if no such
        # policy or resource exists.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Fixnum] options_requested_policy_version
        #   Requested IAM Policy version.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_region_network_firewall_policy_iam_policy(project, region, resource, options_requested_policy_version: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/firewallPolicies/{resource}/getIamPolicy', options)
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['optionsRequestedPolicyVersion'] = options_requested_policy_version unless options_requested_policy_version.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets a rule of the specified priority.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] firewall_policy
        #   Name of the firewall policy to which the queried rule belongs.
        # @param [Fixnum] priority
        #   The priority of the rule to get from the firewall policy.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::FirewallPolicyRule] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::FirewallPolicyRule]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_region_network_firewall_policy_rule(project, region, firewall_policy, priority: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/firewallPolicies/{firewallPolicy}/getRule', options)
          command.response_representation = Google::Apis::ComputeV1::FirewallPolicyRule::Representation
          command.response_class = Google::Apis::ComputeV1::FirewallPolicyRule
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['priority'] = priority unless priority.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a new network firewall policy in the specified project and region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [Google::Apis::ComputeV1::FirewallPolicy] firewall_policy_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID
        #   so that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_region_network_firewall_policy(project, region, firewall_policy_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/firewallPolicies', options)
          command.request_representation = Google::Apis::ComputeV1::FirewallPolicy::Representation
          command.request_object = firewall_policy_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists all the network firewall policies that have been configured
        # for the specified project in the given region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::FirewallPolicyList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::FirewallPolicyList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_region_network_firewall_policies(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/firewallPolicies', options)
          command.response_representation = Google::Apis::ComputeV1::FirewallPolicyList::Representation
          command.response_class = Google::Apis::ComputeV1::FirewallPolicyList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches the specified network firewall policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] firewall_policy
        #   Name of the firewall policy to update.
        # @param [Google::Apis::ComputeV1::FirewallPolicy] firewall_policy_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_region_network_firewall_policy(project, region, firewall_policy, firewall_policy_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/regions/{region}/firewallPolicies/{firewallPolicy}', options)
          command.request_representation = Google::Apis::ComputeV1::FirewallPolicy::Representation
          command.request_object = firewall_policy_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches a rule of the specified priority.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] firewall_policy
        #   Name of the firewall policy to update.
        # @param [Google::Apis::ComputeV1::FirewallPolicyRule] firewall_policy_rule_object
        # @param [Fixnum] priority
        #   The priority of the rule to patch.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_region_network_firewall_policy_rule(project, region, firewall_policy, firewall_policy_rule_object = nil, priority: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/firewallPolicies/{firewallPolicy}/patchRule', options)
          command.request_representation = Google::Apis::ComputeV1::FirewallPolicyRule::Representation
          command.request_object = firewall_policy_rule_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['priority'] = priority unless priority.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Removes an association for the specified network firewall policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] firewall_policy
        #   Name of the firewall policy to update.
        # @param [String] name
        #   Name for the association that will be removed.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def remove_region_network_firewall_policy_association(project, region, firewall_policy, name: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/firewallPolicies/{firewallPolicy}/removeAssociation', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['name'] = name unless name.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes a rule of the specified priority.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] firewall_policy
        #   Name of the firewall policy to update.
        # @param [Fixnum] priority
        #   The priority of the rule to remove from the firewall policy.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def remove_region_network_firewall_policy_rule(project, region, firewall_policy, priority: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/firewallPolicies/{firewallPolicy}/removeRule', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['firewallPolicy'] = firewall_policy unless firewall_policy.nil?
          command.query['priority'] = priority unless priority.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the access control policy on the specified resource.
        # Replaces any existing policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::RegionSetPolicyRequest] region_set_policy_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_region_network_firewall_policy_iam_policy(project, region, resource, region_set_policy_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/firewallPolicies/{resource}/setIamPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::RegionSetPolicyRequest::Representation
          command.request_object = region_set_policy_request_object
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_region_network_firewall_policy_iam_permissions(project, region, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/firewallPolicies/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified NotificationEndpoint in the given region
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] notification_endpoint
        #   Name of the NotificationEndpoint resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_region_notification_endpoint(project, region, notification_endpoint, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/regions/{region}/notificationEndpoints/{notificationEndpoint}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['notificationEndpoint'] = notification_endpoint unless notification_endpoint.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified NotificationEndpoint resource in the given region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] notification_endpoint
        #   Name of the NotificationEndpoint resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::NotificationEndpoint] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::NotificationEndpoint]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_region_notification_endpoint(project, region, notification_endpoint, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/notificationEndpoints/{notificationEndpoint}', options)
          command.response_representation = Google::Apis::ComputeV1::NotificationEndpoint::Representation
          command.response_class = Google::Apis::ComputeV1::NotificationEndpoint
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['notificationEndpoint'] = notification_endpoint unless notification_endpoint.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Create a NotificationEndpoint in the specified project in the given region
        # using the parameters that are included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [Google::Apis::ComputeV1::NotificationEndpoint] notification_endpoint_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_region_notification_endpoint(project, region, notification_endpoint_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/notificationEndpoints', options)
          command.request_representation = Google::Apis::ComputeV1::NotificationEndpoint::Representation
          command.request_object = notification_endpoint_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists the NotificationEndpoints for a project in the given region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::NotificationEndpointList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::NotificationEndpointList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_region_notification_endpoints(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/notificationEndpoints', options)
          command.response_representation = Google::Apis::ComputeV1::NotificationEndpointList::Representation
          command.response_class = Google::Apis::ComputeV1::NotificationEndpointList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_region_notification_endpoint_iam_permissions(project, region, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/notificationEndpoints/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified region-specific Operations resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] operation
        #   Name of the Operations resource to delete, or its unique numeric
        #   identifier.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [NilClass] No result returned for this method
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [void]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_region_operation(project, region, operation, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/regions/{region}/operations/{operation}', options)
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['operation'] = operation unless operation.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the specified region-specific Operations resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] operation
        #   Name of the Operations resource to return, or its unique numeric
        #   identifier.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_region_operation(project, region, operation, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/operations/{operation}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['operation'] = operation unless operation.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of Operation resources contained within
        # the specified region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::OperationList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::OperationList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_region_operations(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/operations', options)
          command.response_representation = Google::Apis::ComputeV1::OperationList::Representation
          command.response_class = Google::Apis::ComputeV1::OperationList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Waits for the specified Operation resource to return as `DONE`
        # or for the request to approach the 2 minute deadline, and retrieves the
        # specified Operation resource. This method differs from the
        # `GET` method in that it waits for no more than the default
        # deadline (2 minutes) and then returns the current state of the operation,
        # which might be `DONE` or still in progress.
        # This method is called on a best-effort basis. Specifically:
        # 
        # 
        # - In uncommon cases, when the server is overloaded, the request might
        # return before the default deadline is reached, or might return after zero
        # seconds.
        # - If the default deadline is reached, there is no guarantee that the
        # operation is actually done when the method returns. Be prepared to retry
        # if the operation is not `DONE`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] operation
        #   Name of the Operations resource to return, or its unique numeric
        #   identifier.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def wait_region_operation(project, region, operation, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/operations/{operation}/wait', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['operation'] = operation unless operation.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Inserts a rule into a security policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] security_policy
        #   Name of the security policy to update.
        # @param [Google::Apis::ComputeV1::SecurityPolicyRule] security_policy_rule_object
        # @param [Boolean] validate_only
        #   If true, the request will not be committed.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def add_region_security_policy_rule(project, region, security_policy, security_policy_rule_object = nil, validate_only: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/securityPolicies/{securityPolicy}/addRule', options)
          command.request_representation = Google::Apis::ComputeV1::SecurityPolicyRule::Representation
          command.request_object = security_policy_rule_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['securityPolicy'] = security_policy unless security_policy.nil?
          command.query['validateOnly'] = validate_only unless validate_only.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] security_policy
        #   Name of the security policy to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_region_security_policy(project, region, security_policy, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/regions/{region}/securityPolicies/{securityPolicy}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['securityPolicy'] = security_policy unless security_policy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # List all of the ordered rules present in a single specified policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] security_policy
        #   Name of the security policy to get.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::SecurityPolicy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::SecurityPolicy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_region_security_policy(project, region, security_policy, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/securityPolicies/{securityPolicy}', options)
          command.response_representation = Google::Apis::ComputeV1::SecurityPolicy::Representation
          command.response_class = Google::Apis::ComputeV1::SecurityPolicy
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['securityPolicy'] = security_policy unless security_policy.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets a rule at the specified priority.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] security_policy
        #   Name of the security policy to which the queried rule belongs.
        # @param [Fixnum] priority
        #   The priority of the rule to get from the security policy.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::SecurityPolicyRule] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::SecurityPolicyRule]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_region_security_policy_rule(project, region, security_policy, priority: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/securityPolicies/{securityPolicy}/getRule', options)
          command.response_representation = Google::Apis::ComputeV1::SecurityPolicyRule::Representation
          command.response_class = Google::Apis::ComputeV1::SecurityPolicyRule
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['securityPolicy'] = security_policy unless security_policy.nil?
          command.query['priority'] = priority unless priority.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a new policy in the specified project using the data included in
        # the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [Google::Apis::ComputeV1::SecurityPolicy] security_policy_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [Boolean] validate_only
        #   If true, the request will not be committed.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_region_security_policy(project, region, security_policy_object = nil, request_id: nil, validate_only: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/securityPolicies', options)
          command.request_representation = Google::Apis::ComputeV1::SecurityPolicy::Representation
          command.request_object = security_policy_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['validateOnly'] = validate_only unless validate_only.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # List all the policies that have been configured for the specified project
        # and region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::SecurityPolicyList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::SecurityPolicyList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_region_security_policies(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/securityPolicies', options)
          command.response_representation = Google::Apis::ComputeV1::SecurityPolicyList::Representation
          command.response_class = Google::Apis::ComputeV1::SecurityPolicyList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches the specified policy with the data included in the request. To
        # clear fields in the policy, leave the fields empty and specify them in the
        # updateMask. This cannot be used to be update the rules in the policy.
        # Please use the per rule methods like addRule, patchRule, and removeRule
        # instead.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] security_policy
        #   Name of the security policy to update.
        # @param [Google::Apis::ComputeV1::SecurityPolicy] security_policy_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] update_mask
        #   Indicates fields to be cleared as part of this request.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_region_security_policy(project, region, security_policy, security_policy_object = nil, request_id: nil, update_mask: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/regions/{region}/securityPolicies/{securityPolicy}', options)
          command.request_representation = Google::Apis::ComputeV1::SecurityPolicy::Representation
          command.request_object = security_policy_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['securityPolicy'] = security_policy unless security_policy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['updateMask'] = update_mask unless update_mask.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches a rule at the specified priority. To clear fields in the rule,
        # leave the fields empty and specify them in the updateMask.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] security_policy
        #   Name of the security policy to update.
        # @param [Google::Apis::ComputeV1::SecurityPolicyRule] security_policy_rule_object
        # @param [Fixnum] priority
        #   The priority of the rule to patch.
        # @param [String] update_mask
        #   Indicates fields to be cleared as part of this request.
        # @param [Boolean] validate_only
        #   If true, the request will not be committed.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_region_security_policy_rule(project, region, security_policy, security_policy_rule_object = nil, priority: nil, update_mask: nil, validate_only: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/securityPolicies/{securityPolicy}/patchRule', options)
          command.request_representation = Google::Apis::ComputeV1::SecurityPolicyRule::Representation
          command.request_object = security_policy_rule_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['securityPolicy'] = security_policy unless security_policy.nil?
          command.query['priority'] = priority unless priority.nil?
          command.query['updateMask'] = update_mask unless update_mask.nil?
          command.query['validateOnly'] = validate_only unless validate_only.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes a rule at the specified priority.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] security_policy
        #   Name of the security policy to update.
        # @param [Fixnum] priority
        #   The priority of the rule to remove from the security policy.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def remove_region_security_policy_rule(project, region, security_policy, priority: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/securityPolicies/{securityPolicy}/removeRule', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['securityPolicy'] = security_policy unless security_policy.nil?
          command.query['priority'] = priority unless priority.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the labels on a security policy. To learn more about labels,
        # read the Labeling Resources
        # documentation.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::RegionSetLabelsRequest] region_set_labels_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_region_security_policy_labels(project, region, resource, region_set_labels_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/securityPolicies/{resource}/setLabels', options)
          command.request_representation = Google::Apis::ComputeV1::RegionSetLabelsRequest::Representation
          command.request_object = region_set_labels_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified SslCertificate resource in the region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] ssl_certificate
        #   Name of the SslCertificate resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_region_ssl_certificate(project, region, ssl_certificate, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/regions/{region}/sslCertificates/{sslCertificate}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['sslCertificate'] = ssl_certificate unless ssl_certificate.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified SslCertificate resource in the specified region. Get
        # a list of available SSL certificates by making a list()
        # request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] ssl_certificate
        #   Name of the SslCertificate resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::SslCertificate] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::SslCertificate]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_region_ssl_certificate(project, region, ssl_certificate, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/sslCertificates/{sslCertificate}', options)
          command.response_representation = Google::Apis::ComputeV1::SslCertificate::Representation
          command.response_class = Google::Apis::ComputeV1::SslCertificate
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['sslCertificate'] = ssl_certificate unless ssl_certificate.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a SslCertificate resource in the specified project and region using
        # the data included in the request
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [Google::Apis::ComputeV1::SslCertificate] ssl_certificate_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_region_ssl_certificate(project, region, ssl_certificate_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/sslCertificates', options)
          command.request_representation = Google::Apis::ComputeV1::SslCertificate::Representation
          command.request_object = ssl_certificate_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of SslCertificate resources available to the specified
        # project in the specified region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::SslCertificateList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::SslCertificateList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_region_ssl_certificates(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/sslCertificates', options)
          command.response_representation = Google::Apis::ComputeV1::SslCertificateList::Representation
          command.response_class = Google::Apis::ComputeV1::SslCertificateList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified SSL policy. The SSL policy resource can be deleted
        # only if it is not in use by any TargetHttpsProxy or TargetSslProxy
        # resources.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] ssl_policy
        #   Name of the SSL policy to delete. The name must be 1-63 characters long,
        #   and comply with RFC1035.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_region_ssl_policy(project, region, ssl_policy, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/regions/{region}/sslPolicies/{sslPolicy}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['sslPolicy'] = ssl_policy unless ssl_policy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists all of the ordered rules present in a single specified policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] ssl_policy
        #   Name of the SSL policy to update. The name must be 1-63 characters long,
        #   and comply with RFC1035.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::SslPolicy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::SslPolicy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_region_ssl_policy(project, region, ssl_policy, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/sslPolicies/{sslPolicy}', options)
          command.response_representation = Google::Apis::ComputeV1::SslPolicy::Representation
          command.response_class = Google::Apis::ComputeV1::SslPolicy
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['sslPolicy'] = ssl_policy unless ssl_policy.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a new policy in the specified project and region using the data
        # included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [Google::Apis::ComputeV1::SslPolicy] ssl_policy_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_region_ssl_policy(project, region, ssl_policy_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/sslPolicies', options)
          command.request_representation = Google::Apis::ComputeV1::SslPolicy::Representation
          command.request_object = ssl_policy_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists all the SSL policies that have been configured for the specified
        # project and region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::SslPoliciesList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::SslPoliciesList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_region_ssl_policies(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/sslPolicies', options)
          command.response_representation = Google::Apis::ComputeV1::SslPoliciesList::Representation
          command.response_class = Google::Apis::ComputeV1::SslPoliciesList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists all features that can be specified in the SSL policy when using
        # custom profile.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::SslPoliciesListAvailableFeaturesResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::SslPoliciesListAvailableFeaturesResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_region_ssl_policy_available_features(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/sslPolicies/listAvailableFeatures', options)
          command.response_representation = Google::Apis::ComputeV1::SslPoliciesListAvailableFeaturesResponse::Representation
          command.response_class = Google::Apis::ComputeV1::SslPoliciesListAvailableFeaturesResponse
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches the specified SSL policy with the data included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] ssl_policy
        #   Name of the SSL policy to update. The name must be 1-63 characters long,
        #   and comply with RFC1035.
        # @param [Google::Apis::ComputeV1::SslPolicy] ssl_policy_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_region_ssl_policy(project, region, ssl_policy, ssl_policy_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/regions/{region}/sslPolicies/{sslPolicy}', options)
          command.request_representation = Google::Apis::ComputeV1::SslPolicy::Representation
          command.request_object = ssl_policy_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['sslPolicy'] = ssl_policy unless ssl_policy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified TargetHttpProxy resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] target_http_proxy
        #   Name of the TargetHttpProxy resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_region_target_http_proxy(project, region, target_http_proxy, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/regions/{region}/targetHttpProxies/{targetHttpProxy}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['targetHttpProxy'] = target_http_proxy unless target_http_proxy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified TargetHttpProxy resource in the specified region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] target_http_proxy
        #   Name of the TargetHttpProxy resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TargetHttpProxy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TargetHttpProxy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_region_target_http_proxy(project, region, target_http_proxy, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/targetHttpProxies/{targetHttpProxy}', options)
          command.response_representation = Google::Apis::ComputeV1::TargetHttpProxy::Representation
          command.response_class = Google::Apis::ComputeV1::TargetHttpProxy
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['targetHttpProxy'] = target_http_proxy unless target_http_proxy.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a TargetHttpProxy resource in the specified project and region
        # using the data included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [Google::Apis::ComputeV1::TargetHttpProxy] target_http_proxy_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_region_target_http_proxy(project, region, target_http_proxy_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/targetHttpProxies', options)
          command.request_representation = Google::Apis::ComputeV1::TargetHttpProxy::Representation
          command.request_object = target_http_proxy_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of TargetHttpProxy resources available
        # to the specified project in the specified region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TargetHttpProxyList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TargetHttpProxyList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_region_target_http_proxies(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/targetHttpProxies', options)
          command.response_representation = Google::Apis::ComputeV1::TargetHttpProxyList::Representation
          command.response_class = Google::Apis::ComputeV1::TargetHttpProxyList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Changes the URL map for TargetHttpProxy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] target_http_proxy
        #   Name of the TargetHttpProxy to set a URL map for.
        # @param [Google::Apis::ComputeV1::UrlMapReference] url_map_reference_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_region_target_http_proxy_url_map(project, region, target_http_proxy, url_map_reference_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/targetHttpProxies/{targetHttpProxy}/setUrlMap', options)
          command.request_representation = Google::Apis::ComputeV1::UrlMapReference::Representation
          command.request_object = url_map_reference_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['targetHttpProxy'] = target_http_proxy unless target_http_proxy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified TargetHttpsProxy resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] target_https_proxy
        #   Name of the TargetHttpsProxy resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_region_target_https_proxy(project, region, target_https_proxy, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/regions/{region}/targetHttpsProxies/{targetHttpsProxy}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['targetHttpsProxy'] = target_https_proxy unless target_https_proxy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified TargetHttpsProxy resource in the specified region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] target_https_proxy
        #   Name of the TargetHttpsProxy resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TargetHttpsProxy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TargetHttpsProxy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_region_target_https_proxy(project, region, target_https_proxy, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/targetHttpsProxies/{targetHttpsProxy}', options)
          command.response_representation = Google::Apis::ComputeV1::TargetHttpsProxy::Representation
          command.response_class = Google::Apis::ComputeV1::TargetHttpsProxy
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['targetHttpsProxy'] = target_https_proxy unless target_https_proxy.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a TargetHttpsProxy resource in the specified project and region
        # using the data included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [Google::Apis::ComputeV1::TargetHttpsProxy] target_https_proxy_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_region_target_https_proxy(project, region, target_https_proxy_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/targetHttpsProxies', options)
          command.request_representation = Google::Apis::ComputeV1::TargetHttpsProxy::Representation
          command.request_object = target_https_proxy_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of TargetHttpsProxy resources available
        # to the specified project in the specified region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TargetHttpsProxyList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TargetHttpsProxyList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_region_target_https_proxies(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/targetHttpsProxies', options)
          command.response_representation = Google::Apis::ComputeV1::TargetHttpsProxyList::Representation
          command.response_class = Google::Apis::ComputeV1::TargetHttpsProxyList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches the specified regional TargetHttpsProxy resource with the data
        # included in the request. This method supports PATCH
        # semantics and usesJSON merge
        # patch format and processing rules.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] target_https_proxy
        #   Name of the TargetHttpsProxy resource to patch.
        # @param [Google::Apis::ComputeV1::TargetHttpsProxy] target_https_proxy_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_region_target_https_proxy(project, region, target_https_proxy, target_https_proxy_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/regions/{region}/targetHttpsProxies/{targetHttpsProxy}', options)
          command.request_representation = Google::Apis::ComputeV1::TargetHttpsProxy::Representation
          command.request_object = target_https_proxy_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['targetHttpsProxy'] = target_https_proxy unless target_https_proxy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Replaces SslCertificates for TargetHttpsProxy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] target_https_proxy
        #   Name of the TargetHttpsProxy resource to set an
        #   SslCertificates resource for.
        # @param [Google::Apis::ComputeV1::RegionTargetHttpsProxiesSetSslCertificatesRequest] region_target_https_proxies_set_ssl_certificates_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_region_target_https_proxy_ssl_certificates(project, region, target_https_proxy, region_target_https_proxies_set_ssl_certificates_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/targetHttpsProxies/{targetHttpsProxy}/setSslCertificates', options)
          command.request_representation = Google::Apis::ComputeV1::RegionTargetHttpsProxiesSetSslCertificatesRequest::Representation
          command.request_object = region_target_https_proxies_set_ssl_certificates_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['targetHttpsProxy'] = target_https_proxy unless target_https_proxy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Changes the URL map for TargetHttpsProxy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] target_https_proxy
        #   Name of the TargetHttpsProxy to set a URL map for.
        # @param [Google::Apis::ComputeV1::UrlMapReference] url_map_reference_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_region_target_https_proxy_url_map(project, region, target_https_proxy, url_map_reference_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/targetHttpsProxies/{targetHttpsProxy}/setUrlMap', options)
          command.request_representation = Google::Apis::ComputeV1::UrlMapReference::Representation
          command.request_object = url_map_reference_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['targetHttpsProxy'] = target_https_proxy unless target_https_proxy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified TargetTcpProxy resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] target_tcp_proxy
        #   Name of the TargetTcpProxy resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_region_target_tcp_proxy(project, region, target_tcp_proxy, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/regions/{region}/targetTcpProxies/{targetTcpProxy}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['targetTcpProxy'] = target_tcp_proxy unless target_tcp_proxy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified TargetTcpProxy resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] target_tcp_proxy
        #   Name of the TargetTcpProxy resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TargetTcpProxy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TargetTcpProxy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_region_target_tcp_proxy(project, region, target_tcp_proxy, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/targetTcpProxies/{targetTcpProxy}', options)
          command.response_representation = Google::Apis::ComputeV1::TargetTcpProxy::Representation
          command.response_class = Google::Apis::ComputeV1::TargetTcpProxy
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['targetTcpProxy'] = target_tcp_proxy unless target_tcp_proxy.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a TargetTcpProxy resource in the specified project and region using
        # the data included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [Google::Apis::ComputeV1::TargetTcpProxy] target_tcp_proxy_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_region_target_tcp_proxy(project, region, target_tcp_proxy_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/targetTcpProxies', options)
          command.request_representation = Google::Apis::ComputeV1::TargetTcpProxy::Representation
          command.request_object = target_tcp_proxy_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of TargetTcpProxy resources
        # available to the specified project in a given region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TargetTcpProxyList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TargetTcpProxyList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_region_target_tcp_proxies(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/targetTcpProxies', options)
          command.response_representation = Google::Apis::ComputeV1::TargetTcpProxyList::Representation
          command.response_class = Google::Apis::ComputeV1::TargetTcpProxyList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified UrlMap resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] url_map
        #   Name of the UrlMap resource to delete.
        # @param [String] request_id
        #   begin_interface: MixerMutationRequestBuilder
        #   Request ID to support idempotency.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_region_url_map(project, region, url_map, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/regions/{region}/urlMaps/{urlMap}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['urlMap'] = url_map unless url_map.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified UrlMap resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] url_map
        #   Name of the UrlMap resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::UrlMap] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::UrlMap]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_region_url_map(project, region, url_map, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/urlMaps/{urlMap}', options)
          command.response_representation = Google::Apis::ComputeV1::UrlMap::Representation
          command.response_class = Google::Apis::ComputeV1::UrlMap
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['urlMap'] = url_map unless url_map.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a UrlMap resource in the specified project using
        # the data included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [Google::Apis::ComputeV1::UrlMap] url_map_object
        # @param [String] request_id
        #   begin_interface: MixerMutationRequestBuilder
        #   Request ID to support idempotency.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_region_url_map(project, region, url_map_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/urlMaps', options)
          command.request_representation = Google::Apis::ComputeV1::UrlMap::Representation
          command.request_object = url_map_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of UrlMap resources available to the specified
        # project in the specified region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::UrlMapList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::UrlMapList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_region_url_maps(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/urlMaps', options)
          command.response_representation = Google::Apis::ComputeV1::UrlMapList::Representation
          command.response_class = Google::Apis::ComputeV1::UrlMapList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches the specified UrlMap resource with the data included in the
        # request. This method supportsPATCH
        # semantics and usesJSON merge
        # patch format and processing rules.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] url_map
        #   Name of the UrlMap resource to patch.
        # @param [Google::Apis::ComputeV1::UrlMap] url_map_object
        # @param [String] request_id
        #   begin_interface: MixerMutationRequestBuilder
        #   Request ID to support idempotency.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_region_url_map(project, region, url_map, url_map_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/regions/{region}/urlMaps/{urlMap}', options)
          command.request_representation = Google::Apis::ComputeV1::UrlMap::Representation
          command.request_object = url_map_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['urlMap'] = url_map unless url_map.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates the specified UrlMap resource with the data included in the
        # request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] url_map
        #   Name of the UrlMap resource to update.
        # @param [Google::Apis::ComputeV1::UrlMap] url_map_object
        # @param [String] request_id
        #   begin_interface: MixerMutationRequestBuilder
        #   Request ID to support idempotency.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def update_region_url_map(project, region, url_map, url_map_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:put, 'projects/{project}/regions/{region}/urlMaps/{urlMap}', options)
          command.request_representation = Google::Apis::ComputeV1::UrlMap::Representation
          command.request_object = url_map_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['urlMap'] = url_map unless url_map.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Runs static validation for the UrlMap. In particular, the tests of the
        # provided UrlMap will be run. Calling this method does NOT create the
        # UrlMap.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] url_map
        #   Name of the UrlMap resource to be validated as.
        # @param [Google::Apis::ComputeV1::RegionUrlMapsValidateRequest] region_url_maps_validate_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::ValidateUrlMapsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::ValidateUrlMapsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def validate_region_url_map(project, region, url_map, region_url_maps_validate_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/urlMaps/{urlMap}/validate', options)
          command.request_representation = Google::Apis::ComputeV1::RegionUrlMapsValidateRequest::Representation
          command.request_object = region_url_maps_validate_request_object
          command.response_representation = Google::Apis::ComputeV1::ValidateUrlMapsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::ValidateUrlMapsResponse
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['urlMap'] = url_map unless url_map.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of Zone resources under the specific region available to
        # the specified project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Region for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::ZoneList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::ZoneList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_region_zones(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/zones', options)
          command.response_representation = Google::Apis::ComputeV1::ZoneList::Representation
          command.response_class = Google::Apis::ComputeV1::ZoneList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified Region resource.
        # To decrease latency for this method, you can optionally omit any unneeded
        # information from the response by using a field mask. This practice is
        # especially recommended for unused quota information (the `quotas` field).
        # To exclude one or more fields, set your request's `fields` query parameter
        # to only include the fields you need. For example, to only include the `id`
        # and `selfLink` fields, add the query parameter `?fields=id,selfLink` to
        # your request.
        # This method fails if the quota information is unavailable for the region
        # and if the organization policy constraint
        # compute.requireBasicQuotaInResponse is enforced. This
        # constraint, when enforced, disables the fail-open behaviour when quota
        # information (the `items.quotas` field) is unavailable for the region.
        # It is recommended to use the default setting
        # for the constraint unless your application requires the fail-closed
        # behaviour for this method.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Region] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Region]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_region(project, region, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}', options)
          command.response_representation = Google::Apis::ComputeV1::Region::Representation
          command.response_class = Google::Apis::ComputeV1::Region
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of region resources available to the specified project.
        # To decrease latency for this method, you can optionally omit any unneeded
        # information from the response by using a field mask. This practice is
        # especially recommended for unused quota information
        # (the `items.quotas` field).
        # To exclude one or more fields, set your request's `fields` query parameter
        # to only include the fields you need. For example, to only include the `id`
        # and `selfLink` fields, add the query parameter `?fields=id,selfLink` to
        # your request.
        # This method fails if the quota information is unavailable for the region
        # and if the organization policy constraint
        # compute.requireBasicQuotaInResponse is enforced. This
        # constraint, when enforced, disables the fail-open behaviour when quota
        # information (the `items.quotas` field) is unavailable for the region.
        # It is recommended to use the default setting
        # for the constraint unless your application requires the fail-closed
        # behaviour for this method.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::RegionList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::RegionList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_regions(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions', options)
          command.response_representation = Google::Apis::ComputeV1::RegionList::Representation
          command.response_class = Google::Apis::ComputeV1::RegionList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves information about the specified reservation block.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone for this request. Zone name should conform to RFC1035.
        # @param [String] reservation
        #   The name of the reservation.
        #   Name should conform to RFC1035 or be a resource ID.
        # @param [String] reservation_block
        #   The name of the reservation block.
        #   Name should conform to RFC1035 or be a resource ID.
        # @param [String] view
        #   View of the Block.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::ReservationBlocksGetResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::ReservationBlocksGetResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_reservation_block(project, zone, reservation, reservation_block, view: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/reservations/{reservation}/reservationBlocks/{reservationBlock}', options)
          command.response_representation = Google::Apis::ComputeV1::ReservationBlocksGetResponse::Representation
          command.response_class = Google::Apis::ComputeV1::ReservationBlocksGetResponse
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['reservation'] = reservation unless reservation.nil?
          command.params['reservationBlock'] = reservation_block unless reservation_block.nil?
          command.query['view'] = view unless view.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets the access control policy for a resource. May be empty if no such
        # policy or resource exists.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] parent_resource
        #   Name or id of parent resource of the resource for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Fixnum] options_requested_policy_version
        #   Requested IAM Policy version.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_reservation_block_iam_policy(project, zone, parent_resource, resource, options_requested_policy_version: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/reservations/{parentResource}/reservationBlocks/{resource}/getIamPolicy', options)
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['parentResource'] = parent_resource unless parent_resource.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['optionsRequestedPolicyVersion'] = options_requested_policy_version unless options_requested_policy_version.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of reservation blocks under a single reservation.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone for this request. Zone name should conform to RFC1035.
        # @param [String] reservation
        #   The name of the reservation.
        #   Name should conform to RFC1035 or be a resource ID.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::ReservationBlocksListResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::ReservationBlocksListResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_reservation_blocks(project, zone, reservation, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/reservations/{reservation}/reservationBlocks', options)
          command.response_representation = Google::Apis::ComputeV1::ReservationBlocksListResponse::Representation
          command.response_class = Google::Apis::ComputeV1::ReservationBlocksListResponse
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['reservation'] = reservation unless reservation.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Allows customers to perform maintenance on a reservation block
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone for this request. Zone name should conform to RFC1035.
        # @param [String] reservation
        #   The name of the reservation.
        #   Name should conform to RFC1035 or be a resource ID.
        # @param [String] reservation_block
        #   The name of the reservation block.
        #   Name should conform to RFC1035 or be a resource ID.
        # @param [Google::Apis::ComputeV1::ReservationsBlocksPerformMaintenanceRequest] reservations_blocks_perform_maintenance_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def perform_reservation_block_maintenance(project, zone, reservation, reservation_block, reservations_blocks_perform_maintenance_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/reservations/{reservation}/reservationBlocks/{reservationBlock}/performMaintenance', options)
          command.request_representation = Google::Apis::ComputeV1::ReservationsBlocksPerformMaintenanceRequest::Representation
          command.request_object = reservations_blocks_perform_maintenance_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['reservation'] = reservation unless reservation.nil?
          command.params['reservationBlock'] = reservation_block unless reservation_block.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the access control policy on the specified resource.
        # Replaces any existing policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] parent_resource
        #   Name or id of parent resource of the resource for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::ZoneSetNestedPolicyRequest] zone_set_nested_policy_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_reservation_block_iam_policy(project, zone, parent_resource, resource, zone_set_nested_policy_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/reservations/{parentResource}/reservationBlocks/{resource}/setIamPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::ZoneSetNestedPolicyRequest::Representation
          command.request_object = zone_set_nested_policy_request_object
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['parentResource'] = parent_resource unless parent_resource.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] parent_resource
        #   Name or id of parent resource of the resource for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_reservation_block_iam_permissions(project, zone, parent_resource, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/reservations/{parentResource}/reservationBlocks/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['parentResource'] = parent_resource unless parent_resource.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves information about the specified reservation slot.
        # @param [String] project
        #   The project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request, formatted as RFC1035.
        # @param [String] parent_name
        #   The name of the parent reservation and parent block, formatted as
        #   reservations/`reservation_name`/reservationBlocks/`reservation_block_name`/
        #   reservationSubBlocks/`reservation_sub_block_name`
        # @param [String] reservation_slot
        #   The name of the reservation slot, formatted as RFC1035 or a resource ID
        #   number.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::ReservationSlotsGetResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::ReservationSlotsGetResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_reservation_slot(project, zone, parent_name, reservation_slot, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/{+parentName}/reservationSlots/{reservationSlot}', options)
          command.response_representation = Google::Apis::ComputeV1::ReservationSlotsGetResponse::Representation
          command.response_class = Google::Apis::ComputeV1::ReservationSlotsGetResponse
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['parentName'] = parent_name unless parent_name.nil?
          command.params['reservationSlot'] = reservation_slot unless reservation_slot.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of reservation slots under a single reservation.
        # @param [String] project
        #   The project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request, formatted as RFC1035.
        # @param [String] parent_name
        #   The name of the parent reservation and parent block, formatted as
        #   reservations/`reservation_name`/reservationBlocks/`reservation_block_name`/
        #   reservationSubBlocks/`reservation_sub_block_name`
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::ReservationSlotsListResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::ReservationSlotsListResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_reservation_slots(project, zone, parent_name, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/{+parentName}/reservationSlots', options)
          command.response_representation = Google::Apis::ComputeV1::ReservationSlotsListResponse::Representation
          command.response_class = Google::Apis::ComputeV1::ReservationSlotsListResponse
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['parentName'] = parent_name unless parent_name.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Update a reservation slot in the specified sub-block.
        # @param [String] project
        #   The project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request, formatted as RFC1035.
        # @param [String] parent_name
        #   The name of the sub-block resource.
        # @param [String] reservation_slot
        #   The name of the slot resource.
        # @param [Google::Apis::ComputeV1::ReservationSlot] reservation_slot_object
        # @param [String] update_mask
        #   The fields to be updated as part of this request.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def update_reservation_slot(project, zone, parent_name, reservation_slot, reservation_slot_object = nil, update_mask: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/{+parentName}/reservationSlots/{reservationSlot}', options)
          command.request_representation = Google::Apis::ComputeV1::ReservationSlot::Representation
          command.request_object = reservation_slot_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['parentName'] = parent_name unless parent_name.nil?
          command.params['reservationSlot'] = reservation_slot unless reservation_slot.nil?
          command.query['updateMask'] = update_mask unless update_mask.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves information about the specified reservation subBlock.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone for this request. Zone name should conform to RFC1035.
        # @param [String] parent_name
        #   The name of the parent reservation and parent block. In the format of
        #   reservations/`reservation_name`/reservationBlocks/`reservation_block_name`
        # @param [String] reservation_sub_block
        #   The name of the reservation subBlock.
        #   Name should conform to RFC1035 or be a resource ID.
        # @param [String] view
        #   View of the subBlock.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::ReservationSubBlocksGetResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::ReservationSubBlocksGetResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_reservation_sub_block(project, zone, parent_name, reservation_sub_block, view: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/{parentName}/reservationSubBlocks/{reservationSubBlock}', options)
          command.response_representation = Google::Apis::ComputeV1::ReservationSubBlocksGetResponse::Representation
          command.response_class = Google::Apis::ComputeV1::ReservationSubBlocksGetResponse
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['parentName'] = parent_name unless parent_name.nil?
          command.params['reservationSubBlock'] = reservation_sub_block unless reservation_sub_block.nil?
          command.query['view'] = view unless view.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets the access control policy for a resource. May be empty if no such
        # policy or resource exists.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] parent_resource
        #   Name or id of parent resource of the resource for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Fixnum] options_requested_policy_version
        #   Requested IAM Policy version.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_reservation_sub_block_iam_policy(project, zone, parent_resource, resource, options_requested_policy_version: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/{parentResource}/reservationSubBlocks/{resource}/getIamPolicy', options)
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['parentResource'] = parent_resource unless parent_resource.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['optionsRequestedPolicyVersion'] = options_requested_policy_version unless options_requested_policy_version.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of reservation subBlocks under a single reservation.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone for this request. Zone name should conform to RFC1035.
        # @param [String] parent_name
        #   The name of the parent reservation and parent block. In the format of
        #   reservations/`reservation_name`/reservationBlocks/`reservation_block_name`
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::ReservationSubBlocksListResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::ReservationSubBlocksListResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_reservation_sub_blocks(project, zone, parent_name, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/{parentName}/reservationSubBlocks', options)
          command.response_representation = Google::Apis::ComputeV1::ReservationSubBlocksListResponse::Representation
          command.response_class = Google::Apis::ComputeV1::ReservationSubBlocksListResponse
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['parentName'] = parent_name unless parent_name.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Allows customers to perform maintenance on a reservation subBlock
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone for this request. Zone name should conform to RFC1035.
        # @param [String] parent_name
        #   The name of the parent reservation and parent block. In the format of
        #   reservations/`reservation_name`/reservationBlocks/`reservation_block_name`
        # @param [String] reservation_sub_block
        #   The name of the reservation subBlock.
        #   Name should conform to RFC1035 or be a resource ID.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def perform_reservation_sub_block_maintenance(project, zone, parent_name, reservation_sub_block, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/{parentName}/reservationSubBlocks/{reservationSubBlock}/performMaintenance', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['parentName'] = parent_name unless parent_name.nil?
          command.params['reservationSubBlock'] = reservation_sub_block unless reservation_sub_block.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Allows customers to report a faulty subBlock.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone for this request. Zone name should conform to RFC1035.
        # @param [String] parent_name
        #   The name of the parent reservation and parent block. In the format of
        #   reservations/`reservation_name`/reservationBlocks/`reservation_block_name`
        # @param [String] reservation_sub_block
        #   The name of the reservation subBlock.
        #   Name should conform to RFC1035 or be a resource ID.
        # @param [Google::Apis::ComputeV1::ReservationSubBlocksReportFaultyRequest] reservation_sub_blocks_report_faulty_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def report_reservation_sub_block_faulty(project, zone, parent_name, reservation_sub_block, reservation_sub_blocks_report_faulty_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/{parentName}/reservationSubBlocks/{reservationSubBlock}/reportFaulty', options)
          command.request_representation = Google::Apis::ComputeV1::ReservationSubBlocksReportFaultyRequest::Representation
          command.request_object = reservation_sub_blocks_report_faulty_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['parentName'] = parent_name unless parent_name.nil?
          command.params['reservationSubBlock'] = reservation_sub_block unless reservation_sub_block.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the access control policy on the specified resource.
        # Replaces any existing policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] parent_resource
        #   Name or id of parent resource of the resource for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::ZoneSetNestedPolicyRequest] zone_set_nested_policy_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_reservation_sub_block_iam_policy(project, zone, parent_resource, resource, zone_set_nested_policy_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/{parentResource}/reservationSubBlocks/{resource}/setIamPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::ZoneSetNestedPolicyRequest::Representation
          command.request_object = zone_set_nested_policy_request_object
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['parentResource'] = parent_resource unless parent_resource.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] parent_resource
        #   Name or id of parent resource of the resource for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_reservation_sub_block_iam_permissions(project, zone, parent_resource, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/{parentResource}/reservationSubBlocks/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['parentResource'] = parent_resource unless parent_resource.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves an aggregated list of reservations.
        # To prevent failure, it is recommended that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::ReservationAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::ReservationAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def aggregated_reservation_list(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/reservations', options)
          command.response_representation = Google::Apis::ComputeV1::ReservationAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::ReservationAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified reservation.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone for this request.
        # @param [String] reservation
        #   Name of the reservation to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_reservation(project, zone, reservation, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/zones/{zone}/reservations/{reservation}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['reservation'] = reservation unless reservation.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves information about the specified reservation.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone for this request.
        # @param [String] reservation
        #   Name of the reservation to retrieve.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Reservation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Reservation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_reservation(project, zone, reservation, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/reservations/{reservation}', options)
          command.response_representation = Google::Apis::ComputeV1::Reservation::Representation
          command.response_class = Google::Apis::ComputeV1::Reservation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['reservation'] = reservation unless reservation.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets the access control policy for a resource. May be empty if no such
        # policy or resource exists.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Fixnum] options_requested_policy_version
        #   Requested IAM Policy version.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_reservation_iam_policy(project, zone, resource, options_requested_policy_version: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/reservations/{resource}/getIamPolicy', options)
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['optionsRequestedPolicyVersion'] = options_requested_policy_version unless options_requested_policy_version.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a new reservation. For more information, readReserving zonal
        # resources.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone for this request.
        # @param [Google::Apis::ComputeV1::Reservation] reservation_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_reservation(project, zone, reservation_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/reservations', options)
          command.request_representation = Google::Apis::ComputeV1::Reservation::Representation
          command.request_object = reservation_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # A list of all the reservations that have been configured for the
        # specified project in specified zone.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::ReservationList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::ReservationList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_reservations(project, zone, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/reservations', options)
          command.response_representation = Google::Apis::ComputeV1::ReservationList::Representation
          command.response_class = Google::Apis::ComputeV1::ReservationList
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Perform maintenance on an extended reservation
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone for this request. Zone name should conform to RFC1035.
        # @param [String] reservation
        #   The name of the reservation.
        #   Name should conform to RFC1035 or be a resource ID.
        # @param [Google::Apis::ComputeV1::ReservationsPerformMaintenanceRequest] reservations_perform_maintenance_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def perform_reservation_maintenance(project, zone, reservation, reservations_perform_maintenance_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/reservations/{reservation}/performMaintenance', options)
          command.request_representation = Google::Apis::ComputeV1::ReservationsPerformMaintenanceRequest::Representation
          command.request_object = reservations_perform_maintenance_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['reservation'] = reservation unless reservation.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Resizes the reservation (applicable to standalone reservations only). For
        # more information, readModifying
        # reservations.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone for this request.
        # @param [String] reservation
        #   Name of the reservation to update.
        # @param [Google::Apis::ComputeV1::ReservationsResizeRequest] reservations_resize_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def resize_reservation(project, zone, reservation, reservations_resize_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/reservations/{reservation}/resize', options)
          command.request_representation = Google::Apis::ComputeV1::ReservationsResizeRequest::Representation
          command.request_object = reservations_resize_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['reservation'] = reservation unless reservation.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the access control policy on the specified resource.
        # Replaces any existing policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::ZoneSetPolicyRequest] zone_set_policy_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_reservation_iam_policy(project, zone, resource, zone_set_policy_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/reservations/{resource}/setIamPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::ZoneSetPolicyRequest::Representation
          command.request_object = zone_set_policy_request_object
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_reservation_iam_permissions(project, zone, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/reservations/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Update share settings of the reservation.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone for this request.
        # @param [String] reservation
        #   Name of the reservation to update.
        # @param [Google::Apis::ComputeV1::Reservation] reservation_object
        # @param [Array<String>, String] paths
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] update_mask
        #   Update_mask indicates fields to be updated as part of this request.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def update_reservation(project, zone, reservation, reservation_object = nil, paths: nil, request_id: nil, update_mask: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/zones/{zone}/reservations/{reservation}', options)
          command.request_representation = Google::Apis::ComputeV1::Reservation::Representation
          command.request_object = reservation_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['reservation'] = reservation unless reservation.nil?
          command.query['paths'] = paths unless paths.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['updateMask'] = update_mask unless update_mask.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves an aggregated list of resource policies.
        # To prevent failure, Google recommends that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::ResourcePolicyAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::ResourcePolicyAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def aggregated_resource_policy_list(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/resourcePolicies', options)
          command.response_representation = Google::Apis::ComputeV1::ResourcePolicyAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::ResourcePolicyAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified resource policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] resource_policy
        #   Name of the resource policy to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_resource_policy(project, region, resource_policy, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/regions/{region}/resourcePolicies/{resourcePolicy}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resourcePolicy'] = resource_policy unless resource_policy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves all information of the specified resource policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] resource_policy
        #   Name of the resource policy to retrieve.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::ResourcePolicy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::ResourcePolicy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_resource_policy(project, region, resource_policy, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/resourcePolicies/{resourcePolicy}', options)
          command.response_representation = Google::Apis::ComputeV1::ResourcePolicy::Representation
          command.response_class = Google::Apis::ComputeV1::ResourcePolicy
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resourcePolicy'] = resource_policy unless resource_policy.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets the access control policy for a resource. May be empty if no such
        # policy or resource exists.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Fixnum] options_requested_policy_version
        #   Requested IAM Policy version.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_resource_policy_iam_policy(project, region, resource, options_requested_policy_version: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/resourcePolicies/{resource}/getIamPolicy', options)
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['optionsRequestedPolicyVersion'] = options_requested_policy_version unless options_requested_policy_version.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a new resource policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [Google::Apis::ComputeV1::ResourcePolicy] resource_policy_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_resource_policy(project, region, resource_policy_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/resourcePolicies', options)
          command.request_representation = Google::Apis::ComputeV1::ResourcePolicy::Representation
          command.request_object = resource_policy_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # A list all the resource policies that have been configured for the
        # specified project in specified region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::ResourcePolicyList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::ResourcePolicyList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_resource_policies(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/resourcePolicies', options)
          command.response_representation = Google::Apis::ComputeV1::ResourcePolicyList::Representation
          command.response_class = Google::Apis::ComputeV1::ResourcePolicyList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Modify the specified resource policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] resource_policy
        #   Id of the resource policy to patch.
        # @param [Google::Apis::ComputeV1::ResourcePolicy] resource_policy_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] update_mask
        #   update_mask indicates fields to be updated as part of this request.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_resource_policy(project, region, resource_policy, resource_policy_object = nil, request_id: nil, update_mask: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/regions/{region}/resourcePolicies/{resourcePolicy}', options)
          command.request_representation = Google::Apis::ComputeV1::ResourcePolicy::Representation
          command.request_object = resource_policy_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resourcePolicy'] = resource_policy unless resource_policy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['updateMask'] = update_mask unless update_mask.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the access control policy on the specified resource.
        # Replaces any existing policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::RegionSetPolicyRequest] region_set_policy_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_resource_policy_iam_policy(project, region, resource, region_set_policy_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/resourcePolicies/{resource}/setIamPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::RegionSetPolicyRequest::Representation
          command.request_object = region_set_policy_request_object
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_resource_policy_iam_permissions(project, region, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/resourcePolicies/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves an aggregated list of routers.
        # To prevent failure, Google recommends that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::RouterAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::RouterAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def aggregated_router_list(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/routers', options)
          command.response_representation = Google::Apis::ComputeV1::RouterAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::RouterAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified Router resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] router
        #   Name of the Router resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_router(project, region, router, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/regions/{region}/routers/{router}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['router'] = router unless router.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes Route Policy
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] router
        #   Name of the Router resource where Route Policy is defined.
        # @param [String] policy
        #   The Policy name for this request. Name must conform to RFC1035
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_router_route_policy(project, region, router, policy: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/routers/{router}/deleteRoutePolicy', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['router'] = router unless router.nil?
          command.query['policy'] = policy unless policy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified Router resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] router
        #   Name of the Router resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Router] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Router]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_router(project, region, router, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/routers/{router}', options)
          command.response_representation = Google::Apis::ComputeV1::Router::Representation
          command.response_class = Google::Apis::ComputeV1::Router
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['router'] = router unless router.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves runtime NAT IP information.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] router
        #   Name of the Router resource to query for Nat IP information. The name
        #   should conform to RFC1035.
        # @param [String] nat_name
        #   Name of the nat service to filter the NAT IP information.
        #   If it is omitted, all nats for this router will be returned.
        #   Name should conform to RFC1035.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::NatIpInfoResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::NatIpInfoResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_router_nat_ip_info(project, region, router, nat_name: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/routers/{router}/getNatIpInfo', options)
          command.response_representation = Google::Apis::ComputeV1::NatIpInfoResponse::Representation
          command.response_class = Google::Apis::ComputeV1::NatIpInfoResponse
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['router'] = router unless router.nil?
          command.query['natName'] = nat_name unless nat_name.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves runtime Nat mapping information of VM endpoints.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] router
        #   Name of the Router resource to query for Nat Mapping information of
        #   VM endpoints.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] nat_name
        #   Name of the nat service to filter the Nat Mapping information.
        #   If it is omitted, all nats for this router will be returned.
        #   Name should conform to RFC1035.
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::VmEndpointNatMappingsList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::VmEndpointNatMappingsList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_router_nat_mapping_info(project, region, router, filter: nil, max_results: nil, nat_name: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/routers/{router}/getNatMappingInfo', options)
          command.response_representation = Google::Apis::ComputeV1::VmEndpointNatMappingsList::Representation
          command.response_class = Google::Apis::ComputeV1::VmEndpointNatMappingsList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['router'] = router unless router.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['natName'] = nat_name unless nat_name.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns specified Route Policy
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] router
        #   Name of the Router resource to query for the route policy. The name should
        #   conform to RFC1035.
        # @param [String] policy
        #   The Policy name for this request. Name must conform to RFC1035
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::RoutersGetRoutePolicyResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::RoutersGetRoutePolicyResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_router_route_policy(project, region, router, policy: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/routers/{router}/getRoutePolicy', options)
          command.response_representation = Google::Apis::ComputeV1::RoutersGetRoutePolicyResponse::Representation
          command.response_class = Google::Apis::ComputeV1::RoutersGetRoutePolicyResponse
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['router'] = router unless router.nil?
          command.query['policy'] = policy unless policy.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves runtime information of the specified router.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] router
        #   Name of the Router resource to query.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::RouterStatusResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::RouterStatusResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_router_router_status(project, region, router, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/routers/{router}/getRouterStatus', options)
          command.response_representation = Google::Apis::ComputeV1::RouterStatusResponse::Representation
          command.response_class = Google::Apis::ComputeV1::RouterStatusResponse
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['router'] = router unless router.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a Router resource in the specified project and region using
        # the data included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [Google::Apis::ComputeV1::Router] router_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_router(project, region, router_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/routers', options)
          command.request_representation = Google::Apis::ComputeV1::Router::Representation
          command.request_object = router_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of Router resources available to the specified project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::RouterList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::RouterList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_routers(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/routers', options)
          command.response_representation = Google::Apis::ComputeV1::RouterList::Representation
          command.response_class = Google::Apis::ComputeV1::RouterList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of router bgp routes available to the specified project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] router
        #   Name or id of the resource for this request.
        #   Name should conform to RFC1035.
        # @param [String] address_family
        #   (Required) limit results to this address family (either IPv4 or IPv6)
        # @param [String] destination_prefix
        #   Limit results to destinations that are subnets of this CIDR range
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [String] peer
        #   (Required) limit results to the BGP peer with the given name.
        #   Name should conform to RFC1035.
        # @param [Boolean] policy_applied
        #   When true, the method returns post-policy routes. Otherwise, it returns
        #   pre-policy routes.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] route_type
        #   (Required) limit results to this type of route (either LEARNED or
        #   ADVERTISED)
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::RoutersListBgpRoutes] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::RoutersListBgpRoutes]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_router_bgp_routes(project, region, router, address_family: nil, destination_prefix: nil, filter: nil, max_results: nil, order_by: nil, page_token: nil, peer: nil, policy_applied: nil, return_partial_success: nil, route_type: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/routers/{router}/listBgpRoutes', options)
          command.response_representation = Google::Apis::ComputeV1::RoutersListBgpRoutes::Representation
          command.response_class = Google::Apis::ComputeV1::RoutersListBgpRoutes
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['router'] = router unless router.nil?
          command.query['addressFamily'] = address_family unless address_family.nil?
          command.query['destinationPrefix'] = destination_prefix unless destination_prefix.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['peer'] = peer unless peer.nil?
          command.query['policyApplied'] = policy_applied unless policy_applied.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['routeType'] = route_type unless route_type.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of router route policy subresources available to the
        # specified project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] router
        #   Name or id of the resource for this request.
        #   Name should conform to RFC1035.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::RoutersListRoutePolicies] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::RoutersListRoutePolicies]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_router_route_policies(project, region, router, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/routers/{router}/listRoutePolicies', options)
          command.response_representation = Google::Apis::ComputeV1::RoutersListRoutePolicies::Representation
          command.response_class = Google::Apis::ComputeV1::RoutersListRoutePolicies
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['router'] = router unless router.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches the specified Router resource with the data included in the
        # request. This method supportsPATCH
        # semantics and usesJSON merge
        # patch format and processing rules.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] router
        #   Name of the Router resource to patch.
        # @param [Google::Apis::ComputeV1::Router] router_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_router(project, region, router, router_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/regions/{region}/routers/{router}', options)
          command.request_representation = Google::Apis::ComputeV1::Router::Representation
          command.request_object = router_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['router'] = router unless router.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches Route Policy
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] router
        #   Name of the Router resource where Route Policy is defined.
        # @param [Google::Apis::ComputeV1::RoutePolicy] route_policy_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_router_route_policy(project, region, router, route_policy_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/routers/{router}/patchRoutePolicy', options)
          command.request_representation = Google::Apis::ComputeV1::RoutePolicy::Representation
          command.request_object = route_policy_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['router'] = router unless router.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Preview fields auto-generated during router create andupdate operations.
        # Calling this method does NOT create or update the router.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] router
        #   Name of the Router resource to query.
        # @param [Google::Apis::ComputeV1::Router] router_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::RoutersPreviewResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::RoutersPreviewResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def preview_router(project, region, router, router_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/routers/{router}/preview', options)
          command.request_representation = Google::Apis::ComputeV1::Router::Representation
          command.request_object = router_object
          command.response_representation = Google::Apis::ComputeV1::RoutersPreviewResponse::Representation
          command.response_class = Google::Apis::ComputeV1::RoutersPreviewResponse
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['router'] = router unless router.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates the specified Router resource with the data included in the
        # request.  This method conforms toPUT semantics, which requests that the state
        # of the
        # target resource be created or replaced with the state defined by the
        # representation enclosed in the request message payload.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] router
        #   Name of the Router resource to update.
        # @param [Google::Apis::ComputeV1::Router] router_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def update_router(project, region, router, router_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:put, 'projects/{project}/regions/{region}/routers/{router}', options)
          command.request_representation = Google::Apis::ComputeV1::Router::Representation
          command.request_object = router_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['router'] = router unless router.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates or creates new Route Policy
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] router
        #   Name of the Router resource where Route Policy is defined.
        # @param [Google::Apis::ComputeV1::RoutePolicy] route_policy_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def update_router_route_policy(project, region, router, route_policy_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/routers/{router}/updateRoutePolicy', options)
          command.request_representation = Google::Apis::ComputeV1::RoutePolicy::Representation
          command.request_object = route_policy_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['router'] = router unless router.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified Route resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] route
        #   Name of the Route resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_route(project, route, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/global/routes/{route}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['route'] = route unless route.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified Route resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] route
        #   Name of the Route resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Route] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Route]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_route(project, route, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/routes/{route}', options)
          command.response_representation = Google::Apis::ComputeV1::Route::Representation
          command.response_class = Google::Apis::ComputeV1::Route
          command.params['project'] = project unless project.nil?
          command.params['route'] = route unless route.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a Route resource in the specified project using the data included
        # in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::Route] route_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_route(project, route_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/routes', options)
          command.request_representation = Google::Apis::ComputeV1::Route::Representation
          command.request_object = route_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of Route resources available to the specified project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::RouteList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::RouteList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_routes(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/routes', options)
          command.response_representation = Google::Apis::ComputeV1::RouteList::Representation
          command.response_class = Google::Apis::ComputeV1::RouteList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_route_iam_permissions(project, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/routes/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Inserts a rule into a security policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] security_policy
        #   Name of the security policy to update.
        # @param [Google::Apis::ComputeV1::SecurityPolicyRule] security_policy_rule_object
        # @param [Boolean] validate_only
        #   If true, the request will not be committed.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def add_security_policy_rule(project, security_policy, security_policy_rule_object = nil, validate_only: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/securityPolicies/{securityPolicy}/addRule', options)
          command.request_representation = Google::Apis::ComputeV1::SecurityPolicyRule::Representation
          command.request_object = security_policy_rule_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['securityPolicy'] = security_policy unless security_policy.nil?
          command.query['validateOnly'] = validate_only unless validate_only.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of all SecurityPolicy resources, regional and global,
        # available to the specified project.
        # To prevent failure, Google recommends that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Name of the project scoping this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::SecurityPoliciesAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::SecurityPoliciesAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def aggregated_security_policy_list(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/securityPolicies', options)
          command.response_representation = Google::Apis::ComputeV1::SecurityPoliciesAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::SecurityPoliciesAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] security_policy
        #   Name of the security policy to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_security_policy(project, security_policy, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/global/securityPolicies/{securityPolicy}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['securityPolicy'] = security_policy unless security_policy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # List all of the ordered rules present in a single specified policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] security_policy
        #   Name of the security policy to get.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::SecurityPolicy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::SecurityPolicy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_security_policy(project, security_policy, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/securityPolicies/{securityPolicy}', options)
          command.response_representation = Google::Apis::ComputeV1::SecurityPolicy::Representation
          command.response_class = Google::Apis::ComputeV1::SecurityPolicy
          command.params['project'] = project unless project.nil?
          command.params['securityPolicy'] = security_policy unless security_policy.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets a rule at the specified priority.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] security_policy
        #   Name of the security policy to which the queried rule belongs.
        # @param [Fixnum] priority
        #   The priority of the rule to get from the security policy.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::SecurityPolicyRule] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::SecurityPolicyRule]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_security_policy_rule(project, security_policy, priority: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/securityPolicies/{securityPolicy}/getRule', options)
          command.response_representation = Google::Apis::ComputeV1::SecurityPolicyRule::Representation
          command.response_class = Google::Apis::ComputeV1::SecurityPolicyRule
          command.params['project'] = project unless project.nil?
          command.params['securityPolicy'] = security_policy unless security_policy.nil?
          command.query['priority'] = priority unless priority.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a new policy in the specified project using the data included in
        # the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::SecurityPolicy] security_policy_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [Boolean] validate_only
        #   If true, the request will not be committed.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_security_policy(project, security_policy_object = nil, request_id: nil, validate_only: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/securityPolicies', options)
          command.request_representation = Google::Apis::ComputeV1::SecurityPolicy::Representation
          command.request_object = security_policy_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['validateOnly'] = validate_only unless validate_only.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # List all the policies that have been configured for the specified project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::SecurityPolicyList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::SecurityPolicyList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_security_policies(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/securityPolicies', options)
          command.response_representation = Google::Apis::ComputeV1::SecurityPolicyList::Representation
          command.response_class = Google::Apis::ComputeV1::SecurityPolicyList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets the current list of preconfigured Web Application Firewall (WAF)
        # expressions.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::SecurityPoliciesListPreconfiguredExpressionSetsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::SecurityPoliciesListPreconfiguredExpressionSetsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_security_policy_preconfigured_expression_sets(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/securityPolicies/listPreconfiguredExpressionSets', options)
          command.response_representation = Google::Apis::ComputeV1::SecurityPoliciesListPreconfiguredExpressionSetsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::SecurityPoliciesListPreconfiguredExpressionSetsResponse
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches the specified policy with the data included in the request. To
        # clear fields in the policy, leave the fields empty and specify them in the
        # updateMask. This cannot be used to be update the rules in the policy.
        # Please use the per rule methods like addRule, patchRule, and removeRule
        # instead.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] security_policy
        #   Name of the security policy to update.
        # @param [Google::Apis::ComputeV1::SecurityPolicy] security_policy_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] update_mask
        #   Indicates fields to be cleared as part of this request.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_security_policy(project, security_policy, security_policy_object = nil, request_id: nil, update_mask: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/global/securityPolicies/{securityPolicy}', options)
          command.request_representation = Google::Apis::ComputeV1::SecurityPolicy::Representation
          command.request_object = security_policy_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['securityPolicy'] = security_policy unless security_policy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['updateMask'] = update_mask unless update_mask.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches a rule at the specified priority. To clear fields in the rule,
        # leave the fields empty and specify them in the updateMask.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] security_policy
        #   Name of the security policy to update.
        # @param [Google::Apis::ComputeV1::SecurityPolicyRule] security_policy_rule_object
        # @param [Fixnum] priority
        #   The priority of the rule to patch.
        # @param [String] update_mask
        #   Indicates fields to be cleared as part of this request.
        # @param [Boolean] validate_only
        #   If true, the request will not be committed.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_security_policy_rule(project, security_policy, security_policy_rule_object = nil, priority: nil, update_mask: nil, validate_only: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/securityPolicies/{securityPolicy}/patchRule', options)
          command.request_representation = Google::Apis::ComputeV1::SecurityPolicyRule::Representation
          command.request_object = security_policy_rule_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['securityPolicy'] = security_policy unless security_policy.nil?
          command.query['priority'] = priority unless priority.nil?
          command.query['updateMask'] = update_mask unless update_mask.nil?
          command.query['validateOnly'] = validate_only unless validate_only.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes a rule at the specified priority.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] security_policy
        #   Name of the security policy to update.
        # @param [Fixnum] priority
        #   The priority of the rule to remove from the security policy.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def remove_security_policy_rule(project, security_policy, priority: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/securityPolicies/{securityPolicy}/removeRule', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['securityPolicy'] = security_policy unless security_policy.nil?
          command.query['priority'] = priority unless priority.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the labels on a security policy. To learn more about labels,
        # read the Labeling Resources
        # documentation.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::GlobalSetLabelsRequest] global_set_labels_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_security_policy_labels(project, resource, global_set_labels_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/securityPolicies/{resource}/setLabels', options)
          command.request_representation = Google::Apis::ComputeV1::GlobalSetLabelsRequest::Representation
          command.request_object = global_set_labels_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of all ServiceAttachment resources,
        # regional and global, available to the specified project.
        # To prevent failure, Google recommends that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Name of the project scoping this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::ServiceAttachmentAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::ServiceAttachmentAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def aggregated_service_attachment_list(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/serviceAttachments', options)
          command.response_representation = Google::Apis::ComputeV1::ServiceAttachmentAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::ServiceAttachmentAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified ServiceAttachment in the given scope
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region of this request.
        # @param [String] service_attachment
        #   Name of the ServiceAttachment resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_service_attachment(project, region, service_attachment, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/regions/{region}/serviceAttachments/{serviceAttachment}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['serviceAttachment'] = service_attachment unless service_attachment.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified ServiceAttachment resource in the given scope.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region of this request.
        # @param [String] service_attachment
        #   Name of the ServiceAttachment resource to return.
        # @param [Boolean] show_nat_ips
        #   Indicates whether NAT IPs should be included in the response.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::ServiceAttachment] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::ServiceAttachment]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_service_attachment(project, region, service_attachment, show_nat_ips: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/serviceAttachments/{serviceAttachment}', options)
          command.response_representation = Google::Apis::ComputeV1::ServiceAttachment::Representation
          command.response_class = Google::Apis::ComputeV1::ServiceAttachment
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['serviceAttachment'] = service_attachment unless service_attachment.nil?
          command.query['showNatIps'] = show_nat_ips unless show_nat_ips.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets the access control policy for a resource. May be empty if no such
        # policy or resource exists.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Fixnum] options_requested_policy_version
        #   Requested IAM Policy version.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_service_attachment_iam_policy(project, region, resource, options_requested_policy_version: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/serviceAttachments/{resource}/getIamPolicy', options)
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['optionsRequestedPolicyVersion'] = options_requested_policy_version unless options_requested_policy_version.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a ServiceAttachment in the specified project in the given scope
        # using the parameters that are included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region of this request.
        # @param [Google::Apis::ComputeV1::ServiceAttachment] service_attachment_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_service_attachment(project, region, service_attachment_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/serviceAttachments', options)
          command.request_representation = Google::Apis::ComputeV1::ServiceAttachment::Representation
          command.request_object = service_attachment_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists the ServiceAttachments for a project in the given scope.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region of this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::ServiceAttachmentList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::ServiceAttachmentList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_service_attachments(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/serviceAttachments', options)
          command.response_representation = Google::Apis::ComputeV1::ServiceAttachmentList::Representation
          command.response_class = Google::Apis::ComputeV1::ServiceAttachmentList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches the specified ServiceAttachment resource with the data included in
        # the request. This method supports PATCH
        # semantics and usesJSON merge
        # patch format and processing rules.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The region scoping this request and should conform to RFC1035.
        # @param [String] service_attachment
        #   The resource id of the ServiceAttachment to patch. It should conform to
        #   RFC1035 resource name or be a string form on an unsigned long number.
        # @param [Google::Apis::ComputeV1::ServiceAttachment] service_attachment_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_service_attachment(project, region, service_attachment, service_attachment_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/regions/{region}/serviceAttachments/{serviceAttachment}', options)
          command.request_representation = Google::Apis::ComputeV1::ServiceAttachment::Representation
          command.request_object = service_attachment_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['serviceAttachment'] = service_attachment unless service_attachment.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the access control policy on the specified resource.
        # Replaces any existing policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::RegionSetPolicyRequest] region_set_policy_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_service_attachment_iam_policy(project, region, resource, region_set_policy_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/serviceAttachments/{resource}/setIamPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::RegionSetPolicyRequest::Representation
          command.request_object = region_set_policy_request_object
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_service_attachment_iam_permissions(project, region, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/serviceAttachments/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Get snapshot settings.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::SnapshotSettings] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::SnapshotSettings]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_snapshot_setting(project, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/snapshotSettings', options)
          command.response_representation = Google::Apis::ComputeV1::SnapshotSettings::Representation
          command.response_class = Google::Apis::ComputeV1::SnapshotSettings
          command.params['project'] = project unless project.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patch snapshot settings.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::SnapshotSettings] snapshot_settings_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] update_mask
        #   update_mask indicates fields to be updated as part of this request.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_snapshot_setting(project, snapshot_settings_object = nil, request_id: nil, update_mask: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/global/snapshotSettings', options)
          command.request_representation = Google::Apis::ComputeV1::SnapshotSettings::Representation
          command.request_object = snapshot_settings_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['updateMask'] = update_mask unless update_mask.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified Snapshot resource. Keep in mind that deleting
        # a single snapshot might not necessarily delete all the data on that
        # snapshot. If any data on the snapshot that is marked for deletion is
        # needed for subsequent snapshots, the data will be moved to the next
        # corresponding snapshot.
        # For more information, seeDeleting
        # snapshots.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] snapshot
        #   Name of the Snapshot resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_snapshot(project, snapshot, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/global/snapshots/{snapshot}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['snapshot'] = snapshot unless snapshot.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified Snapshot resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] snapshot
        #   Name of the Snapshot resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Snapshot] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Snapshot]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_snapshot(project, snapshot, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/snapshots/{snapshot}', options)
          command.response_representation = Google::Apis::ComputeV1::Snapshot::Representation
          command.response_class = Google::Apis::ComputeV1::Snapshot
          command.params['project'] = project unless project.nil?
          command.params['snapshot'] = snapshot unless snapshot.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets the access control policy for a resource. May be empty if no such
        # policy or resource exists.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Fixnum] options_requested_policy_version
        #   Requested IAM Policy version.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_snapshot_iam_policy(project, resource, options_requested_policy_version: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/snapshots/{resource}/getIamPolicy', options)
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['optionsRequestedPolicyVersion'] = options_requested_policy_version unless options_requested_policy_version.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a snapshot in the specified project using the data included
        # in the request. For regular snapshot creation, consider using this method
        # instead of disks.createSnapshot,
        # as this method supports more features, such as creating snapshots in a
        # project different from the source disk project.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::Snapshot] snapshot_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_snapshot(project, snapshot_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/snapshots', options)
          command.request_representation = Google::Apis::ComputeV1::Snapshot::Representation
          command.request_object = snapshot_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of Snapshot resources contained within
        # the specified project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::SnapshotList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::SnapshotList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_snapshots(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/snapshots', options)
          command.response_representation = Google::Apis::ComputeV1::SnapshotList::Representation
          command.response_class = Google::Apis::ComputeV1::SnapshotList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the access control policy on the specified resource.
        # Replaces any existing policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::GlobalSetPolicyRequest] global_set_policy_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_snapshot_iam_policy(project, resource, global_set_policy_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/snapshots/{resource}/setIamPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::GlobalSetPolicyRequest::Representation
          command.request_object = global_set_policy_request_object
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the labels on a snapshot. To learn more about labels, read theLabeling
        # Resources documentation.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::GlobalSetLabelsRequest] global_set_labels_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_snapshot_labels(project, resource, global_set_labels_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/snapshots/{resource}/setLabels', options)
          command.request_representation = Google::Apis::ComputeV1::GlobalSetLabelsRequest::Representation
          command.request_object = global_set_labels_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_snapshot_iam_permissions(project, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/snapshots/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of all SslCertificate resources, regional and global,
        # available to the specified project.
        # To prevent failure, Google recommends that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Name of the project scoping this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::SslCertificateAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::SslCertificateAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def aggregated_ssl_certificate_list(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/sslCertificates', options)
          command.response_representation = Google::Apis::ComputeV1::SslCertificateAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::SslCertificateAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified SslCertificate resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] ssl_certificate
        #   Name of the SslCertificate resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_ssl_certificate(project, ssl_certificate, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/global/sslCertificates/{sslCertificate}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['sslCertificate'] = ssl_certificate unless ssl_certificate.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified SslCertificate resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] ssl_certificate
        #   Name of the SslCertificate resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::SslCertificate] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::SslCertificate]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_ssl_certificate(project, ssl_certificate, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/sslCertificates/{sslCertificate}', options)
          command.response_representation = Google::Apis::ComputeV1::SslCertificate::Representation
          command.response_class = Google::Apis::ComputeV1::SslCertificate
          command.params['project'] = project unless project.nil?
          command.params['sslCertificate'] = ssl_certificate unless ssl_certificate.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a SslCertificate resource in the specified project using the data
        # included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::SslCertificate] ssl_certificate_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_ssl_certificate(project, ssl_certificate_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/sslCertificates', options)
          command.request_representation = Google::Apis::ComputeV1::SslCertificate::Representation
          command.request_object = ssl_certificate_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of SslCertificate resources available to the specified
        # project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::SslCertificateList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::SslCertificateList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_ssl_certificates(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/sslCertificates', options)
          command.response_representation = Google::Apis::ComputeV1::SslCertificateList::Representation
          command.response_class = Google::Apis::ComputeV1::SslCertificateList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of all SslPolicy resources, regional and global,
        # available to the specified project.
        # To prevent failure, Google recommends that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Name of the project scoping this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::SslPoliciesAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::SslPoliciesAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def aggregated_ssl_policy_list(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/sslPolicies', options)
          command.response_representation = Google::Apis::ComputeV1::SslPoliciesAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::SslPoliciesAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified SSL policy. The SSL policy resource can be deleted
        # only if it is not in use by any TargetHttpsProxy or TargetSslProxy
        # resources.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] ssl_policy
        #   Name of the SSL policy to delete. The name must be 1-63 characters long,
        #   and comply with RFC1035.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_ssl_policy(project, ssl_policy, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/global/sslPolicies/{sslPolicy}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['sslPolicy'] = ssl_policy unless ssl_policy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists all of the ordered rules present in a single specified policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] ssl_policy
        #   Name of the SSL policy to update. The name must be 1-63 characters long,
        #   and comply with RFC1035.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::SslPolicy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::SslPolicy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_ssl_policy(project, ssl_policy, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/sslPolicies/{sslPolicy}', options)
          command.response_representation = Google::Apis::ComputeV1::SslPolicy::Representation
          command.response_class = Google::Apis::ComputeV1::SslPolicy
          command.params['project'] = project unless project.nil?
          command.params['sslPolicy'] = ssl_policy unless ssl_policy.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified SSL policy resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::SslPolicy] ssl_policy_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_ssl_policy(project, ssl_policy_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/sslPolicies', options)
          command.request_representation = Google::Apis::ComputeV1::SslPolicy::Representation
          command.request_object = ssl_policy_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists all the SSL policies that have been configured for the specified
        # project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::SslPoliciesList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::SslPoliciesList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_ssl_policies(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/sslPolicies', options)
          command.response_representation = Google::Apis::ComputeV1::SslPoliciesList::Representation
          command.response_class = Google::Apis::ComputeV1::SslPoliciesList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists all features that can be specified in the SSL policy when using
        # custom profile.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::SslPoliciesListAvailableFeaturesResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::SslPoliciesListAvailableFeaturesResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_ssl_policy_available_features(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/sslPolicies/listAvailableFeatures', options)
          command.response_representation = Google::Apis::ComputeV1::SslPoliciesListAvailableFeaturesResponse::Representation
          command.response_class = Google::Apis::ComputeV1::SslPoliciesListAvailableFeaturesResponse
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches the specified SSL policy with the data included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] ssl_policy
        #   Name of the SSL policy to update. The name must be 1-63 characters long,
        #   and comply with RFC1035.
        # @param [Google::Apis::ComputeV1::SslPolicy] ssl_policy_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_ssl_policy(project, ssl_policy, ssl_policy_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/global/sslPolicies/{sslPolicy}', options)
          command.request_representation = Google::Apis::ComputeV1::SslPolicy::Representation
          command.request_object = ssl_policy_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['sslPolicy'] = ssl_policy unless ssl_policy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves an aggregated list of storage pool types.
        # To prevent failure, Google recommends that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::StoragePoolTypeAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::StoragePoolTypeAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def aggregated_storage_pool_type_list(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/storagePoolTypes', options)
          command.response_representation = Google::Apis::ComputeV1::StoragePoolTypeAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::StoragePoolTypeAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified storage pool type.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] storage_pool_type
        #   Name of the storage pool type to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::StoragePoolType] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::StoragePoolType]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_storage_pool_type(project, zone, storage_pool_type, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/storagePoolTypes/{storagePoolType}', options)
          command.response_representation = Google::Apis::ComputeV1::StoragePoolType::Representation
          command.response_class = Google::Apis::ComputeV1::StoragePoolType
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['storagePoolType'] = storage_pool_type unless storage_pool_type.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of storage pool types available to the specified
        # project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::StoragePoolTypeList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::StoragePoolTypeList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_storage_pool_types(project, zone, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/storagePoolTypes', options)
          command.response_representation = Google::Apis::ComputeV1::StoragePoolTypeList::Representation
          command.response_class = Google::Apis::ComputeV1::StoragePoolTypeList
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves an aggregated list of storage pools.
        # To prevent failure, Google recommends that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::StoragePoolAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::StoragePoolAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def aggregated_storage_pool_list(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/storagePools', options)
          command.response_representation = Google::Apis::ComputeV1::StoragePoolAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::StoragePoolAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified storage pool. Deleting a storagePool
        # removes its data permanently and is irreversible. However, deleting a
        # storagePool does not delete any snapshots previously
        # made from the storagePool. You must separately delete
        # snapshots.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] storage_pool
        #   Name of the storage pool to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_storage_pool(project, zone, storage_pool, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/zones/{zone}/storagePools/{storagePool}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['storagePool'] = storage_pool unless storage_pool.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns a specified storage pool. Gets a list of available
        # storage pools by making a list() request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] storage_pool
        #   Name of the storage pool to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::StoragePool] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::StoragePool]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_storage_pool(project, zone, storage_pool, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/storagePools/{storagePool}', options)
          command.response_representation = Google::Apis::ComputeV1::StoragePool::Representation
          command.response_class = Google::Apis::ComputeV1::StoragePool
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['storagePool'] = storage_pool unless storage_pool.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets the access control policy for a resource. May be empty if no such
        # policy or resource exists.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Fixnum] options_requested_policy_version
        #   Requested IAM Policy version.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_storage_pool_iam_policy(project, zone, resource, options_requested_policy_version: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/storagePools/{resource}/getIamPolicy', options)
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['optionsRequestedPolicyVersion'] = options_requested_policy_version unless options_requested_policy_version.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a storage pool in the specified project using the data
        # in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [Google::Apis::ComputeV1::StoragePool] storage_pool_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_storage_pool(project, zone, storage_pool_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/storagePools', options)
          command.request_representation = Google::Apis::ComputeV1::StoragePool::Representation
          command.request_object = storage_pool_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of storage pools contained within
        # the specified zone.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::StoragePoolList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::StoragePoolList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_storage_pools(project, zone, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/storagePools', options)
          command.response_representation = Google::Apis::ComputeV1::StoragePoolList::Representation
          command.response_class = Google::Apis::ComputeV1::StoragePoolList
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists the disks in a specified storage pool.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] storage_pool
        #   Name of the storage pool to list disks of.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::StoragePoolListDisks] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::StoragePoolListDisks]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_storage_pool_disks(project, zone, storage_pool, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/storagePools/{storagePool}/listDisks', options)
          command.response_representation = Google::Apis::ComputeV1::StoragePoolListDisks::Representation
          command.response_class = Google::Apis::ComputeV1::StoragePoolListDisks
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['storagePool'] = storage_pool unless storage_pool.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the access control policy on the specified resource.
        # Replaces any existing policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::ZoneSetPolicyRequest] zone_set_policy_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_storage_pool_iam_policy(project, zone, resource, zone_set_policy_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/storagePools/{resource}/setIamPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::ZoneSetPolicyRequest::Representation
          command.request_object = zone_set_policy_request_object
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_storage_pool_iam_permissions(project, zone, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/storagePools/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates the specified storagePool with the data included in the request.
        # The update is performed only on selected fields included as part
        # of update-mask. Only the following fields can be modified:
        # pool_provisioned_capacity_gb, pool_provisioned_iops and
        # pool_provisioned_throughput.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] storage_pool
        #   The storagePool name for this request.
        # @param [Google::Apis::ComputeV1::StoragePool] storage_pool_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] update_mask
        #   update_mask indicates fields to be updated as part of this request.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def update_storage_pool(project, zone, storage_pool, storage_pool_object = nil, request_id: nil, update_mask: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/zones/{zone}/storagePools/{storagePool}', options)
          command.request_representation = Google::Apis::ComputeV1::StoragePool::Representation
          command.request_object = storage_pool_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['storagePool'] = storage_pool unless storage_pool.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['updateMask'] = update_mask unless update_mask.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves an aggregated list of subnetworks.
        # To prevent failure, Google recommends that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [Array<String>, String] views
        #   Defines the extra views returned back in the subnetwork resource.
        #   Supported values:
        #   
        #   - WITH_UTILIZATION: Utilization data is included in the
        #   response.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::SubnetworkAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::SubnetworkAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def aggregated_subnetwork_list(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, views: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/subnetworks', options)
          command.response_representation = Google::Apis::ComputeV1::SubnetworkAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::SubnetworkAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['views'] = views unless views.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified subnetwork.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] subnetwork
        #   Name of the Subnetwork resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_subnetwork(project, region, subnetwork, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/regions/{region}/subnetworks/{subnetwork}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['subnetwork'] = subnetwork unless subnetwork.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Expands the IP CIDR range of the subnetwork to a specified value.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] subnetwork
        #   Name of the Subnetwork resource to update.
        # @param [Google::Apis::ComputeV1::SubnetworksExpandIpCidrRangeRequest] subnetworks_expand_ip_cidr_range_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def expand_subnetwork_ip_cidr_range(project, region, subnetwork, subnetworks_expand_ip_cidr_range_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/subnetworks/{subnetwork}/expandIpCidrRange', options)
          command.request_representation = Google::Apis::ComputeV1::SubnetworksExpandIpCidrRangeRequest::Representation
          command.request_object = subnetworks_expand_ip_cidr_range_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['subnetwork'] = subnetwork unless subnetwork.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified subnetwork.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] subnetwork
        #   Name of the Subnetwork resource to return.
        # @param [Array<String>, String] views
        #   Defines the extra views returned back in the subnetwork resource.
        #   Supported values:
        #   
        #   - WITH_UTILIZATION: Utilization data is included in the
        #   response.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Subnetwork] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Subnetwork]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_subnetwork(project, region, subnetwork, views: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/subnetworks/{subnetwork}', options)
          command.response_representation = Google::Apis::ComputeV1::Subnetwork::Representation
          command.response_class = Google::Apis::ComputeV1::Subnetwork
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['subnetwork'] = subnetwork unless subnetwork.nil?
          command.query['views'] = views unless views.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets the access control policy for a resource. May be empty if no such
        # policy or resource exists.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Fixnum] options_requested_policy_version
        #   Requested IAM Policy version.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_subnetwork_iam_policy(project, region, resource, options_requested_policy_version: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/subnetworks/{resource}/getIamPolicy', options)
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['optionsRequestedPolicyVersion'] = options_requested_policy_version unless options_requested_policy_version.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a subnetwork in the specified project using the data
        # included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [Google::Apis::ComputeV1::Subnetwork] subnetwork_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_subnetwork(project, region, subnetwork_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/subnetworks', options)
          command.request_representation = Google::Apis::ComputeV1::Subnetwork::Representation
          command.request_object = subnetwork_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of subnetworks available to the specified
        # project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Array<String>, String] views
        #   Defines the extra views returned back in the subnetwork resource.
        #   Supported values:
        #   
        #   - WITH_UTILIZATION: Utilization data is included in the
        #   response.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::SubnetworkList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::SubnetworkList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_subnetworks(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, views: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/subnetworks', options)
          command.response_representation = Google::Apis::ComputeV1::SubnetworkList::Representation
          command.response_class = Google::Apis::ComputeV1::SubnetworkList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['views'] = views unless views.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves an aggregated list of all usable subnetworks in the project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] service_project
        #   The project id or project number in which the subnetwork is intended to be
        #   used. Only applied for Shared VPC. See [Shared VPC
        #   documentation](https://cloud.google.com/vpc/docs/shared-vpc/)
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::UsableSubnetworksAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::UsableSubnetworksAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_subnetwork_usable(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/subnetworks/listUsable', options)
          command.response_representation = Google::Apis::ComputeV1::UsableSubnetworksAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::UsableSubnetworksAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProject'] = service_project unless service_project.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches the specified subnetwork with the data included in the request.
        # Only certain fields can be updated with a patch request
        # as indicated in the field descriptions.
        # You must specify the current fingerprint of the
        # subnetwork resource being patched.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] subnetwork
        #   Name of the Subnetwork resource to patch.
        # @param [Google::Apis::ComputeV1::Subnetwork] subnetwork_object
        # @param [Fixnum] drain_timeout_seconds
        #   The drain timeout specifies the upper bound in seconds on the amount of
        #   time allowed to drain connections from the current ACTIVE subnetwork
        #   to the current BACKUP subnetwork. The drain timeout is only applicable
        #   when the following conditions are true:
        #   - the subnetwork being patched has purpose = INTERNAL_HTTPS_LOAD_BALANCER
        #   - the subnetwork being patched has role = BACKUP
        #   - the patch request is setting the role to ACTIVE. Note that after this
        #   patch operation the roles of the ACTIVE and BACKUP subnetworks will be
        #   swapped.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_subnetwork(project, region, subnetwork, subnetwork_object = nil, drain_timeout_seconds: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/regions/{region}/subnetworks/{subnetwork}', options)
          command.request_representation = Google::Apis::ComputeV1::Subnetwork::Representation
          command.request_object = subnetwork_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['subnetwork'] = subnetwork unless subnetwork.nil?
          command.query['drainTimeoutSeconds'] = drain_timeout_seconds unless drain_timeout_seconds.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the access control policy on the specified resource.
        # Replaces any existing policy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::RegionSetPolicyRequest] region_set_policy_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Policy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Policy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_subnetwork_iam_policy(project, region, resource, region_set_policy_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/subnetworks/{resource}/setIamPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::RegionSetPolicyRequest::Representation
          command.request_object = region_set_policy_request_object
          command.response_representation = Google::Apis::ComputeV1::Policy::Representation
          command.response_class = Google::Apis::ComputeV1::Policy
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Set whether VMs in this subnet can access Google services without assigning
        # external IP addresses through Private Google Access.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] subnetwork
        #   Name of the Subnetwork resource.
        # @param [Google::Apis::ComputeV1::SubnetworksSetPrivateIpGoogleAccessRequest] subnetworks_set_private_ip_google_access_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_subnetwork_private_ip_google_access(project, region, subnetwork, subnetworks_set_private_ip_google_access_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/subnetworks/{subnetwork}/setPrivateIpGoogleAccess', options)
          command.request_representation = Google::Apis::ComputeV1::SubnetworksSetPrivateIpGoogleAccessRequest::Representation
          command.request_object = subnetworks_set_private_ip_google_access_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['subnetwork'] = subnetwork unless subnetwork.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_subnetwork_iam_permissions(project, region, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/subnetworks/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified TargetGrpcProxy in the given scope
        # @param [String] project
        #   Project ID for this request.
        # @param [String] target_grpc_proxy
        #   Name of the TargetGrpcProxy resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_target_grpc_proxy(project, target_grpc_proxy, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/global/targetGrpcProxies/{targetGrpcProxy}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['targetGrpcProxy'] = target_grpc_proxy unless target_grpc_proxy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified TargetGrpcProxy resource in the given scope.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] target_grpc_proxy
        #   Name of the TargetGrpcProxy resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TargetGrpcProxy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TargetGrpcProxy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_target_grpc_proxy(project, target_grpc_proxy, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/targetGrpcProxies/{targetGrpcProxy}', options)
          command.response_representation = Google::Apis::ComputeV1::TargetGrpcProxy::Representation
          command.response_class = Google::Apis::ComputeV1::TargetGrpcProxy
          command.params['project'] = project unless project.nil?
          command.params['targetGrpcProxy'] = target_grpc_proxy unless target_grpc_proxy.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a TargetGrpcProxy in the specified project in the given scope
        # using the parameters that are included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::TargetGrpcProxy] target_grpc_proxy_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_target_grpc_proxy(project, target_grpc_proxy_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/targetGrpcProxies', options)
          command.request_representation = Google::Apis::ComputeV1::TargetGrpcProxy::Representation
          command.request_object = target_grpc_proxy_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists the TargetGrpcProxies for a project in the given scope.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TargetGrpcProxyList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TargetGrpcProxyList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_target_grpc_proxies(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/targetGrpcProxies', options)
          command.response_representation = Google::Apis::ComputeV1::TargetGrpcProxyList::Representation
          command.response_class = Google::Apis::ComputeV1::TargetGrpcProxyList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches the specified TargetGrpcProxy resource with the data included in
        # the request. This method supports PATCH
        # semantics and usesJSON merge
        # patch format and processing rules.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] target_grpc_proxy
        #   Name of the TargetGrpcProxy resource to patch.
        # @param [Google::Apis::ComputeV1::TargetGrpcProxy] target_grpc_proxy_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_target_grpc_proxy(project, target_grpc_proxy, target_grpc_proxy_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/global/targetGrpcProxies/{targetGrpcProxy}', options)
          command.request_representation = Google::Apis::ComputeV1::TargetGrpcProxy::Representation
          command.request_object = target_grpc_proxy_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['targetGrpcProxy'] = target_grpc_proxy unless target_grpc_proxy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of all TargetHttpProxy resources, regional and global,
        # available to the specified project.
        # To prevent failure, Google recommends that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Name of the project scoping this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TargetHttpProxyAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TargetHttpProxyAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def aggregated_target_http_proxy_list(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/targetHttpProxies', options)
          command.response_representation = Google::Apis::ComputeV1::TargetHttpProxyAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::TargetHttpProxyAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified TargetHttpProxy resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] target_http_proxy
        #   Name of the TargetHttpProxy resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_target_http_proxy(project, target_http_proxy, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/global/targetHttpProxies/{targetHttpProxy}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['targetHttpProxy'] = target_http_proxy unless target_http_proxy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified TargetHttpProxy resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] target_http_proxy
        #   Name of the TargetHttpProxy resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TargetHttpProxy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TargetHttpProxy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_target_http_proxy(project, target_http_proxy, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/targetHttpProxies/{targetHttpProxy}', options)
          command.response_representation = Google::Apis::ComputeV1::TargetHttpProxy::Representation
          command.response_class = Google::Apis::ComputeV1::TargetHttpProxy
          command.params['project'] = project unless project.nil?
          command.params['targetHttpProxy'] = target_http_proxy unless target_http_proxy.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a TargetHttpProxy resource in the specified
        # project using the data included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::TargetHttpProxy] target_http_proxy_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_target_http_proxy(project, target_http_proxy_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/targetHttpProxies', options)
          command.request_representation = Google::Apis::ComputeV1::TargetHttpProxy::Representation
          command.request_object = target_http_proxy_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of TargetHttpProxy resources available
        # to the specified project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TargetHttpProxyList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TargetHttpProxyList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_target_http_proxies(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/targetHttpProxies', options)
          command.response_representation = Google::Apis::ComputeV1::TargetHttpProxyList::Representation
          command.response_class = Google::Apis::ComputeV1::TargetHttpProxyList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches the specified TargetHttpProxy resource with the data included in
        # the request. This method supports PATCH
        # semantics and usesJSON merge
        # patch format and processing rules.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] target_http_proxy
        #   Name of the TargetHttpProxy resource to patch.
        # @param [Google::Apis::ComputeV1::TargetHttpProxy] target_http_proxy_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_target_http_proxy(project, target_http_proxy, target_http_proxy_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/global/targetHttpProxies/{targetHttpProxy}', options)
          command.request_representation = Google::Apis::ComputeV1::TargetHttpProxy::Representation
          command.request_object = target_http_proxy_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['targetHttpProxy'] = target_http_proxy unless target_http_proxy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Changes the URL map for TargetHttpProxy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] target_http_proxy
        #   Name of the TargetHttpProxy to set a URL map for.
        # @param [Google::Apis::ComputeV1::UrlMapReference] url_map_reference_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_target_http_proxy_url_map(project, target_http_proxy, url_map_reference_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/targetHttpProxies/{targetHttpProxy}/setUrlMap', options)
          command.request_representation = Google::Apis::ComputeV1::UrlMapReference::Representation
          command.request_object = url_map_reference_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['targetHttpProxy'] = target_http_proxy unless target_http_proxy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of all TargetHttpsProxy resources, regional and global,
        # available to the specified project.
        # To prevent failure, Google recommends that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Name of the project scoping this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TargetHttpsProxyAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TargetHttpsProxyAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def aggregated_target_https_proxy_list(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/targetHttpsProxies', options)
          command.response_representation = Google::Apis::ComputeV1::TargetHttpsProxyAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::TargetHttpsProxyAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified TargetHttpsProxy resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] target_https_proxy
        #   Name of the TargetHttpsProxy resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_target_https_proxy(project, target_https_proxy, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/global/targetHttpsProxies/{targetHttpsProxy}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['targetHttpsProxy'] = target_https_proxy unless target_https_proxy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified TargetHttpsProxy resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] target_https_proxy
        #   Name of the TargetHttpsProxy resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TargetHttpsProxy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TargetHttpsProxy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_target_https_proxy(project, target_https_proxy, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/targetHttpsProxies/{targetHttpsProxy}', options)
          command.response_representation = Google::Apis::ComputeV1::TargetHttpsProxy::Representation
          command.response_class = Google::Apis::ComputeV1::TargetHttpsProxy
          command.params['project'] = project unless project.nil?
          command.params['targetHttpsProxy'] = target_https_proxy unless target_https_proxy.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a TargetHttpsProxy resource in the specified
        # project using the data included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::TargetHttpsProxy] target_https_proxy_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_target_https_proxy(project, target_https_proxy_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/targetHttpsProxies', options)
          command.request_representation = Google::Apis::ComputeV1::TargetHttpsProxy::Representation
          command.request_object = target_https_proxy_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of TargetHttpsProxy resources
        # available to the specified project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TargetHttpsProxyList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TargetHttpsProxyList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_target_https_proxies(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/targetHttpsProxies', options)
          command.response_representation = Google::Apis::ComputeV1::TargetHttpsProxyList::Representation
          command.response_class = Google::Apis::ComputeV1::TargetHttpsProxyList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches the specified TargetHttpsProxy resource with the data included in
        # the request. This method supports PATCH
        # semantics and usesJSON merge
        # patch format and processing rules.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] target_https_proxy
        #   Name of the TargetHttpsProxy resource to patch.
        # @param [Google::Apis::ComputeV1::TargetHttpsProxy] target_https_proxy_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_target_https_proxy(project, target_https_proxy, target_https_proxy_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/global/targetHttpsProxies/{targetHttpsProxy}', options)
          command.request_representation = Google::Apis::ComputeV1::TargetHttpsProxy::Representation
          command.request_object = target_https_proxy_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['targetHttpsProxy'] = target_https_proxy unless target_https_proxy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Changes the Certificate Map for TargetHttpsProxy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] target_https_proxy
        #   Name of the TargetHttpsProxy resource whose CertificateMap is
        #   to be set. The name must be 1-63 characters long, and comply with RFC1035.
        # @param [Google::Apis::ComputeV1::TargetHttpsProxiesSetCertificateMapRequest] target_https_proxies_set_certificate_map_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_target_https_proxy_certificate_map(project, target_https_proxy, target_https_proxies_set_certificate_map_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/targetHttpsProxies/{targetHttpsProxy}/setCertificateMap', options)
          command.request_representation = Google::Apis::ComputeV1::TargetHttpsProxiesSetCertificateMapRequest::Representation
          command.request_object = target_https_proxies_set_certificate_map_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['targetHttpsProxy'] = target_https_proxy unless target_https_proxy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the QUIC override policy for TargetHttpsProxy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] target_https_proxy
        #   Name of the TargetHttpsProxy resource to set the QUIC override policy for.
        #   The name should conform to RFC1035.
        # @param [Google::Apis::ComputeV1::TargetHttpsProxiesSetQuicOverrideRequest] target_https_proxies_set_quic_override_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_target_https_proxy_quic_override(project, target_https_proxy, target_https_proxies_set_quic_override_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/targetHttpsProxies/{targetHttpsProxy}/setQuicOverride', options)
          command.request_representation = Google::Apis::ComputeV1::TargetHttpsProxiesSetQuicOverrideRequest::Representation
          command.request_object = target_https_proxies_set_quic_override_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['targetHttpsProxy'] = target_https_proxy unless target_https_proxy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Replaces SslCertificates for TargetHttpsProxy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] target_https_proxy
        #   Name of the TargetHttpsProxy resource to set an
        #   SslCertificates resource for.
        # @param [Google::Apis::ComputeV1::TargetHttpsProxiesSetSslCertificatesRequest] target_https_proxies_set_ssl_certificates_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_target_https_proxy_ssl_certificates(project, target_https_proxy, target_https_proxies_set_ssl_certificates_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/targetHttpsProxies/{targetHttpsProxy}/setSslCertificates', options)
          command.request_representation = Google::Apis::ComputeV1::TargetHttpsProxiesSetSslCertificatesRequest::Representation
          command.request_object = target_https_proxies_set_ssl_certificates_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['targetHttpsProxy'] = target_https_proxy unless target_https_proxy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the SSL policy for TargetHttpsProxy. The SSL policy specifies the
        # server-side support for SSL features. This affects connections between
        # clients and the HTTPS proxy load balancer. They do not affect the
        # connection between the load balancer and the backends.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] target_https_proxy
        #   Name of the TargetHttpsProxy resource whose SSL policy is
        #   to be set. The name must be 1-63 characters long, and comply with RFC1035.
        # @param [Google::Apis::ComputeV1::SslPolicyReference] ssl_policy_reference_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_target_https_proxy_ssl_policy(project, target_https_proxy, ssl_policy_reference_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/targetHttpsProxies/{targetHttpsProxy}/setSslPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::SslPolicyReference::Representation
          command.request_object = ssl_policy_reference_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['targetHttpsProxy'] = target_https_proxy unless target_https_proxy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Changes the URL map for TargetHttpsProxy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] target_https_proxy
        #   Name of the TargetHttpsProxy resource whose URL map is
        #   to be set.
        # @param [Google::Apis::ComputeV1::UrlMapReference] url_map_reference_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_target_https_proxy_url_map(project, target_https_proxy, url_map_reference_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/targetHttpsProxies/{targetHttpsProxy}/setUrlMap', options)
          command.request_representation = Google::Apis::ComputeV1::UrlMapReference::Representation
          command.request_object = url_map_reference_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['targetHttpsProxy'] = target_https_proxy unless target_https_proxy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves an aggregated list of target instances.
        # To prevent failure, Google recommends that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TargetInstanceAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TargetInstanceAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_aggregated_target_instance(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/targetInstances', options)
          command.response_representation = Google::Apis::ComputeV1::TargetInstanceAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::TargetInstanceAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified TargetInstance resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone scoping this request.
        # @param [String] target_instance
        #   Name of the TargetInstance resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_target_instance(project, zone, target_instance, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/zones/{zone}/targetInstances/{targetInstance}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['targetInstance'] = target_instance unless target_instance.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified TargetInstance resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone scoping this request.
        # @param [String] target_instance
        #   Name of the TargetInstance resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TargetInstance] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TargetInstance]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_target_instance(project, zone, target_instance, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/targetInstances/{targetInstance}', options)
          command.response_representation = Google::Apis::ComputeV1::TargetInstance::Representation
          command.response_class = Google::Apis::ComputeV1::TargetInstance
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['targetInstance'] = target_instance unless target_instance.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a TargetInstance resource in the specified project and zone using
        # the data included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone scoping this request.
        # @param [Google::Apis::ComputeV1::TargetInstance] target_instance_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_target_instance(project, zone, target_instance_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/targetInstances', options)
          command.request_representation = Google::Apis::ComputeV1::TargetInstance::Representation
          command.request_object = target_instance_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of TargetInstance resources available to the specified
        # project and zone.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone scoping this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TargetInstanceList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TargetInstanceList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_target_instances(project, zone, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/targetInstances', options)
          command.response_representation = Google::Apis::ComputeV1::TargetInstanceList::Representation
          command.response_class = Google::Apis::ComputeV1::TargetInstanceList
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the Google Cloud Armor security policy for the specified target
        # instance. For more information, seeGoogle
        # Cloud Armor Overview
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone scoping this request.
        # @param [String] target_instance
        #   Name of the TargetInstance resource to which the security policy should be
        #   set. The name should conform to RFC1035.
        # @param [Google::Apis::ComputeV1::SecurityPolicyReference] security_policy_reference_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_target_instance_security_policy(project, zone, target_instance, security_policy_reference_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/targetInstances/{targetInstance}/setSecurityPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::SecurityPolicyReference::Representation
          command.request_object = security_policy_reference_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['targetInstance'] = target_instance unless target_instance.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   The name of the zone for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_target_instance_iam_permissions(project, zone, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/targetInstances/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Adds health check URLs to a target pool.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] target_pool
        #   Name of the target pool to add a health check to.
        # @param [Google::Apis::ComputeV1::AddTargetPoolsHealthCheckRequest] add_target_pools_health_check_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def add_target_pool_health_check(project, region, target_pool, add_target_pools_health_check_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/targetPools/{targetPool}/addHealthCheck', options)
          command.request_representation = Google::Apis::ComputeV1::AddTargetPoolsHealthCheckRequest::Representation
          command.request_object = add_target_pools_health_check_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['targetPool'] = target_pool unless target_pool.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Adds an instance to a target pool.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] target_pool
        #   Name of the TargetPool resource to add instances to.
        # @param [Google::Apis::ComputeV1::AddTargetPoolsInstanceRequest] add_target_pools_instance_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def add_target_pool_instance(project, region, target_pool, add_target_pools_instance_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/targetPools/{targetPool}/addInstance', options)
          command.request_representation = Google::Apis::ComputeV1::AddTargetPoolsInstanceRequest::Representation
          command.request_object = add_target_pools_instance_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['targetPool'] = target_pool unless target_pool.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves an aggregated list of target pools.
        # To prevent failure, Google recommends that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TargetPoolAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TargetPoolAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_aggregated_target_pools(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/targetPools', options)
          command.response_representation = Google::Apis::ComputeV1::TargetPoolAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::TargetPoolAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified target pool.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] target_pool
        #   Name of the TargetPool resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_target_pool(project, region, target_pool, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/regions/{region}/targetPools/{targetPool}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['targetPool'] = target_pool unless target_pool.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified target pool.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] target_pool
        #   Name of the TargetPool resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TargetPool] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TargetPool]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_target_pool(project, region, target_pool, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/targetPools/{targetPool}', options)
          command.response_representation = Google::Apis::ComputeV1::TargetPool::Representation
          command.response_class = Google::Apis::ComputeV1::TargetPool
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['targetPool'] = target_pool unless target_pool.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets the most recent health check results for each IP for the
        # instance that is referenced by the given target pool.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] target_pool
        #   Name of the TargetPool resource to which the queried instance belongs.
        # @param [Google::Apis::ComputeV1::InstanceReference] instance_reference_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TargetPoolInstanceHealth] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TargetPoolInstanceHealth]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_target_pool_health(project, region, target_pool, instance_reference_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/targetPools/{targetPool}/getHealth', options)
          command.request_representation = Google::Apis::ComputeV1::InstanceReference::Representation
          command.request_object = instance_reference_object
          command.response_representation = Google::Apis::ComputeV1::TargetPoolInstanceHealth::Representation
          command.response_class = Google::Apis::ComputeV1::TargetPoolInstanceHealth
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['targetPool'] = target_pool unless target_pool.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a target pool in the specified project and region using
        # the data included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [Google::Apis::ComputeV1::TargetPool] target_pool_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_target_pool(project, region, target_pool_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/targetPools', options)
          command.request_representation = Google::Apis::ComputeV1::TargetPool::Representation
          command.request_object = target_pool_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of target pools available to the specified
        # project and region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TargetPoolList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TargetPoolList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_target_pools(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/targetPools', options)
          command.response_representation = Google::Apis::ComputeV1::TargetPoolList::Representation
          command.response_class = Google::Apis::ComputeV1::TargetPoolList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Removes health check URL from a target pool.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] target_pool
        #   Name of the target pool to remove health checks from.
        # @param [Google::Apis::ComputeV1::RemoveTargetPoolsHealthCheckRequest] remove_target_pools_health_check_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def remove_target_pool_health_check(project, region, target_pool, remove_target_pools_health_check_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/targetPools/{targetPool}/removeHealthCheck', options)
          command.request_representation = Google::Apis::ComputeV1::RemoveTargetPoolsHealthCheckRequest::Representation
          command.request_object = remove_target_pools_health_check_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['targetPool'] = target_pool unless target_pool.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Removes instance URL from a target pool.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] target_pool
        #   Name of the TargetPool resource to remove instances from.
        # @param [Google::Apis::ComputeV1::RemoveTargetPoolsInstanceRequest] remove_target_pools_instance_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def remove_target_pool_instance(project, region, target_pool, remove_target_pools_instance_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/targetPools/{targetPool}/removeInstance', options)
          command.request_representation = Google::Apis::ComputeV1::RemoveTargetPoolsInstanceRequest::Representation
          command.request_object = remove_target_pools_instance_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['targetPool'] = target_pool unless target_pool.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Changes a backup target pool's configurations.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] target_pool
        #   Name of the TargetPool resource to set a backup pool for.
        # @param [Google::Apis::ComputeV1::TargetReference] target_reference_object
        # @param [Float] failover_ratio
        #   New failoverRatio value for the target pool.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_target_pool_backup(project, region, target_pool, target_reference_object = nil, failover_ratio: nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/targetPools/{targetPool}/setBackup', options)
          command.request_representation = Google::Apis::ComputeV1::TargetReference::Representation
          command.request_object = target_reference_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['targetPool'] = target_pool unless target_pool.nil?
          command.query['failoverRatio'] = failover_ratio unless failover_ratio.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the Google Cloud Armor security policy for the specified target pool.
        # For more information, seeGoogle
        # Cloud Armor Overview
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region scoping this request.
        # @param [String] target_pool
        #   Name of the TargetPool resource to which the security policy should be
        #   set. The name should conform to RFC1035.
        # @param [Google::Apis::ComputeV1::SecurityPolicyReference] security_policy_reference_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_target_pool_security_policy(project, region, target_pool, security_policy_reference_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/targetPools/{targetPool}/setSecurityPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::SecurityPolicyReference::Representation
          command.request_object = security_policy_reference_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['targetPool'] = target_pool unless target_pool.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_target_pool_iam_permissions(project, region, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/targetPools/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified TargetSslProxy resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] target_ssl_proxy
        #   Name of the TargetSslProxy resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_target_ssl_proxy(project, target_ssl_proxy, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/global/targetSslProxies/{targetSslProxy}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['targetSslProxy'] = target_ssl_proxy unless target_ssl_proxy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified TargetSslProxy resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] target_ssl_proxy
        #   Name of the TargetSslProxy resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TargetSslProxy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TargetSslProxy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_target_ssl_proxy(project, target_ssl_proxy, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/targetSslProxies/{targetSslProxy}', options)
          command.response_representation = Google::Apis::ComputeV1::TargetSslProxy::Representation
          command.response_class = Google::Apis::ComputeV1::TargetSslProxy
          command.params['project'] = project unless project.nil?
          command.params['targetSslProxy'] = target_ssl_proxy unless target_ssl_proxy.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a TargetSslProxy resource in the specified project using
        # the data included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::TargetSslProxy] target_ssl_proxy_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_target_ssl_proxy(project, target_ssl_proxy_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/targetSslProxies', options)
          command.request_representation = Google::Apis::ComputeV1::TargetSslProxy::Representation
          command.request_object = target_ssl_proxy_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of TargetSslProxy resources
        # available to the specified project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TargetSslProxyList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TargetSslProxyList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_target_ssl_proxies(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/targetSslProxies', options)
          command.response_representation = Google::Apis::ComputeV1::TargetSslProxyList::Representation
          command.response_class = Google::Apis::ComputeV1::TargetSslProxyList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Changes the BackendService for TargetSslProxy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] target_ssl_proxy
        #   Name of the TargetSslProxy resource whose BackendService resource
        #   is to be set.
        # @param [Google::Apis::ComputeV1::TargetSslProxiesSetBackendServiceRequest] target_ssl_proxies_set_backend_service_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_target_ssl_proxy_backend_service(project, target_ssl_proxy, target_ssl_proxies_set_backend_service_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/targetSslProxies/{targetSslProxy}/setBackendService', options)
          command.request_representation = Google::Apis::ComputeV1::TargetSslProxiesSetBackendServiceRequest::Representation
          command.request_object = target_ssl_proxies_set_backend_service_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['targetSslProxy'] = target_ssl_proxy unless target_ssl_proxy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Changes the Certificate Map for TargetSslProxy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] target_ssl_proxy
        #   Name of the TargetSslProxy resource whose CertificateMap is
        #   to be set. The name must be 1-63 characters long, and comply with RFC1035.
        # @param [Google::Apis::ComputeV1::TargetSslProxiesSetCertificateMapRequest] target_ssl_proxies_set_certificate_map_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_target_ssl_proxy_certificate_map(project, target_ssl_proxy, target_ssl_proxies_set_certificate_map_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/targetSslProxies/{targetSslProxy}/setCertificateMap', options)
          command.request_representation = Google::Apis::ComputeV1::TargetSslProxiesSetCertificateMapRequest::Representation
          command.request_object = target_ssl_proxies_set_certificate_map_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['targetSslProxy'] = target_ssl_proxy unless target_ssl_proxy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Changes the ProxyHeaderType for TargetSslProxy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] target_ssl_proxy
        #   Name of the TargetSslProxy resource whose ProxyHeader is to be set.
        # @param [Google::Apis::ComputeV1::TargetSslProxiesSetProxyHeaderRequest] target_ssl_proxies_set_proxy_header_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_target_ssl_proxy_proxy_header(project, target_ssl_proxy, target_ssl_proxies_set_proxy_header_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/targetSslProxies/{targetSslProxy}/setProxyHeader', options)
          command.request_representation = Google::Apis::ComputeV1::TargetSslProxiesSetProxyHeaderRequest::Representation
          command.request_object = target_ssl_proxies_set_proxy_header_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['targetSslProxy'] = target_ssl_proxy unless target_ssl_proxy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Changes SslCertificates for TargetSslProxy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] target_ssl_proxy
        #   Name of the TargetSslProxy resource whose SslCertificate resource
        #   is to be set.
        # @param [Google::Apis::ComputeV1::TargetSslProxiesSetSslCertificatesRequest] target_ssl_proxies_set_ssl_certificates_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_target_ssl_proxy_ssl_certificates(project, target_ssl_proxy, target_ssl_proxies_set_ssl_certificates_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/targetSslProxies/{targetSslProxy}/setSslCertificates', options)
          command.request_representation = Google::Apis::ComputeV1::TargetSslProxiesSetSslCertificatesRequest::Representation
          command.request_object = target_ssl_proxies_set_ssl_certificates_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['targetSslProxy'] = target_ssl_proxy unless target_ssl_proxy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the SSL policy for TargetSslProxy. The SSL policy specifies the
        # server-side support for SSL features. This affects connections between
        # clients and the load balancer. They do not affect the
        # connection between the load balancer and the backends.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] target_ssl_proxy
        #   Name of the TargetSslProxy resource whose SSL policy is
        #   to be set. The name must be 1-63 characters long, and comply with RFC1035.
        # @param [Google::Apis::ComputeV1::SslPolicyReference] ssl_policy_reference_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_target_ssl_proxy_ssl_policy(project, target_ssl_proxy, ssl_policy_reference_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/targetSslProxies/{targetSslProxy}/setSslPolicy', options)
          command.request_representation = Google::Apis::ComputeV1::SslPolicyReference::Representation
          command.request_object = ssl_policy_reference_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['targetSslProxy'] = target_ssl_proxy unless target_ssl_proxy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_target_ssl_proxy_iam_permissions(project, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/targetSslProxies/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of all TargetTcpProxy resources, regional and global,
        # available to the specified project.
        # To prevent failure, Google recommends that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Name of the project scoping this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TargetTcpProxyAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TargetTcpProxyAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def aggregated_target_tcp_proxy_list(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/targetTcpProxies', options)
          command.response_representation = Google::Apis::ComputeV1::TargetTcpProxyAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::TargetTcpProxyAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified TargetTcpProxy resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] target_tcp_proxy
        #   Name of the TargetTcpProxy resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_target_tcp_proxy(project, target_tcp_proxy, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/global/targetTcpProxies/{targetTcpProxy}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['targetTcpProxy'] = target_tcp_proxy unless target_tcp_proxy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified TargetTcpProxy resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] target_tcp_proxy
        #   Name of the TargetTcpProxy resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TargetTcpProxy] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TargetTcpProxy]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_target_tcp_proxy(project, target_tcp_proxy, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/targetTcpProxies/{targetTcpProxy}', options)
          command.response_representation = Google::Apis::ComputeV1::TargetTcpProxy::Representation
          command.response_class = Google::Apis::ComputeV1::TargetTcpProxy
          command.params['project'] = project unless project.nil?
          command.params['targetTcpProxy'] = target_tcp_proxy unless target_tcp_proxy.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a TargetTcpProxy resource in the specified project using
        # the data included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::TargetTcpProxy] target_tcp_proxy_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_target_tcp_proxy(project, target_tcp_proxy_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/targetTcpProxies', options)
          command.request_representation = Google::Apis::ComputeV1::TargetTcpProxy::Representation
          command.request_object = target_tcp_proxy_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of TargetTcpProxy resources
        # available to the specified project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TargetTcpProxyList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TargetTcpProxyList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_target_tcp_proxies(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/targetTcpProxies', options)
          command.response_representation = Google::Apis::ComputeV1::TargetTcpProxyList::Representation
          command.response_class = Google::Apis::ComputeV1::TargetTcpProxyList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Changes the BackendService for TargetTcpProxy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] target_tcp_proxy
        #   Name of the TargetTcpProxy resource whose BackendService resource
        #   is to be set.
        # @param [Google::Apis::ComputeV1::TargetTcpProxiesSetBackendServiceRequest] target_tcp_proxies_set_backend_service_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_target_tcp_proxy_backend_service(project, target_tcp_proxy, target_tcp_proxies_set_backend_service_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/targetTcpProxies/{targetTcpProxy}/setBackendService', options)
          command.request_representation = Google::Apis::ComputeV1::TargetTcpProxiesSetBackendServiceRequest::Representation
          command.request_object = target_tcp_proxies_set_backend_service_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['targetTcpProxy'] = target_tcp_proxy unless target_tcp_proxy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Changes the ProxyHeaderType for TargetTcpProxy.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] target_tcp_proxy
        #   Name of the TargetTcpProxy resource whose ProxyHeader is to be set.
        # @param [Google::Apis::ComputeV1::TargetTcpProxiesSetProxyHeaderRequest] target_tcp_proxies_set_proxy_header_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_target_tcp_proxy_proxy_header(project, target_tcp_proxy, target_tcp_proxies_set_proxy_header_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/targetTcpProxies/{targetTcpProxy}/setProxyHeader', options)
          command.request_representation = Google::Apis::ComputeV1::TargetTcpProxiesSetProxyHeaderRequest::Representation
          command.request_object = target_tcp_proxies_set_proxy_header_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['targetTcpProxy'] = target_tcp_proxy unless target_tcp_proxy.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_target_tcp_proxy_iam_permissions(project, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/targetTcpProxies/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves an aggregated list of target VPN gateways.
        # To prevent failure, Google recommends that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TargetVpnGatewayAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TargetVpnGatewayAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_aggregated_target_vpn_gateways(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/targetVpnGateways', options)
          command.response_representation = Google::Apis::ComputeV1::TargetVpnGatewayAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::TargetVpnGatewayAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified target VPN gateway.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] target_vpn_gateway
        #   Name of the target VPN gateway to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_target_vpn_gateway(project, region, target_vpn_gateway, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/regions/{region}/targetVpnGateways/{targetVpnGateway}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['targetVpnGateway'] = target_vpn_gateway unless target_vpn_gateway.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified target VPN gateway.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] target_vpn_gateway
        #   Name of the target VPN gateway to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TargetVpnGateway] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TargetVpnGateway]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_target_vpn_gateway(project, region, target_vpn_gateway, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/targetVpnGateways/{targetVpnGateway}', options)
          command.response_representation = Google::Apis::ComputeV1::TargetVpnGateway::Representation
          command.response_class = Google::Apis::ComputeV1::TargetVpnGateway
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['targetVpnGateway'] = target_vpn_gateway unless target_vpn_gateway.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a target VPN gateway in the specified project and region using
        # the data included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [Google::Apis::ComputeV1::TargetVpnGateway] target_vpn_gateway_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_target_vpn_gateway(project, region, target_vpn_gateway_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/targetVpnGateways', options)
          command.request_representation = Google::Apis::ComputeV1::TargetVpnGateway::Representation
          command.request_object = target_vpn_gateway_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of target VPN gateways available to the specified
        # project and region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TargetVpnGatewayList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TargetVpnGatewayList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_target_vpn_gateways(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/targetVpnGateways', options)
          command.response_representation = Google::Apis::ComputeV1::TargetVpnGatewayList::Representation
          command.response_class = Google::Apis::ComputeV1::TargetVpnGatewayList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the labels on a TargetVpnGateway. To learn more about labels, read
        # theLabeling
        # Resources documentation.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::RegionSetLabelsRequest] region_set_labels_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_target_vpn_gateway_labels(project, region, resource, region_set_labels_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/targetVpnGateways/{resource}/setLabels', options)
          command.request_representation = Google::Apis::ComputeV1::RegionSetLabelsRequest::Representation
          command.request_object = region_set_labels_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of all UrlMap resources, regional and global,
        # available to the specified project.
        # To prevent failure, Google recommends that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Name of the project scoping this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::UrlMapsAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::UrlMapsAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def aggregated_url_map_list(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/urlMaps', options)
          command.response_representation = Google::Apis::ComputeV1::UrlMapsAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::UrlMapsAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified UrlMap resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] url_map
        #   Name of the UrlMap resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_url_map(project, url_map, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/global/urlMaps/{urlMap}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['urlMap'] = url_map unless url_map.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified UrlMap resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] url_map
        #   Name of the UrlMap resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::UrlMap] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::UrlMap]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_url_map(project, url_map, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/urlMaps/{urlMap}', options)
          command.response_representation = Google::Apis::ComputeV1::UrlMap::Representation
          command.response_class = Google::Apis::ComputeV1::UrlMap
          command.params['project'] = project unless project.nil?
          command.params['urlMap'] = url_map unless url_map.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a UrlMap resource in the specified project using
        # the data included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [Google::Apis::ComputeV1::UrlMap] url_map_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_url_map(project, url_map_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/urlMaps', options)
          command.request_representation = Google::Apis::ComputeV1::UrlMap::Representation
          command.request_object = url_map_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Initiates a cache invalidation operation, invalidating the specified path,
        # scoped to the specified UrlMap.
        # For more information, see [Invalidating cached
        # content](/cdn/docs/invalidating-cached-content).
        # @param [String] project
        #   Project ID for this request.
        # @param [String] url_map
        #   Name of the UrlMap scoping this request.
        # @param [Google::Apis::ComputeV1::CacheInvalidationRule] cache_invalidation_rule_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def invalidate_url_map_cache(project, url_map, cache_invalidation_rule_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/urlMaps/{urlMap}/invalidateCache', options)
          command.request_representation = Google::Apis::ComputeV1::CacheInvalidationRule::Representation
          command.request_object = cache_invalidation_rule_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['urlMap'] = url_map unless url_map.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of UrlMap resources available to the specified
        # project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::UrlMapList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::UrlMapList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_url_maps(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/urlMaps', options)
          command.response_representation = Google::Apis::ComputeV1::UrlMapList::Representation
          command.response_class = Google::Apis::ComputeV1::UrlMapList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Patches the specified UrlMap resource with the data included in the
        # request. This method supportsPATCH
        # semantics and uses theJSON merge
        # patch format and processing rules.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] url_map
        #   Name of the UrlMap resource to patch.
        # @param [Google::Apis::ComputeV1::UrlMap] url_map_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_url_map(project, url_map, url_map_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/global/urlMaps/{urlMap}', options)
          command.request_representation = Google::Apis::ComputeV1::UrlMap::Representation
          command.request_object = url_map_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['urlMap'] = url_map unless url_map.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_url_map_iam_permissions(project, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/urlMaps/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates the specified UrlMap resource with the data included in the
        # request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] url_map
        #   Name of the UrlMap resource to update.
        # @param [Google::Apis::ComputeV1::UrlMap] url_map_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def update_url_map(project, url_map, url_map_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:put, 'projects/{project}/global/urlMaps/{urlMap}', options)
          command.request_representation = Google::Apis::ComputeV1::UrlMap::Representation
          command.request_object = url_map_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['urlMap'] = url_map unless url_map.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Runs static validation for the UrlMap. In particular, the tests of the
        # provided UrlMap will be run. Calling this method does NOT create the
        # UrlMap.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] url_map
        #   Name of the UrlMap resource to be validated as.
        # @param [Google::Apis::ComputeV1::ValidateUrlMapsRequest] validate_url_maps_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::ValidateUrlMapsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::ValidateUrlMapsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def validate_url_map(project, url_map, validate_url_maps_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/urlMaps/{urlMap}/validate', options)
          command.request_representation = Google::Apis::ComputeV1::ValidateUrlMapsRequest::Representation
          command.request_object = validate_url_maps_request_object
          command.response_representation = Google::Apis::ComputeV1::ValidateUrlMapsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::ValidateUrlMapsResponse
          command.params['project'] = project unless project.nil?
          command.params['urlMap'] = url_map unless url_map.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves an aggregated list of VPN gateways.
        # To prevent failure, Google recommends that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::VpnGatewayAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::VpnGatewayAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def aggregated_vpn_gateway_list(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/vpnGateways', options)
          command.response_representation = Google::Apis::ComputeV1::VpnGatewayAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::VpnGatewayAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified VPN gateway.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] vpn_gateway
        #   Name of the VPN gateway to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_vpn_gateway(project, region, vpn_gateway, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/regions/{region}/vpnGateways/{vpnGateway}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['vpnGateway'] = vpn_gateway unless vpn_gateway.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified VPN gateway.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] vpn_gateway
        #   Name of the VPN gateway to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::VpnGateway] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::VpnGateway]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_vpn_gateway(project, region, vpn_gateway, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/vpnGateways/{vpnGateway}', options)
          command.response_representation = Google::Apis::ComputeV1::VpnGateway::Representation
          command.response_class = Google::Apis::ComputeV1::VpnGateway
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['vpnGateway'] = vpn_gateway unless vpn_gateway.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the status for the specified VPN gateway.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] vpn_gateway
        #   Name of the VPN gateway to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::VpnGatewaysGetStatusResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::VpnGatewaysGetStatusResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_vpn_gateway_status(project, region, vpn_gateway, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/vpnGateways/{vpnGateway}/getStatus', options)
          command.response_representation = Google::Apis::ComputeV1::VpnGatewaysGetStatusResponse::Representation
          command.response_class = Google::Apis::ComputeV1::VpnGatewaysGetStatusResponse
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['vpnGateway'] = vpn_gateway unless vpn_gateway.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a VPN gateway in the specified project and region using
        # the data included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [Google::Apis::ComputeV1::VpnGateway] vpn_gateway_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_vpn_gateway(project, region, vpn_gateway_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/vpnGateways', options)
          command.request_representation = Google::Apis::ComputeV1::VpnGateway::Representation
          command.request_object = vpn_gateway_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of VPN gateways available to the specified
        # project and region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::VpnGatewayList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::VpnGatewayList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_vpn_gateways(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/vpnGateways', options)
          command.response_representation = Google::Apis::ComputeV1::VpnGatewayList::Representation
          command.response_class = Google::Apis::ComputeV1::VpnGatewayList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the labels on a VpnGateway. To learn more about labels, read theLabeling
        # Resources documentation.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::RegionSetLabelsRequest] region_set_labels_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_vpn_gateway_labels(project, region, resource, region_set_labels_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/vpnGateways/{resource}/setLabels', options)
          command.request_representation = Google::Apis::ComputeV1::RegionSetLabelsRequest::Representation
          command.request_object = region_set_labels_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns permissions that a caller has on the specified resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The name of the region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::TestPermissionsRequest] test_permissions_request_object
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::TestPermissionsResponse] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::TestPermissionsResponse]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def test_vpn_gateway_iam_permissions(project, region, resource, test_permissions_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/vpnGateways/{resource}/testIamPermissions', options)
          command.request_representation = Google::Apis::ComputeV1::TestPermissionsRequest::Representation
          command.request_object = test_permissions_request_object
          command.response_representation = Google::Apis::ComputeV1::TestPermissionsResponse::Representation
          command.response_class = Google::Apis::ComputeV1::TestPermissionsResponse
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves an aggregated list of VPN tunnels.
        # To prevent failure, Google recommends that you set the
        # `returnPartialSuccess` parameter to `true`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Boolean] include_all_scopes
        #   Indicates whether every visible scope for each scope type (zone, region,
        #   global) should be included in the response. For new resource types added
        #   after this field, the flag has no effect as new resource types will always
        #   include every visible scope for each scope type in response. For resource
        #   types which predate this field, if this flag is omitted or false, only
        #   scopes of the scope types where the resource type is expected to be found
        #   will be included.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [Fixnum] service_project_number
        #   The Shared VPC service project id or service project number for which
        #   aggregated list request is invoked for subnetworks list-usable api.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::VpnTunnelAggregatedList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::VpnTunnelAggregatedList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_aggregated_vpn_tunnel(project, filter: nil, include_all_scopes: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, service_project_number: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/aggregated/vpnTunnels', options)
          command.response_representation = Google::Apis::ComputeV1::VpnTunnelAggregatedList::Representation
          command.response_class = Google::Apis::ComputeV1::VpnTunnelAggregatedList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['includeAllScopes'] = include_all_scopes unless include_all_scopes.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['serviceProjectNumber'] = service_project_number unless service_project_number.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified VpnTunnel resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] vpn_tunnel
        #   Name of the VpnTunnel resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_vpn_tunnel(project, region, vpn_tunnel, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/regions/{region}/vpnTunnels/{vpnTunnel}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['vpnTunnel'] = vpn_tunnel unless vpn_tunnel.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified VpnTunnel resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] vpn_tunnel
        #   Name of the VpnTunnel resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::VpnTunnel] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::VpnTunnel]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_vpn_tunnel(project, region, vpn_tunnel, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/vpnTunnels/{vpnTunnel}', options)
          command.response_representation = Google::Apis::ComputeV1::VpnTunnel::Representation
          command.response_class = Google::Apis::ComputeV1::VpnTunnel
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['vpnTunnel'] = vpn_tunnel unless vpn_tunnel.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a VpnTunnel resource in the specified project and region using
        # the data included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [Google::Apis::ComputeV1::VpnTunnel] vpn_tunnel_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_vpn_tunnel(project, region, vpn_tunnel_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/vpnTunnels', options)
          command.request_representation = Google::Apis::ComputeV1::VpnTunnel::Representation
          command.request_object = vpn_tunnel_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of VpnTunnel resources contained in the specified
        # project and region.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   Name of the region for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::VpnTunnelList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::VpnTunnelList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_vpn_tunnels(project, region, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/regions/{region}/vpnTunnels', options)
          command.response_representation = Google::Apis::ComputeV1::VpnTunnelList::Representation
          command.response_class = Google::Apis::ComputeV1::VpnTunnelList
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Sets the labels on a VpnTunnel. To learn more about labels, read theLabeling
        # Resources documentation.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] region
        #   The region for this request.
        # @param [String] resource
        #   Name or id of the resource for this request.
        # @param [Google::Apis::ComputeV1::RegionSetLabelsRequest] region_set_labels_request_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def set_vpn_tunnel_labels(project, region, resource, region_set_labels_request_object = nil, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/regions/{region}/vpnTunnels/{resource}/setLabels', options)
          command.request_representation = Google::Apis::ComputeV1::RegionSetLabelsRequest::Representation
          command.request_object = region_set_labels_request_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['region'] = region unless region.nil?
          command.params['resource'] = resource unless resource.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified wire group in the given scope.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] cross_site_network
        # @param [String] wire_group
        #   Name of the wire group resource to delete.
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        #   end_interface: MixerMutationRequestBuilder
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_wire_group(project, cross_site_network, wire_group, request_id: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/global/crossSiteNetworks/{crossSiteNetwork}/wireGroups/{wireGroup}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['crossSiteNetwork'] = cross_site_network unless cross_site_network.nil?
          command.params['wireGroup'] = wire_group unless wire_group.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Gets the specified wire group resource in the given scope.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] cross_site_network
        # @param [String] wire_group
        #   Name of the wire group resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::WireGroup] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::WireGroup]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_wire_group(project, cross_site_network, wire_group, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/crossSiteNetworks/{crossSiteNetwork}/wireGroups/{wireGroup}', options)
          command.response_representation = Google::Apis::ComputeV1::WireGroup::Representation
          command.response_class = Google::Apis::ComputeV1::WireGroup
          command.params['project'] = project unless project.nil?
          command.params['crossSiteNetwork'] = cross_site_network unless cross_site_network.nil?
          command.params['wireGroup'] = wire_group unless wire_group.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Creates a wire group in the specified project in the given scope
        # using the parameters that are included in the request.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] cross_site_network
        # @param [Google::Apis::ComputeV1::WireGroup] wire_group_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        #   end_interface: MixerMutationRequestBuilder
        # @param [Boolean] validate_only
        #   [Input Only] Validate the new configuration, but don't create it.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def insert_wire_group(project, cross_site_network, wire_group_object = nil, request_id: nil, validate_only: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/global/crossSiteNetworks/{crossSiteNetwork}/wireGroups', options)
          command.request_representation = Google::Apis::ComputeV1::WireGroup::Representation
          command.request_object = wire_group_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['crossSiteNetwork'] = cross_site_network unless cross_site_network.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['validateOnly'] = validate_only unless validate_only.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Lists the wire groups for a project in the given scope.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] cross_site_network
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::WireGroupList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::WireGroupList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_wire_groups(project, cross_site_network, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/global/crossSiteNetworks/{crossSiteNetwork}/wireGroups', options)
          command.response_representation = Google::Apis::ComputeV1::WireGroupList::Representation
          command.response_class = Google::Apis::ComputeV1::WireGroupList
          command.params['project'] = project unless project.nil?
          command.params['crossSiteNetwork'] = cross_site_network unless cross_site_network.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Updates the specified wire group resource with the data included in the
        # request. This method supportsPATCH
        # semantics and usesJSON merge
        # patch format and processing rules.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] cross_site_network
        # @param [String] wire_group
        #   Name of the WireGroups resource to patch.
        # @param [Google::Apis::ComputeV1::WireGroup] wire_group_object
        # @param [String] request_id
        #   An optional request ID to identify requests. Specify a unique request ID so
        #   that if you must retry your request, the server will know to ignore the
        #   request if it has already been completed.
        #   For example, consider a situation where you make an initial request and
        #   the request times out. If you make the request again with the same
        #   request ID, the server can check if original operation with the same
        #   request ID was received, and if so, will ignore the second request. This
        #   prevents clients from accidentally creating duplicate commitments.
        #   The request ID must be
        #   a valid UUID with the exception that zero UUID is not supported
        #   (00000000-0000-0000-0000-000000000000).
        #   end_interface: MixerMutationRequestBuilder
        # @param [String] update_mask
        #   update_mask indicates fields to be updated as part of this request.
        # @param [Boolean] validate_only
        #   [Input Only] Validate the new configuration, but don't update it.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def patch_wire_group(project, cross_site_network, wire_group, wire_group_object = nil, request_id: nil, update_mask: nil, validate_only: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:patch, 'projects/{project}/global/crossSiteNetworks/{crossSiteNetwork}/wireGroups/{wireGroup}', options)
          command.request_representation = Google::Apis::ComputeV1::WireGroup::Representation
          command.request_object = wire_group_object
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['crossSiteNetwork'] = cross_site_network unless cross_site_network.nil?
          command.params['wireGroup'] = wire_group unless wire_group.nil?
          command.query['requestId'] = request_id unless request_id.nil?
          command.query['updateMask'] = update_mask unless update_mask.nil?
          command.query['validateOnly'] = validate_only unless validate_only.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Deletes the specified zone-specific Operations resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone for this request.
        # @param [String] operation
        #   Name of the Operations resource to delete, or its unique numeric
        #   identifier.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [NilClass] No result returned for this method
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [void]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def delete_zone_operation(project, zone, operation, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:delete, 'projects/{project}/zones/{zone}/operations/{operation}', options)
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['operation'] = operation unless operation.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the specified zone-specific Operations resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone for this request.
        # @param [String] operation
        #   Name of the Operations resource to return, or its unique numeric
        #   identifier.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_zone_operation(project, zone, operation, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/operations/{operation}', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['operation'] = operation unless operation.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves a list of Operation resources contained within
        # the specified zone.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone for request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::OperationList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::OperationList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_zone_operations(project, zone, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}/operations', options)
          command.response_representation = Google::Apis::ComputeV1::OperationList::Representation
          command.response_class = Google::Apis::ComputeV1::OperationList
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Waits for the specified Operation resource to return as `DONE`
        # or for the request to approach the 2 minute deadline, and retrieves the
        # specified Operation resource. This method waits for no more than the
        # 2 minutes and then returns the current state of the
        # operation, which might be `DONE` or still in progress.
        # This method is called on a best-effort basis. Specifically:
        # 
        # 
        # - In uncommon cases, when the server is overloaded, the request might
        # return before the default deadline is reached, or might return after zero
        # seconds.
        # - If the default deadline is reached, there is no guarantee that the
        # operation is actually done when the method returns. Be prepared to retry
        # if the operation is not `DONE`.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone for this request.
        # @param [String] operation
        #   Name of the Operations resource to return, or its unique numeric
        #   identifier.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Operation] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Operation]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def wait_zone_operation(project, zone, operation, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:post, 'projects/{project}/zones/{zone}/operations/{operation}/wait', options)
          command.response_representation = Google::Apis::ComputeV1::Operation::Representation
          command.response_class = Google::Apis::ComputeV1::Operation
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.params['operation'] = operation unless operation.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Returns the specified Zone resource.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] zone
        #   Name of the zone resource to return.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::Zone] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::Zone]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def get_zone(project, zone, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones/{zone}', options)
          command.response_representation = Google::Apis::ComputeV1::Zone::Representation
          command.response_class = Google::Apis::ComputeV1::Zone
          command.params['project'] = project unless project.nil?
          command.params['zone'] = zone unless zone.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end
        
        # Retrieves the list of Zone resources available to the specified project.
        # @param [String] project
        #   Project ID for this request.
        # @param [String] filter
        #   A filter expression that filters resources listed in the response. Most
        #   Compute resources support two types of filter expressions:
        #   expressions that support regular expressions and expressions that follow
        #   API improvement proposal AIP-160.
        #   These two types of filter expressions cannot be mixed in one request.
        #   If you want to use AIP-160, your expression must specify the field name, an
        #   operator, and the value that you want to use for filtering. The value
        #   must be a string, a number, or a boolean. The operator
        #   must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
        #   For example, if you are filtering Compute Engine instances, you can
        #   exclude instances named `example-instance` by specifying
        #   `name != example-instance`.
        #   The `:*` comparison can be used to test whether a key has been defined.
        #   For example, to find all objects with `owner` label use:
        #   ```
        #   labels.owner:*
        #   ```
        #   You can also filter nested fields. For example, you could specify
        #   `scheduling.automaticRestart = false` to include instances only
        #   if they are not scheduled for automatic restarts. You can use filtering
        #   on nested fields to filter based onresource labels.
        #   To filter on multiple expressions, provide each separate expression within
        #   parentheses. For example:
        #   ```
        #   (scheduling.automaticRestart = true)
        #   (cpuPlatform = "Intel Skylake")
        #   ```
        #   By default, each expression is an `AND` expression. However, you
        #   can include `AND` and `OR` expressions explicitly.
        #   For example:
        #   ```
        #   (cpuPlatform = "Intel Skylake") OR
        #   (cpuPlatform = "Intel Broadwell") AND
        #   (scheduling.automaticRestart = true)
        #   ```
        #   If you want to use a regular expression, use the `eq` (equal) or `ne`
        #   (not equal) operator against a single un-parenthesized expression with or
        #   without quotes or against multiple parenthesized expressions. Examples:
        #   `fieldname eq unquoted literal`
        #   `fieldname eq 'single quoted literal'`
        #   `fieldname eq "double quoted literal"`
        #   `(fieldname1 eq literal) (fieldname2 ne "literal")`
        #   The literal value is interpreted as a regular expression using GoogleRE2
        #   library syntax.
        #   The literal value must match the entire field.
        #   For example, to filter for instances that do not end with name "instance",
        #   you would use `name ne .*instance`.
        #   You cannot combine constraints on multiple fields using regular
        #   expressions.
        # @param [Fixnum] max_results
        #   The maximum number of results per page that should be returned.
        #   If the number of available results is larger than `maxResults`,
        #   Compute Engine returns a `nextPageToken` that can be used to get
        #   the next page of results in subsequent list requests. Acceptable values are
        #   `0` to `500`, inclusive. (Default: `500`)
        # @param [String] order_by
        #   Sorts list results by a certain order. By default, results
        #   are returned in alphanumerical order based on the resource name.
        #   You can also sort results in descending order based on the creation
        #   timestamp using `orderBy="creationTimestamp desc"`. This sorts
        #   results based on the `creationTimestamp` field in
        #   reverse chronological order (newest result first). Use this to sort
        #   resources like operations so that the newest operation is returned first.
        #   Currently, only sorting by `name` or
        #   `creationTimestamp desc` is supported.
        # @param [String] page_token
        #   Specifies a page token to use. Set `pageToken` to the
        #   `nextPageToken` returned by a previous list request to get
        #   the next page of results.
        # @param [Boolean] return_partial_success
        #   Opt-in for partial success behavior which provides partial results in case
        #   of failure. The default value is false.
        #   For example, when partial success behavior is enabled, aggregatedList for a
        #   single zone scope either returns all resources in the zone or no resources,
        #   with an error code.
        # @param [String] fields
        #   Selector specifying which fields to include in a partial response.
        # @param [String] quota_user
        #   Available to use for quota purposes for server-side applications. Can be any
        #   arbitrary string assigned to a user, but should not exceed 40 characters.
        # @param [String] user_ip
        #   Legacy name for parameter that has been superseded by `quotaUser`.
        # @param [Google::Apis::RequestOptions] options
        #   Request-specific options
        #
        # @yield [result, err] Result & error if block supplied
        # @yieldparam result [Google::Apis::ComputeV1::ZoneList] parsed result object
        # @yieldparam err [StandardError] error object if request failed
        #
        # @return [Google::Apis::ComputeV1::ZoneList]
        #
        # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
        # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
        # @raise [Google::Apis::AuthorizationError] Authorization is required
        def list_zones(project, filter: nil, max_results: nil, order_by: nil, page_token: nil, return_partial_success: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
          command = make_simple_command(:get, 'projects/{project}/zones', options)
          command.response_representation = Google::Apis::ComputeV1::ZoneList::Representation
          command.response_class = Google::Apis::ComputeV1::ZoneList
          command.params['project'] = project unless project.nil?
          command.query['filter'] = filter unless filter.nil?
          command.query['maxResults'] = max_results unless max_results.nil?
          command.query['orderBy'] = order_by unless order_by.nil?
          command.query['pageToken'] = page_token unless page_token.nil?
          command.query['returnPartialSuccess'] = return_partial_success unless return_partial_success.nil?
          command.query['fields'] = fields unless fields.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
          execute_or_queue_command(command, &block)
        end

        protected

        def apply_command_defaults(command)
          command.query['key'] = key unless key.nil?
          command.query['quotaUser'] = quota_user unless quota_user.nil?
          command.query['userIp'] = user_ip unless user_ip.nil?
        end
      end
    end
  end
end
