HEX
Server: Apache
System: Linux pdx1-shared-a1-38 6.6.104-grsec-jammy+ #3 SMP Tue Sep 16 00:28:11 UTC 2025 x86_64
User: mmickelson (3396398)
PHP: 8.1.31
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/duplicity/backends/__pycache__/swiftbackend.cpython-310.pyc
o

��La)(�@srddlmZddlZddlZddlmZddlmZddlmZddlm	Z	Gdd�dej
j�Zej
�
d	e�dS)
�)�strN)�config)�log)�util)�BackendExceptionc@sHeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dS)�SwiftBackendz
    Backend for Swift
    c
Cs2tjj�||�zddlm}ddlm}ddlm}Wnt	y0}zt
dt|���d}~ww||_i}i}i}dt
jvrSdt
jvrSt
jd|d<t
jd|d	<n<d
t
jvr\t
d��dt
jvret
d
��dt
jvrnt
d��t
jd
|d<|d<t
jd|d<|d<t
jd|d<|d<dt
jv�r4t
jd|d<|d<t
jddk�r3dt
jvr�|�dt
jdi�dt
jvr�|�dt
jdi�dt
jvr�|�dt
jdi�dt
jvr�|�d t
jdi�d!t
jvr�|�d"t
jd!i�d#t
jv�r|�d$t
jd#i�d%t
jv�r|�d&t
jd%i�d't
jv�r#|�d(t
jd'i�d)t
jv�r3|�d*t
jd)i�nd+|d<d!t
jv�rEt
jd!|d"<d)t
jv�rU|�d*t
jd)i�|��D]}	||	|d,|	<�qY||d-<d.d/�|j�d0�D�}
|
�d�|_|
�r�d1d0�|
�|_nd2|_tj}d3}d}
zt�d4|�|d>i|��|_|j�|j�}
WnB|�y�}zt�d5|jjt|�f�WYd}~n'd}~wt�y�}zt� d5|jjt|�ftj!j"�WYd}~nd}~ww|
du�r3t�#d6|j�z|�rt$||gg�nd}|jj%|j|d7�WnFt�y2}zt� d8|jjt|�ftj!j"�WYd}~n(d}~ww|�rO|
|�&�|k�rOt� d9|j|
|�&�|f�nt�d:|
�zt�d;|�||d<�|_'|j'�(|j�}Wn#|�y�}zt� d5|jjt|�ftj!j"�WYd}~nd}~wwt�d=|�dS)?Nr)�SwiftService)�
Connection)�ClientExceptionzDSwift backend requires the python-swiftclient library.
Exception: %s�SWIFT_PREAUTHURL�SWIFT_PREAUTHTOKEN�
preauthurl�preauthtoken�SWIFT_USERNAMEz,SWIFT_USERNAME environment variable not set.�SWIFT_PASSWORDz,SWIFT_PASSWORD environment variable not set.�
SWIFT_AUTHURLz+SWIFT_AUTHURL environment variable not set.�os_username�user�os_password�key�os_auth_url�authurl�SWIFT_AUTHVERSION�auth_version�3�SWIFT_USER_DOMAIN_NAME�user_domain_name�SWIFT_USER_DOMAIN_ID�user_domain_id�SWIFT_PROJECT_DOMAIN_NAME�project_domain_name�SWIFT_PROJECT_DOMAIN_ID�project_domain_id�SWIFT_TENANTNAME�tenant_name�SWIFT_ENDPOINT_TYPE�
endpoint_type�SWIFT_USERID�user_id�SWIFT_TENANTID�	tenant_id�SWIFT_REGIONNAME�region_name�1�os_�
os_optionscSsg|]}|dkr|�qS)��)�.0�xr1r1�A/usr/lib/python3/dist-packages/duplicity/backends/swiftbackend.py�
<listcomp>psz)SwiftBackend.__init__.<locals>.<listcomp>�/z%s/r0zX-Storage-Policyz'Starting connection with arguments:'%s'zConnection failed: %s %szCreating container %s)�headersz Container creation failed: %s %sz>Container '%s' exists but its storage policy is '%s' not '%s'.zContainer already created: %szStarting  Swiftservice: '%s'��optionszContainer stats: %sr1))�	duplicity�backend�Backend�__init__�swiftclient.servicer�swiftclientr	r
�ImportErrorrr�resp_exc�os�environ�update�keys�path�split�pop�	container�join�prefixr�swift_storage_policyr�Debug�conn�head_container�	__class__�__name__�	Exception�
FatalError�	ErrorCode�connection_failed�Info�dict�
put_container�lower�svc�stat)�self�
parsed_urlrr	r
�e�conn_kwargsr/�svc_optionsr�	url_parts�policy�
policy_header�container_metadatar7�container_statr1r1r4r=#s����







�������
���������zSwiftBackend.__init__cCs&t||j�r|jdkrtjjSdSdS)Ni�)�
isinstancerA�http_statusrrT�backend_not_found)r\�	operationr^r1r1r4�_error_code�s

�zSwiftBackend._error_codec
Cs�t�|j�}tjdkrQddlm}t�|�}|j	tjkrQt
�d�|jj
|j|||jt�|�d�gdtjid�}dd�|D�}|D]}|d	sNt|d
��qBdS|jt�|�}	t
�d||	|jf�|jj|j|jt�|�t|d�d
�dS)Nr)�SwiftUploadObjectzUploading Dynamic Large Object)�object_name�segment_sizer8cSsg|]
}d|dvr|�qS)rI�actionr1�r2�ar1r1r4r5�sz%SwiftBackend._put.<locals>.<listcomp>�success�	tracebackz/Uploading '%s' to '%s' in remote container '%s'�rb)rI�obj�contents)r�fsdecode�namer�mp_segment_sizer>rkrBr[�st_sizerrMrZ�uploadrIrKrrN�
put_object�open)
r\�source_path�remote_filename�lprk�st�mp�uploadsrz�rpr1r1r4�_put�s2


���

�zSwiftBackend._putcCsj|jj|j|jt�|�dd�\}}t|jd��}|D]}|�|�qWd�dS1s.wYdS)Ni)�resp_chunk_size�wb)	rN�
get_objectrIrKrrvr|rw�write)r\r~�
local_pathr7�body�f�chunkr1r1r4�_get�s

��"�zSwiftBackend._getcs,�jj�jd�jd�\}}�fdd�|D�S)NT)�full_listingrFcs"g|]
}|dt�j�d��qS)rwN)�lenrK)r2�o�r\r1r4r5�s"z&SwiftBackend._list.<locals>.<listcomp>)rN�
get_containerrIrK)r\r7�objsr1r�r4�_list�szSwiftBackend._listcCs,dd�|j�|j|jt�|�g�D�}dS)NcS�g|]}|�qSr1r1ror1r1r4r5��z(SwiftBackend._delete.<locals>.<listcomp>)rZ�deleterIrKrrv)r\�filename�deletedr1r1r4�_delete�s,zSwiftBackend._deletecCs`dd�|j�|j|jt�|�g�D�d}dt|dd�i}t�dt�|�|df�|S)NcSr�r1r1ror1r1r4r5�r�z'SwiftBackend._query.<locals>.<listcomp>r�sizer7zcontent-lengthzObjectquery: '%s' has size %s.)	rZr[rIrKrrv�intrrM)r\r��sobject�sobjr1r1r4�_query�s,zSwiftBackend._queryN)rQ�
__module__�__qualname__�__doc__r=rjr�r�r�r�r�r1r1r1r4rsr�swift)�builtinsrrB�duplicity.backendr:rrr�duplicity.errorsrr;r<r�register_backendr1r1r1r4�<module>s<