From ea1451aa8a81ff32eca855bbdfa74d466a59ea40 Mon Sep 17 00:00:00 2001 From: j3r3m067 Date: Thu, 15 Apr 2021 21:29:59 +0200 Subject: [PATCH] Update oracle_sql Usage of net_service_name (on tnsname) to initate the connection --- oracle_sql | 36 +++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/oracle_sql b/oracle_sql index 7b1a7d7..82ea80e 100755 --- a/oracle_sql +++ b/oracle_sql @@ -21,6 +21,12 @@ options: required: false default: None aliases: ['pw'] + net_service_name: + description: + - The NetServiceName to connect to the database (use the tnsname.ora) + required: false + default: None + aliases: ['pw'] service_name: description: - The service_name to connect to the database @@ -142,6 +148,7 @@ def main(): user=dict(required=False, aliases=['un', 'username']), password=dict(required=False, no_log=True, aliases=['pw']), mode=dict(default="normal", choices=["sysasm", "sysdba", "normal"]), + nsn=dict(required=False, aliases=['nsn']), service_name=dict(required=False, aliases=['sn']), hostname=dict(required=False, default='localhost', aliases=['host']), port=dict(required=False, default=1521), @@ -155,6 +162,7 @@ def main(): user = module.params["user"] password = module.params["password"] mode = module.params["mode"] + nsn = module.params["nsn"] service_name = module.params["service_name"] hostname = module.params["hostname"] port = module.params["port"] @@ -181,17 +189,27 @@ def main(): elif user and password: if mode == 'sysdba': - dsn = cx_Oracle.makedsn(host=hostname, port=port, service_name=service_name) - connect = dsn - conn = cx_Oracle.connect(user, password, dsn, mode=cx_Oracle.SYSDBA) + if not nsn : + dsn = cx_Oracle.makedsn(host=hostname, port=port, service_name=service_name) + connect = dsn + conn = cx_Oracle.connect(user, password, dsn, mode=cx_Oracle.SYSDBA) + else: + conn = cx_Oracle.connect(user, password, nsn, mode=cx_Oracle.SYSDBA) + elif mode == 'sysasm': - dsn = cx_Oracle.makedsn(host=hostname, port=port, service_name=service_name) - connect = dsn - conn = cx_Oracle.connect(user, password, dsn, mode=cx_Oracle.SYSASM) + if not nsn : + dsn = cx_Oracle.makedsn(host=hostname, port=port, service_name=service_name) + connect = dsn + conn = cx_Oracle.connect(user, password, dsn, mode=cx_Oracle.SYSASM) + else: + conn = cx_Oracle.connect(user, password, nsn, mode=cx_Oracle.SYSASM) else: - dsn = cx_Oracle.makedsn(host=hostname, port=port, service_name=service_name) - connect = dsn - conn = cx_Oracle.connect(user, password, dsn) + if not nsn : + dsn = cx_Oracle.makedsn(host=hostname, port=port, service_name=service_name) + connect = dsn + conn = cx_Oracle.connect(user, password, dsn) + else: + conn = cx_Oracle.connect(user, password, nsn) elif not user or not password: module.fail_json(msg='Missing username or password for cx_Oracle')