File manager - Edit - /opt/saltstack/salt/lib/python3.10/site-packages/salt/queues/__pycache__/sqlite_queue.cpython-310.pyc
Back
o ;j7 � @ s� d Z ddlZddlZddlZddlZddlZddlZddlm Z e� e�ZdZ dd� Zdd� Zd d � Zdd� Zd d� Zdd� Zdd� Zdd� Zdd� Zdd� Zdd� Zdd� Zd!dd �ZdS )"a{ .. versionadded:: 2014.7.0 This is the default local master event queue built on sqlite. By default, an sqlite3 database file is created in the `sqlite_queue_dir` which is found at:: /var/cache/salt/master/queues It's possible to store the sqlite3 database files by setting `sqlite_queue_dir` to another location:: sqlite_queue_dir: /home/myuser/salt/master/queues � N)�SaltInvocationErrorZsqlitec C s t S )N)�__virtualname__� r r �L/opt/saltstack/salt/lib/python3.10/site-packages/salt/queues/sqlite_queue.py�__virtual__ s r c C sP t d }tj�|| � d��}t�d|� t�|�}t|�}| |vr&t || � |S )z% Return an sqlite connection �sqlite_queue_dirz.dbzConnecting to: %s) �__opts__�os�path�join�log�debug�sqlite3�connect�_list_tables� _create_table)�queue� queue_dirZdb�conZtablesr r r �_conn$ s r c C s` | �$ | � � }d}t�d|� |�|� |�� }dd� |D �W d � S 1 s)w Y d S )Nz3SELECT name FROM sqlite_master WHERE type = "table"� SQL Query: %sc S � g | ]}|d �qS �r r )�.0�xr r r � <listcomp>: � z _list_tables.<locals>.<listcomp>)�cursorr r �execute�fetchall)r �cur�cmd�resultr r r r 3 s $�r c C sT | � | � � }d|� d�}t�d|� |�|� W d � dS 1 s#w Y dS )Nz CREATE TABLE z*(id INTEGER PRIMARY KEY, name TEXT UNIQUE)r T)r r r r )r r r r! r r r r = s ��r c C sb t | �}|�! |�� }d| � �}t�d|� |�|� |�� }W d � |S 1 s*w Y |S )z6 Private function to list contents of a queue �SELECT name FROM r N)r r r r r r )r r r r! �contentsr r r �_list_itemsF s ��r% c C s2 t d } tj�| d�}t�|�}dd� |D �}|S )z< Return a list of sqlite databases in the queue_dir r z*.dbc S s$ g | ]}t j�t j�|��d �qS r )r r �splitext�basename�r �itemr r r r [ s $ z _list_queues.<locals>.<listcomp>)r r r r �glob)r �files�paths�queuesr r r �_list_queuesT s r. c C s t � } | S )z9 Return a list of Salt Queues on the Salt Master )r. )r- r r r �list_queues` s r/ c C s t | �}dd� |D �}|S )z" List contents of a queue c S r r r r( r r r r m r zlist_items.<locals>.<listcomp>)r% )r Z itemstuple�itemsr r r � list_itemsh s r1 c C s t | �}t|�S )z0 Provide the number of items in a queue )r% �len)r r0 r r r �list_lengthq s r3 c C s t �dt j�}|�d| �S )za Make sure single quotes are escaped properly in sqlite3 fashion. e.g.: ' becomes '' �'z'')�re�compile�M�sub)r) Zrex_sqlquoter r r � _quote_escapey s r9 c C s� t | �}|�� |�� }t|t�rJt|�}d| � d|� d�}t�d|� z|�|� W n tj yI } zd|� �W Y d}~W d � S d}~ww t|t �r�dd� |D �}d| � d �}t�d|� g }|D ]}|�|f� qfz|�||� W n tj y� } zd � |�W Y d}~W d � S d}~ww t|t�r�tjj�|��dd�}t|�}d| � d|� d�}t�d|� z|�|� W n' tj y� } zd|� �W Y d}~W d � S d}~ww W d � d S W d � d S 1 s�w Y d S )z) Add an item or items to a queue zINSERT INTO z(name) VALUES('z')r z1Item already exists in this queue. sqlite error: Nc S � g | ]}t |��qS r �r9 �r �elr r r r � r zinsert.<locals>.<listcomp>z(name) VALUES(?)z@One or more items already exists in this queue. sqlite error: {}�"r4 T)r r � isinstance�strr9 r r r r ZIntegrityError�list�append�executemany�format�dict�salt�utils�json�dumps�replace)r r0 r r r! �esc�newitemsr) r r r �insert� sd �� ��� �� � �"� �"�"rM c C s@ t | �}|�� |�� }t|t�r1t|�}d| � d|� d�}t�d|� |�|� W d � dS t|t�r\dd� |D �}d| � d �}t�d|� g }|D ]}|� |f� qM|� ||� t|t�r�tj j�|��d d�}t|�}d| � d|� d�}t�d|� |�|� W d � dS W d � dS 1 s�w Y dS )z. Delete an item or items from a queue �DELETE FROM z WHERE name = 'r4 r NTc S r: r r; r<