summaryrefslogtreecommitdiff
path: root/lib/ansible/modules/cloud/google/gcp_sql_database_facts.py
diff options
context:
space:
mode:
authorAlex Stephen <alexstephen@google.com>2018-12-21 08:50:50 -0800
committeransibot <ansibot@users.noreply.github.com>2018-12-21 11:50:50 -0500
commite499718a5089829a9a08c91b270e6c9464ff1186 (patch)
tree90d7ef9d865e538a7ed1b9699c779163547079b8 /lib/ansible/modules/cloud/google/gcp_sql_database_facts.py
parentf73539284bb6ae36cc6ad10a03de0c8d2e515d66 (diff)
downloadansible-e499718a5089829a9a08c91b270e6c9464ff1186.tar.gz
New GCP Module: gcp_sql_database_facts (#48269)
Diffstat (limited to 'lib/ansible/modules/cloud/google/gcp_sql_database_facts.py')
-rw-r--r--lib/ansible/modules/cloud/google/gcp_sql_database_facts.py162
1 files changed, 162 insertions, 0 deletions
diff --git a/lib/ansible/modules/cloud/google/gcp_sql_database_facts.py b/lib/ansible/modules/cloud/google/gcp_sql_database_facts.py
new file mode 100644
index 0000000000..bebaf9cd73
--- /dev/null
+++ b/lib/ansible/modules/cloud/google/gcp_sql_database_facts.py
@@ -0,0 +1,162 @@
+#!/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_sql_database_facts
+description:
+- Gather facts for GCP Database
+short_description: Gather facts for GCP Database
+version_added: 2.8
+author: Google Inc. (@googlecloudplatform)
+requirements:
+- python >= 2.6
+- requests >= 2.18.4
+- google-auth >= 1.3.0
+options:
+ instance:
+ description:
+ - The name of the Cloud SQL instance. This does not include the project ID.
+ - 'This field represents a link to a Instance resource in GCP. It can be specified
+ in two ways. You can add `register: name-of-resource` to a gcp_sql_instance
+ task and then set this instance field to "{{ name-of-resource }}" Alternatively,
+ you can set this instance to a dictionary with the name key where the value
+ is the name of your Instance'
+ required: true
+extends_documentation_fragment: gcp
+'''
+
+EXAMPLES = '''
+- name: a database facts
+ gcp_sql_database_facts:
+ instance: "{{ instance }}"
+ project: test_project
+ auth_kind: serviceaccount
+ service_account_file: "/tmp/auth.pem"
+'''
+
+RETURN = '''
+items:
+ description: List of items
+ returned: always
+ type: complex
+ contains:
+ charset:
+ description:
+ - The MySQL charset value.
+ returned: success
+ type: str
+ collation:
+ description:
+ - The MySQL collation value.
+ returned: success
+ type: str
+ name:
+ description:
+ - The name of the database in the Cloud SQL instance.
+ - This does not include the project ID or instance name.
+ returned: success
+ type: str
+ instance:
+ description:
+ - The name of the Cloud SQL instance. This does not include the project ID.
+ returned: success
+ type: dict
+'''
+
+################################################################################
+# Imports
+################################################################################
+from ansible.module_utils.gcp_utils import navigate_hash, GcpSession, GcpModule, GcpRequest, replace_resource_dict
+import json
+
+################################################################################
+# Main
+################################################################################
+
+
+def main():
+ module = GcpModule(
+ argument_spec=dict(
+ instance=dict(required=True, type='dict')
+ )
+ )
+
+ if not module.params['scopes']:
+ module.params['scopes'] = ['https://www.googleapis.com/auth/sqlservice.admin']
+
+ items = fetch_list(module, collection(module))
+ if items.get('items'):
+ items = items.get('items')
+ else:
+ items = []
+ return_value = {
+ 'items': items
+ }
+ module.exit_json(**return_value)
+
+
+def collection(module):
+ res = {
+ 'project': module.params['project'],
+ 'instance': replace_resource_dict(module.params['instance'], 'name')
+ }
+ return "https://www.googleapis.com/sql/v1beta4/projects/{project}/instances/{instance}/databases".format(**res)
+
+
+def fetch_list(module, link):
+ auth = GcpSession(module, 'sql')
+ response = auth.get(link)
+ return return_if_object(module, response)
+
+
+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()