o ~_k@sXddlmZddlZddlZddlmZddlmZddlmZGdddej j Z dS))strN)log)util)BackendExceptionc@sHeZdZdZddZddZddZdd Zd d Zd d Z ddZ dS)CloudFilesBackendz, Backend for Rackspace's CloudFiles c CsBzddlm}ddlm}ddlm}ddlm}Wnty.}ztdt|d}~ww||_ i}dt j vr=tdd t j vrFtd t j d|d <t j d |d <d t j vrat j d |d<n|j |d<|j d}z |di|} Wn#ty}ztd|jjt|ftjjWYd}~nd}~ww| ||_dS)Nr) Connection) ResponseError)consts) NoSuchObjectzZCloudfiles backend requires the cloudfiles library available from Rackspace. Exception: %sCLOUDFILES_USERNAMEz0CLOUDFILES_USERNAME environment variablenot set.CLOUDFILES_APIKEYz/CLOUDFILES_APIKEY environment variable not set.usernameapi_keyCLOUDFILES_AUTHURLauthurl/z7Connection failed, please check your credentials: %s %s) cloudfilesrcloudfiles.errorsrr r ImportErrorrrresp_excosenvirondefault_authurlpathlstrip Exceptionr FatalError __class____name__ruexc ErrorCodeconnection_failedcreate_container container) self parsed_urlrrr r e conn_kwargsr$connrrC/usr/lib/python3/dist-packages/duplicity/backends/_cf_cloudfiles.py__init__"sD        zCloudFilesBackend.__init__cCs8t|tr tjjSt||jr|jdkrtjjSdSdS)Ni) isinstancer rr!backend_not_foundrstatus)r% operationr'rrr* _error_codeIs   zCloudFilesBackend._error_codecCs|j|}||jdSN)r$ create_objectload_from_filenamename)r% source_pathremote_filenamesobjectrrr*_putPs zCloudFilesBackend._putcCsV|j|}t|jd}|D]}||qWddS1s$wYdS)Nwb)r$r2openr4streamwrite)r%r6 local_pathr7fchunkrrr*_getTs   "zCloudFilesBackend._getcCsD|j}|}t|dkr |jj|dd}||7}t|dks |S)Ni')marker)r$ list_objectslen)r%objskeysrrr*_listZs   zCloudFilesBackend._listcCs|j|dSr1)r$ delete_object)r%filenamerrr*_deletedszCloudFilesBackend._deletecCs|j|}d|jiS)Nsize)r$ get_objectrK)r%rIr7rrr*_querygs  zCloudFilesBackend._queryN) r __module__ __qualname____doc__r+r0r8r@rGrJrMrrrr*rs' r) builtinsrrduplicity.backend duplicityrrduplicity.errorsrbackendBackendrrrrr*s