Edit File: dbengine.cpython-311.pyc
� ����L(�eQ)���������������������������d�dl�mZ�d�dl�mZ�d�dlZd�dlZd�dlmZmZ�d�dlm Z �d�dl mZ�d�dlm Z �d�dlmZmZ�d�d lmZ�d�d lmZ�d�dlmZmZ�d�dlmZ�d�d lmZ�dZd\��ZZZeeegZedediZ dZ!d��Z"d��Z#�G�d��de������������Z$�G�d��de������������Z%d)d�Z& � �d*d�Z'defd�Z(d��Z)d��Z*d+d �Z+d!��Z,d,d"�Z-d#��Z.d-d$�Z/d.d%�Z0d.d&�Z1d'��Z2d(��Z3dS�)/�����)�print_function)�absolute_importN)�delete�func)� Inspector)�make_url)� _ModuleMarker)�RelationshipProperty�sessionmaker)� mysql_lib)�FormattedException)�Base�history��LVE_STATS_2_TABLENAME_PREFIX)�alembic_migratez/var/lve/lvestats2.db)�mysql� postgresql�sqlite�pymysql�psycopg2�shamanc������������������������t����������j��������|�������������}t����������|�����������������������������������������������}d��|D���������������|z ��}t ����������d��t ����������|������������D���������������������������S�)z^ Checks if views exist. :param sqlalchemy.engine.base.Engine engine: :return: c������������������"�����h�|�]}t�����������|z����� S���r���)�.0�ns��� ��/builddir/build/BUILDROOT/lve-stats-4.2.1-1.el8.x86_64/opt/cloudlinux/venv/lib/python3.11/site-packages/lvestats/lib/dbengine.py� <setcomp>z4find_not_existing_tables_or_views.<locals>.<setcomp>+���s������B�B�B�q�0��2�B�B�B�����c��������������3����L���K����|�]}|����������������������t����������d�������������V���� dS�)��N)�replacer���)r����xs��� r���� <genexpr>z4find_not_existing_tables_or_views.<locals>.<genexpr>,���s1����������Z�Z�����7��<�<�Z�Z�Z�Z�Z�Zr ���)r����from_engine�set�get_view_names�tuple)�engine�names� inspector�existing�not_existings��� r����!find_not_existing_tables_or_viewsr/���#���sj��������%�f�-�-�I��9�+�+�-�-�.�.�H�B�B�E�B�B�B�X�M�L��Z�Z�e�L�FY�FY�Z�Z�Z�Z�Z�Zr ���c������������������������t����������t����������j��������j��������������������}�t ����������|������������������������������������������������S�)zc Used to call engine.create_all() without views that are described as Table() :return: )�dictr����metadata�tables�list�values�r3���s��� r���� get_list_of_tables_without_viewsr7���/���s,������ ��$�-�&� '� '�F��� � ��� � � r ���c�������������������������e�Zd�ZdS�)�MakeDbExceptionN��__name__� __module__�__qualname__r���r ���r���r9���r9���8�������������������Dr ���r9���c�������������������������e�Zd�ZdS�)�DatabaseConfigErrorNr:���r���r ���r���r@���r@���<���r>���r ���r@���Tc����������������������|�����������������������d������������}|�t����������dddid��������������|r6|t����������vr-t����������d|d���������������������t����������������������d�d��������������|�����������������������d ������������}|t����������k����r|�t����������ddd id��������������|t����������k����r't����������d z���|�����������������������dt ����������������������z���}n6t ����������|������������}d���������������������|||������������}t����������||������������}|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 config�config_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", ")� database_type�database_types�connect_stringz:///�sqlite_db_pathz {0}+{1}://{2}) �getr@����SUPPORTED_DATABASES�join�SQLITE�DEFAULT_DB_PATH�get_db_client_library_name�format� get_fixed_uri)�cfg� check_supportrB���rI����uri�client_librarys��� r����cfg_get_urirW���@���sK�������g�g�i� � �G���!�<�!�9��# ��# ������ ������(;�;�;�!�D��")�"(�+�+�.A�"B�"B����# ��# ������ ���W�W�-�.�.�N��&���^�3�!�<�!�#3��# ��# ������ ���&����v�o����(8�/� J� J�J���3�G�<�<���$�$�W�n�n�M�M���G�S�)�)���Jr ���Fc�����������������������t����������j��������d������������} �t����������|�|�������������}nO#�t����������$�rB}d}dt ����������|������������i} |���������������������|| z���������������t ����������|| d��������������d}~ww�xY�w|���������������������d|�d����������������������|d u�rd |�v�r|�d ���������}|r&d��} t����������j ��������� ��������������������|d| � ������������}n"t����������j ��������� ��������������������|||�������������}|S�)z� Create sqlalchemy database engine :param dict cfg: :param bool just_print: :param bool debug: :param pool_class: :param bool check_support: :return: �init_db_engine)rT���z2Unable to configure database connection. %(error)s�errorrD���NzConnecting to database: %srB���F�debugc������������������$�����t����������|��������������d�S��N)�print)�sql�multiparams�paramss��� r����dumpzmake_db_engine.<locals>.dump����s�������#�J�J�J�J�Jr ����mock)�strategy�executor)�echo� poolclass)�logging� getLoggerrW���r@����strrZ���r9����info� sqlalchemyr*���� create_engine)rS���� just_printr[���� pool_classrT����logrI����e�msgrF���rb���r*���s��� r����make_db_enginers���p���s*������� �,� -� -�C� �$�S� �F�F�F�����������B���C��F�F�#��� � �#��-� � � ���� �� ������ ����� ������H�H� )�3�y�>�:�:�:���~�~�'�S�.�.��G�����c� �� �� ��"�0�0��&�[_�0�`�`����"�0�0��e�Wa�0�b�b���Ms����(�� A4�=A/�/A4c����������� ������������t����������j��������d������������}|r-d|_��������|���������������������t����������j�����������������������������������ddt������������������������t������������������������d�}t ����������j��������|�������������}|�����������������������������������}t����������|j ��������� ����������������������������������������������D��]\��}}t����������|t����������������������r�|j ��������} |d������������������������������| �������������| |v�r�d��|���������������������| ������������D���������������} t!����������j��������|������������}|j��������D�]M}t����������|t&����������������������r�|j��������D�]-} | j��������| vr"|���������������������d|| j��������|��������������d|d<����.�N��|���������������������d || |��������������d|d <���|d������������������������������| ���������������|d ���������r|���������������������d�������������|d���������r|���������������������d �������������|S�)N�validate_databaseF)�table_error�column_error�missing_tables� orm_tablesry���c�����������������������g�|�] }|d������������S�)�namer���)r����cs��� r���� <listcomp>z%validate_database.<locals>.<listcomp>����s������V�V�V�!�A�f�I�V�V�Vr ���z?Model %s declares column %s which does not exist in database %sTrw���z>Model %s declares table %s which does not exist in database %srv���rx���zWYou 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.)rh���ri���� propagate� addHandler�NullHandlerr4���r���r&����get_table_names�_decl_class_registry�items� isinstancer ���� __tablename__�append�get_columnsrl����inspect�attrsr ����columns�key�critical)r*����hide_logging�baserp����result�database_inspection�real_tables�_�_class�table�real_columns�mapper�column_prop�columns��� r���ru���ru�������s%����� � �/� 0� 0�C���.��� ����w�*�,�,�-�-�-�"�E� $���d�f�f�>��>�F�#�/��7�7��%�5�5�7�7�K��$�3�9�9�;�;�<�<��3��3� ��6��f�m�,�,�� ���$���|��#�#�E�*�*�*��K���V�V�/B�/N�/N�u�/U�/U�V�V�V�L��'��/�/�F�%�|�� :�� :���k�+?�@�@�� :��"-�"5��:��:��!�:�\�9�9��L�L� a� &�� �F�<��<��<��6:�F�>�2��:� :�� �L�L�Y�[a�ch�jp�q�q�q�$(�F�=�!��#�$�+�+�E�2�2�2�2� �m���p����n�o�o�o� �n���e����c�d�d�d��Mr ���c������������������H�����t����������|�d�������������}|d���������|d���������k����S�)NT)r����rx���ry���)ru���)r*����inspect_results��� r����check_need_create_dbr��������s*������&�v�D�A�A�A�N��*�+�~�l�/K�K�Kr ���c�����������������������t�����������j�����������������������������|�t��������������������������������������t ����������|�d��������������d�S�)Nr6���T)�stamp)r���r2���� create_allr7���r����r*���s��� r���� create_dbr��������s=�������M���V�,L�,N�,N��O�O�O��F�$�'�'�'�'�'�'r ���c������������������l�����|st����������|�������������rt����������|��������������d�S�t����������|�|��������������d�S�)N)� lve_stats_cfg)r����r����r���)r*����create_missing_tablesrS���s��� r����setup_dbr��������sG��������3� 4�V� <� <��3��&��������c�2�2�2�2�2�2r ���c������������������D�����t�����������j�����������������������������|��������������d�S�r]���)r���r2����drop_allr����s��� r����drop_tablesr��������s�������M���6�"�"�"�"�"r ���c����������������������|�������������������������������������}|�����������������������������������} �t����������t����������j��������j�������������������������������������������������������D�]�\��}}|�t����������|������������}nWt����������|t����������t����������f������������rt����������||j ��������j��������|v�������������}nt����������||j ��������j��������|k����������������}|���������������������|���������������|� �����������������������������������d�S�#��|��������������������������������������xY�wr]���)�connect�beginr4���r���r2���r3���r����r���r����r)���r|���� server_id�execute�commit�rollback)r*���r�����conn_�transr�����table_object�delete_querys��� r���� clear_rowsr��������s��������N�N���E��K�K�M�M�E��#�D�M�$8�$>�$>�$@�$@�A�A�� (�� (�O�A�|�� �%�l�3�3����I��e�}�5�5�� [�%�l�L�N�4L�PY�4Y�Z�Z���%�l�L�N�4L�PY�4Y�Z�Z���M�M�,�'�'�'�'� ���������� ������ ���s����CC4��4Dc������������������B�����t����������|��������������t����������|��������������d�S�r]���)r����r����r����s��� r����recreate_dbr��������s$����������� �f�����r ���c������������������4����|�����������������������t����������j�����������������������������������������t����������j��������|k�������������������������������������t����������j�����������������������������������������t����������j��������t����������j ��������������������dk�������������������������������������t����������j ��������t����������j ��������������������dk����������������}|�#|���������������������t����������j��������|k����������������}|�#|���������������������t����������j��������|k����������������}d��|D���������������S�)Nr���c�����������������������g�|�] }|d������������S��r���r���)r����record_s��� r���r}���z(find_lost_keep_alive.<locals>.<listcomp>����s������5�5�5�7�G�A�J�5�5�5r ���)�queryr����created�filterr�����group_by�havingr����max�id�min)�sessionr����� from_timestmp�to_timestamp�lost_keepalives��� r����find_lost_keep_aliver��������s���������]�]�������f���Y�&�����h�������f�T�X�g�j� !� !�A� %�&�&�v�v�d�h�w�z�.B�.B�Q�.F�'G�'G� �����'�.�.�w��,�/N�O�O��� �'�.�.�w��-�/O�P�P��5�5�n�5�5�5�5r ���c����������������������t����������|�|||������������}|sd�S�d��t����������t����������j��������j�������������������������������������������������������D���������������}||t����������j��������j��������<���|D�]*}t����������di�|��}||_��������|�� ��������������������|��������������+|�� �����������������������������������|r*|���������������������dt����������|�������������d|���������������d�S�d�S�)Nc�����������������������i�|�]}|d���S�r����r���)r����cols��� r���� <dictcomp>z'fix_lost_keep_alive.<locals>.<dictcomp>��s������Q�Q�Q�3��Q�Q�Q�Qr ���z Was fixed z losted keep alive records: r���) r����r4���r���� __table__r�����keysr����r����r�����addr����rk����len) r����r����r����r�����log_�lost_keep_alive�v2_keepalive_row� timestamp�history_keepalives ��� r����fix_lost_keep_aliver��������s�������*�7�I�}�l�[�[�O������Q�Q�$�w�/@�/H�/M�/M�/O�/O�*P�*P�Q�Q�Q��.7��W�&�*�+�$��'��'� �#�7�7�&6�7�7��$-��!����%�&�&�&�&��N�N������j�� � � �#�o�BV�BV�BV�BV�Xg�Xg�h�i�i�i�i�i�j��jr ���c������������������������t����������|����������������������������}t����������||d���������|||��������������|������������������������������������d�S�)N)�bindr����)r����r����r����)r���r�����close)r*���rS���r����r����r����r����s��� r����fix_dbr������sW������'�l��'�'�'�)�)�G����[�!1�&3�,�UY�[��[��[��[��M�M�O�O�O�O�Or ���c������������������f�����t��������������������������������|�������������}|�t����������dd|�id��������������|S�)zZ Get database Python client library name :param str db_type: :return str: NzTThe client library to connect to the "%(database_type)s" database cannot be detectedrG���rD���)�DB_CLIENT_LIBRARY_MAPrK���r@���)rB���rV���s��� r���rP���rP�����sR�������+�.�.�w�7�7�N���!�5�� ���# ��# ������ ���r ���c������������������|�����|�t�����������k����r|S�t����������|������������}t����������t����������j��������|������������������������S�)zo Get fixed URI for the specified database :param str db_type: :param str uri: :return str: )�MYSQLr���rj���r����get_rfc1738_db_uri)rB���rU����us��� r���rR���rR���(��s8��������%���� ��� � �A��y�+�A�.�.�/�/�/r ���)T)FFNT)FNr]���)NN)NNN)4� __future__r���r���rh����sqlalchemy.enginerl���r���r����sqlalchemy.engine.reflectionr����sqlalchemy.engine.urlr����&sqlalchemy.ext.declarative.clsregistryr ����sqlalchemy.ormr ���r����clcommonr����clcommon.clexceptionr ����lvestats.ormr���r���r����lvestats.utils.dbmigratorr���rO���r����� POSTGRESQLrN���rL���r����� __author__r/���r7���r9���r@���rW���rs���ru���r����r����r����r����r����r����r����r����r����rP���rR���r���r ���r����<module>r�������s������&��%��%��%��%��%��&��&��&��&��&��&���������������#��#��#��#��#��#��#��#��2��2��2��2��2��2��*��*��*��*��*��*��@��@��@��@��@��@��=��=��=��=��=��=��=��=��������������3��3��3��3��3��3��&��&��&��&��&��&��&��&��5��5��5��5��5��5��5��5��5��5��5��5�)��;����z�6��j�&�1��� �9�� ���� �� � [�� [�� [�!��!��!� �� �� �� �� �(�� �� �� � �� �� �� �� �,�� �� �� �-��-��-��-�`�CG�!%�$��$��$��$�N�,1�t��$��$��$��$�NL��L��L� (��(��(�3��3��3��3�#��#��#��������$����� 6��6��6��6�$j��j��j��j�"������������$0��0��0��0��0r ���