File: //opt/saltstack/salt/lib/python3.10/site-packages/salt/fileserver/__pycache__/svnfs.cpython-310.pyc
o
�N�g2d � @ s� d Z ddlZddlZddlZddlZddlZddlZddlZddlmZ ddl Z
ddlZ
ddlZ
ddl
Z
ddlZ
ddlZ
ddlZ
ddlZ
ddlZ
ddlmZ ddlmZ ddlmZ dZdZzddlZd Ze�� ZW n eys Y nw e�e �Z!d
Z"dZ#dd
� Z$dd� Z%dd� Z&dd� Z'dd� Z(dd� Z)d3dd�Z*d3dd�Z+dd� Z,dd� Z-d4d d!�Z.d"d#� Z/d5d%d&�Z0d'd(� Z1d)d*� Z2d+d,� Z3d-d.� Z4d/d0� Z5d1d2� Z6dS )6a
Subversion Fileserver Backend
After enabling this backend, branches and tags in a remote subversion
repository are exposed to salt as different environments. To enable this
backend, add ``svnfs`` to the :conf_master:`fileserver_backend` option in the
Master config file.
.. code-block:: yaml
fileserver_backend:
- svnfs
.. note::
``svn`` also works here. Prior to the 2018.3.0 release, *only* ``svn``
would work.
This backend assumes a standard svn layout with directories for ``branches``,
``tags``, and ``trunk``, at the repository root.
:depends: - subversion
- pysvn
.. versionchanged:: 2014.7.0
The paths to the trunk, branches, and tags have been made configurable, via
the config options :conf_master:`svnfs_trunk`,
:conf_master:`svnfs_branches`, and :conf_master:`svnfs_tags`.
:conf_master:`svnfs_mountpoint` was also added. Finally, support for
per-remote configuration parameters was added. See the
:conf_master:`documentation <svnfs_remotes>` for more information.
� N)�datetime)�DEFAULT_HASH_TYPE��FileserverConfigError)�tagify)�
mountpoint�root�trunk�branches�tagsFT�svnfs)�svnc C s� t td vrdS tst�d� dS g } dD ]}tj�t| �r*| �d� |t| �� q| r>| D ]}t�|� q/t�d� dS t S )z.
Only load if subversion is available
Zfileserver_backendFzfSubversion fileserver backend is enabled in configuration but could not be loaded, is pysvn installed?)Zsvnfs_trunkZsvnfs_branchesZ
svnfs_tagszJMaster configuration parameter '{}' (value: {}) cannot be an absolute pathz-Subversion fileserver backed will be disabled)
�__virtualname__�__opts__�HAS_SVN�log�error�os�path�isabs�append�format)�errors�paramr � r �I/opt/saltstack/salt/lib/python3.10/site-packages/salt/fileserver/svnfs.py�__virtual__M s* ���
r c C sp z
t t�| d ��� �}W n% tjjttt fy2 } zt
�d| d | d |� W Y d}~dS d}~ww |d jS )z%
Returns revision ID of repo
�repozCError retrieving revision ID for svnfs remote %s (cachedir: %s): %s�urlN�revision)
�dict�CLIENT�info�items�pysvn�_pysvn�ClientError� TypeError�KeyError�AttributeErrorr r �number)r Z repo_info�excr r r �_revh s ���
r, c C s t d��)zB
Fatal fileserver configuration issue, raise an exception
z%Failed to load svn fileserver backendr r r r r � _failhardz s r- c C s t j�td d�} d}g }i }tD ]
}ttd|� � �||<