HEX
Server: Apache
System: Linux server2.voipitup.com.au 4.18.0-553.104.1.lve.el8.x86_64 #1 SMP Tue Feb 10 20:07:30 UTC 2026 x86_64
User: posscale (1027)
PHP: 8.2.29
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/__pycache__/oracle.cpython-310.pyc
o

�N�g^�@s�dZddlZddlZddlmZe�e�ZzddlZej	ej
d�ZdZWne
y4ddd�ZdZYnwd	Zd
d�Zdd
�Zdd�Zdd�Zeded�dd��Zdd�Zeded�dd��Zeded�dd��Zd dd�Zdd�ZdS)!a�
Oracle DataBase connection module

:maintainer: Vladimir Bormotov <bormotov@gmail.com>

:maturity: new

:depends: cx_Oracle

:platform: all

:configuration: module provide connections for multiple Oracle DB instances.

    **OS Environment**

    .. code-block:: yaml

        ORACLE_HOME: path to oracle product
        PATH: path to Oracle Client libs need to be in PATH

    **pillar**

    .. code-block:: yaml

        oracle:
          dbs:
            <db>:
              uri: connection credentials in format:
            user/password@host[:port]/sid[ servicename as {sysdba|sysoper}]
              optional keyword servicename will determine whether it is a sid or service_name
            <db>:
              uri: .....
�N)�depends)ZsysdbaZsysoperT��F�oraclecCstrtSdS)z1
    Load module only if cx_Oracle installed
    )FzDoracle execution module not loaded: python oracle library not found.)�
HAS_CX_ORACLE�__virtualname__�rr�G/opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/oracle.py�__virtual__6sr
cCsdS)z 
    Fallback function stub
    zDNeed "cx_Oracle" and Oracle Client installed for this function existrrrrr	�_cx_oracle_reqBsrcCs,|tjtjtjtjfvr|�t||j�SdS)z�
    Return strings values as python unicode string

    http://www.oracle.com/technetwork/articles/dsl/tuininga-cx-oracle-084866.html
    N)�	cx_Oracle�STRINGZLONG_STRINGZ
FIXED_CHARZCLOB�var�strZ	arraysize)�cursor�nameZdefault_type�sizeZ	precisionZscalerrr	�_unicode_outputIs��rc	Cs|�dd�}t|�dkr|\}}t|}n|d}d}d}|�d�\}}|�d�\}}|�d�\}	}
d|
vrAd	}|
�d�d��}
|	�d
�}t|�dkrQ|\}}
n|d}d}
t�d||||
|
|f�d
tjd<|ryt	�
||t	j||
|
d�|�}n
t	�
||t	�||
|
�|�}t|_
|S)zm
    uri = user/password@host[:port]/sid[ as {sysdba|sysoper}]

    Return cx_Oracle.Connection instance
    z as �rrF�@�/ZservicenameT�:i�zconnect: %sz	.AL32UTF8�NLS_LANG)Zservice_name)�rsplit�len�MODE�split�strip�log�debug�os�environr�connectZmakedsnrZoutputtypehandler)�uriZuri_lZcredentials�modeZ	serv_nameZuserpassZhostportsid�user�passwordZhostportZsidZ
hostport_l�host�port�connrrr	�_connectXs:



��r*r)Zfallback_functioncCs4t�d||�tt|�|d�}|���|���S)z�
    Run SQL query and return result

    CLI Example:

    .. code-block:: bash

        salt '*' oracle.run_query my_db "select * from my_table"
    zrun query on %s: %sr#)rrr*�show_dbsrZexecuteZfetchall)�db�queryr)rrr	�	run_query�sr.cGsV|rt�d|�i}|D]}tdd|�||<q|Stdd�}t�dt|��|S)z�
    Show databases configuration from pillar. Filter by `*args`

    CLI Example:

    .. code-block:: bash

        salt '*' oracle.show_dbs
        salt '*' oracle.show_dbs my_db
    zget dbs from pillar: %s�
pillar.getzoracle:dbs:�
oracle:dbszget all (%s) dbs from pillar)rr�__salt__r)�dbs�resultr,�
pillar_dbsrrr	r+�sr+cGsttdd�}dd�}i}|r%t�d|�|D]}||vr"||�||<q|St�dt|��|D]}||�||<q/|S)z�
    Server Version (select banner  from v$version)

    CLI Example:

    .. code-block:: bash

        salt '*' oracle.version
        salt '*' oracle.version my_db
    r/r0cSsdd�t|d�D�S)NcSsg|]}|d�qS)rr)�.0�rrrr	�
<listcomp>�s�z0version.<locals>.get_version.<locals>.<listcomp>z,select banner from v$version order by banner)r.)�xrrr	�get_version�s�zversion.<locals>.get_versionzget db versions for: %szget all (%s) dbs versions)r1rrr)r2r4r9r3r,rrr	�version�s��r:cCsd�dd�t��D��S)zs
    Oracle Client Version

    CLI Example:

    .. code-block:: bash

        salt '*' oracle.client_version
    �.css�|]}t|�VqdS�N)r)r5r8rrr	�	<genexpr>�s�z!client_version.<locals>.<genexpr>)�joinrZ
clientversionrrrr	�client_version�sr?cCs |r
tdd|�Stdd�S)z�
    Show Pillar segment oracle.* and subitem with notation "item:subitem"

    CLI Example:

    .. code-block:: bash

        salt '*' oracle.show_pillar
        salt '*' oracle.show_pillar dbs:my_db
    r/zoracle:r)r1)�itemrrr	�show_pillar�srAcCs2gd�}i}|D]}|tjvrtj|||<q|S)z�
    Show Environment used by Oracle Client

    CLI Example:

    .. code-block:: bash

        salt '*' oracle.show_env

    .. note::
        at first _connect() ``NLS_LANG`` will forced to '.AL32UTF8'
    )�PATHZORACLE_HOMEZ	TNS_ADMINr)r r!)Zenvsr3�envrrr	�show_env�s

�rDr<)�__doc__�loggingr Zsalt.utils.decoratorsr�	getLogger�__name__rrZSYSDBAZSYSOPERrr�ImportErrorrr
rrr*r.r+r:r?rArDrrrr	�<module>s6"

�
+