text: #!/usr/bin/python
  # -*- coding: utf-8 -*-
  #
  # Copyright (C) 2017 Google
  # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
  # ----------------------------------------------------------------------------
  #
  #     ***     AUTO GENERATED CODE    ***    AUTO GENERATED CODE     ***
  #
  # ----------------------------------------------------------------------------
  #
  #     This file is automatically generated by Magic Modules and manual
  #     changes will be clobbered when the file is regenerated.
  #
  #     Please read more about how to change this file at
  #     https://www.github.com/GoogleCloudPlatform/magic-modules
  #
  # ----------------------------------------------------------------------------
  
  from __future__ import absolute_import, division, print_function
  
  __metaclass__ = type
  
  ################################################################################
  # Documentation
  ################################################################################
  
  ANSIBLE_METADATA = {'metadata_version': '1.1', 'status': ["preview"], 'supported_by': 'community'}
  
  DOCUMENTATION = '''
  ---
  module: gcp_cloudtasks_queue_info
  description:
  - Gather info for GCP Queue
  short_description: Gather info for GCP Queue
  author: Google Inc. (@googlecloudplatform)
  requirements:
  - python >= 2.6
  - requests >= 2.18.4
  - google-auth >= 1.3.0
  options:
    location:
      description:
      - The location of the queue.
      required: true
      type: str
    project:
      description:
      - The Google Cloud Platform project to use.
      type: str
    auth_kind:
      description:
      - The type of credential used.
      type: str
      required: true
      choices:
      - application
      - machineaccount
      - serviceaccount
    service_account_contents:
      description:
      - The contents of a Service Account JSON file, either in a dictionary or as a
        JSON string that represents it.
      type: jsonarg
    service_account_file:
      description:
      - The path of a Service Account JSON file if serviceaccount is selected as type.
      type: path
    service_account_email:
      description:
      - An optional service account email address if machineaccount is selected and
        the user does not wish to use the default email.
      type: str
    scopes:
      description:
      - Array of scopes to be used
      type: list
      elements: str
    env_type:
      description:
      - Specifies which Ansible environment you're running this module within.
      - This should not be set unless you know what you're doing.
      - This only alters the User Agent string for any API requests.
      type: str
  notes:
  - for authentication, you can set service_account_file using the C(gcp_service_account_file)
    env variable.
  - for authentication, you can set service_account_contents using the C(GCP_SERVICE_ACCOUNT_CONTENTS)
    env variable.
  - For authentication, you can set service_account_email using the C(GCP_SERVICE_ACCOUNT_EMAIL)
    env variable.
  - For authentication, you can set auth_kind using the C(GCP_AUTH_KIND) env variable.
  - For authentication, you can set scopes using the C(GCP_SCOPES) env variable.
  - Environment variables values will only be used if the playbook values are not set.
  - The I(service_account_email) and I(service_account_file) options are mutually exclusive.
  '''
  
  EXAMPLES = '''
  - name: get info on a queue
    gcp_cloudtasks_queue_info:
      location: us-central1
      project: test_project
      auth_kind: serviceaccount
      service_account_file: "/tmp/auth.pem"
  '''
  
  RETURN = '''
  resources:
    description: List of resources
    returned: always
    type: complex
    contains:
      name:
        description:
        - The queue name.
        returned: success
        type: str
      appEngineRoutingOverride:
        description:
        - Overrides for task-level appEngineRouting. These settings apply only to App
          Engine tasks in this queue .
        returned: success
        type: complex
        contains:
          service:
            description:
            - App service.
            - By default, the task is sent to the service which is the default service
              when the task is attempted.
            returned: success
            type: str
          version:
            description:
            - App version.
            - By default, the task is sent to the version which is the default version
              when the task is attempted.
            returned: success
            type: str
          instance:
            description:
            - App instance.
            - By default, the task is sent to an instance which is available when the
              task is attempted.
            returned: success
            type: str
          host:
            description:
            - The host that the task is sent to.
            returned: success
            type: str
      rateLimits:
        description:
        - Rate limits for task dispatches.
        - 'The queue''s actual dispatch rate is the result of: * Number of tasks in
          the queue * User-specified throttling: rateLimits, retryConfig, and the queue''s
          state.'
        - "* System throttling due to 429 (Too Many Requests) or 503 (Service Unavailable)
          responses from the worker, high error rates, or to smooth sudden large traffic
          spikes."
        returned: success
        type: complex
        contains:
          maxDispatchesPerSecond:
            description:
            - The maximum rate at which tasks are dispatched from this queue.
            - If unspecified when the queue is created, Cloud Tasks will pick the default.
            returned: success
            type: str
          maxConcurrentDispatches:
            description:
            - The maximum number of concurrent tasks that Cloud Tasks allows to be dispatched
              for this queue. After this threshold has been reached, Cloud Tasks stops
              dispatching tasks until the number of concurrent requests decreases.
            returned: success
            type: int
          maxBurstSize:
            description:
            - The max burst size.
            - Max burst size limits how fast tasks in queue are processed when many
              tasks are in the queue and the rate is high. This field allows the queue
              to have a high rate so processing starts shortly after a task is enqueued,
              but still limits resource usage when many tasks are enqueued in a short
              period of time.
            returned: success
            type: int
      retryConfig:
        description:
        - Settings that determine the retry behavior.
        returned: success
        type: complex
        contains:
          maxAttempts:
            description:
            - Number of attempts per task.
            - Cloud Tasks will attempt the task maxAttempts times (that is, if the first
              attempt fails, then there will be maxAttempts - 1 retries). Must be >=
              -1.
            - If unspecified when the queue is created, Cloud Tasks will pick the default.
            - "-1 indicates unlimited attempts."
            returned: success
            type: int
          maxRetryDuration:
            description:
            - If positive, maxRetryDuration specifies the time limit for retrying a
              failed task, measured from when the task was first attempted. Once maxRetryDuration
              time has passed and the task has been attempted maxAttempts times, no
              further attempts will be made and the task will be deleted.
            - If zero, then the task age is unlimited.
            returned: success
            type: str
          minBackoff:
            description:
            - A task will be scheduled for retry between minBackoff and maxBackoff duration
              after it fails, if the queue's RetryConfig specifies that the task should
              be retried.
            returned: success
            type: str
          maxBackoff:
            description:
            - A task will be scheduled for retry between minBackoff and maxBackoff duration
              after it fails, if the queue's RetryConfig specifies that the task should
              be retried.
            returned: success
            type: str
          maxDoublings:
            description:
            - The time between retries will double maxDoublings times.
            - A task's retry interval starts at minBackoff, then doubles maxDoublings
              times, then increases linearly, and finally retries retries at intervals
              of maxBackoff up to maxAttempts times.
            returned: success
            type: int
          purgeTime:
            description:
            - The last time this queue was purged.
            returned: success
            type: str
      stackdriverLoggingConfig:
        description:
        - Configuration options for writing logs to Stackdriver Logging.
        returned: success
        type: complex
        contains:
          samplingRatio:
            description:
            - Specifies the fraction of operations to write to Stackdriver Logging.
            - This field may contain any value between 0.0 and 1.0, inclusive. 0.0 is
              the default and means that no operations are logged.
            returned: success
            type: str
      status:
        description:
        - The current state of the queue.
        returned: success
        type: str
      location:
        description:
        - The location of the queue.
        returned: success
        type: str
  '''
  
  ################################################################################
  # Imports
  ################################################################################
  from ansible_collections.google.cloud.plugins.module_utils.gcp_utils import navigate_hash, GcpSession, GcpModule, GcpRequest
  import json
  
  ################################################################################
  # Main
  ################################################################################
  
  
  def main():
      module = GcpModule(argument_spec=dict(location=dict(required=True, type='str')))
  
      if not module.params['scopes']:
          module.params['scopes'] = ['https://www.googleapis.com/auth/cloud-platform']
  
      return_value = {'resources': fetch_list(module, collection(module))}
      module.exit_json(**return_value)
  
  
  def collection(module):
      return "https://cloudtasks.googleapis.com/v2/projects/{project}/locations/{location}/queues".format(**module.params)
  
  
  def fetch_list(module, link):
      auth = GcpSession(module, 'cloudtasks')
      return auth.list(link, return_if_object, array_name='queues')
  
  
  def return_if_object(module, response):
      # If not found, return nothing.
      if response.status_code == 404:
          return None
  
      # If no content, return nothing.
      if response.status_code == 204:
          return None
  
      try:
          module.raise_for_status(response)
          result = response.json()
      except getattr(json.decoder, 'JSONDecodeError', ValueError) as inst:
          module.fail_json(msg="Invalid JSON response with error: %s" % inst)
  
      if navigate_hash(result, ['error', 'errors']):
          module.fail_json(msg=navigate_hash(result, ['error', 'errors']))
  
      return result
  
  
  if __name__ == "__main__":
      main()
  