diff options
Diffstat (limited to 'lib/ansible/modules/database/postgresql/postgresql_ping.py')
-rw-r--r-- | lib/ansible/modules/database/postgresql/postgresql_ping.py | 151 |
1 files changed, 0 insertions, 151 deletions
diff --git a/lib/ansible/modules/database/postgresql/postgresql_ping.py b/lib/ansible/modules/database/postgresql/postgresql_ping.py deleted file mode 100644 index cbd4d6e39f..0000000000 --- a/lib/ansible/modules/database/postgresql/postgresql_ping.py +++ /dev/null @@ -1,151 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- - -# Copyright: (c) 2018, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru> -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function -__metaclass__ = type - -ANSIBLE_METADATA = { - 'metadata_version': '1.1', - 'status': ['preview'], - 'supported_by': 'community' -} - -DOCUMENTATION = r''' ---- -module: postgresql_ping -short_description: Check remote PostgreSQL server availability -description: -- Simple module to check remote PostgreSQL server availability. -version_added: '2.8' -options: - db: - description: - - Name of a database to connect to. - type: str - aliases: - - login_db -seealso: -- module: postgresql_info -author: -- Andrew Klychkov (@Andersson007) -extends_documentation_fragment: postgres -''' - -EXAMPLES = r''' -# PostgreSQL ping dbsrv server from the shell: -# ansible dbsrv -m postgresql_ping - -# In the example below you need to generate certificates previously. -# See https://www.postgresql.org/docs/current/libpq-ssl.html for more information. -- name: PostgreSQL ping dbsrv server using not default credentials and ssl - postgresql_ping: - db: protected_db - login_host: dbsrv - login_user: secret - login_password: secret_pass - ca_cert: /root/root.crt - ssl_mode: verify-full -''' - -RETURN = r''' -is_available: - description: PostgreSQL server availability. - returned: always - type: bool - sample: true -server_version: - description: PostgreSQL server version. - returned: always - type: dict - sample: { major: 10, minor: 1 } -''' - -try: - from psycopg2.extras import DictCursor -except ImportError: - # psycopg2 is checked by connect_to_db() - # from ansible.module_utils.postgres - pass - -from ansible.module_utils.basic import AnsibleModule -from ansible.module_utils.postgres import ( - connect_to_db, - exec_sql, - get_conn_params, - postgres_common_argument_spec, -) - - -# =========================================== -# PostgreSQL module specific support methods. -# - - -class PgPing(object): - def __init__(self, module, cursor): - self.module = module - self.cursor = cursor - self.is_available = False - self.version = {} - - def do(self): - self.get_pg_version() - return (self.is_available, self.version) - - def get_pg_version(self): - query = "SELECT version()" - raw = exec_sql(self, query, add_to_executed=False)[0][0] - if raw: - self.is_available = True - raw = raw.split()[1].split('.') - self.version = dict( - major=int(raw[0]), - minor=int(raw[1]), - ) - - -# =========================================== -# Module execution. -# - - -def main(): - argument_spec = postgres_common_argument_spec() - argument_spec.update( - db=dict(type='str', aliases=['login_db']), - ) - module = AnsibleModule( - argument_spec=argument_spec, - supports_check_mode=True, - ) - - # Set some default values: - cursor = False - db_connection = False - result = dict( - changed=False, - is_available=False, - server_version=dict(), - ) - - conn_params = get_conn_params(module, module.params, warn_db_default=False) - db_connection = connect_to_db(module, conn_params, fail_on_conn=False) - - if db_connection is not None: - cursor = db_connection.cursor(cursor_factory=DictCursor) - - # Do job: - pg_ping = PgPing(module, cursor) - if cursor: - # If connection established: - result["is_available"], result["server_version"] = pg_ping.do() - db_connection.rollback() - - module.exit_json(**result) - - -if __name__ == '__main__': - main() |