Anons79 Mini Shell

Directory : /proc/self/root/lib/python2.7/site-packages/ansible/plugins/cache/
Upload File :
Current File : //proc/self/root/lib/python2.7/site-packages/ansible/plugins/cache/mongodb.pyo

�
�Udac@`s�ddlmZmZmZeZidd6dgd6dd6ZdZdd	lZdd
l	m
Z
ddlmZ
ddlmZdd
lmZddlmZydd	lZWnek
r�ed��nXe�Zdefd��YZd	S(i(tabsolute_importtdivisiontprint_functions1.1tmetadata_versiontpreviewtstatust	communitytsupported_bys�
    cache: mongodb
    short_description: Use MongoDB for caching
    description:
        - This cache uses per host records saved in MongoDB.
    version_added: "2.5"
    requirements:
      - pymongo>=3
    options:
      _uri:
        description:
          - MongoDB Connection String URI
        required: False
        env:
          - name: ANSIBLE_CACHE_PLUGIN_CONNECTION
        ini:
          - key: fact_caching_connection
            section: defaults
      _prefix:
        description: User defined prefix to use when creating the DB entries
        default: ansible_facts
        env:
          - name: ANSIBLE_CACHE_PLUGIN_PREFIX
        ini:
          - key: fact_caching_prefix
            section: defaults
      _timeout:
        default: 86400
        description: Expiration timeout in seconds for the cache plugin data
        env:
          - name: ANSIBLE_CACHE_PLUGIN_TIMEOUT
        ini:
          - key: fact_caching_timeout
            section: defaults
        type: integer
N(tcontextmanager(t	constants(tAnsibleError(tBaseCacheModule(tDisplays^The 'pymongo' python module is required for the mongodb fact cache, 'pip install pymongo>=3.0'tCacheModulecB`s�eZdZd�Zd�Zed��Zd�Zd�Zd�Z	d�Z
d�Zd	�Zd
�Z
d�Zd�Zd
�ZRS(s-
    A caching module backed by mongodb.
    cO`s�yYtt|�j||�|jd�|_t|jd��|_|jd�|_WnNtk
r�t	j
ddd�tj|_ttj
�|_tj|_nXi|_t|_dS(Nt_urit_timeoutt_prefixsTRather than importing CacheModules directly, use ansible.plugins.loader.cache_loadertversions2.12(tsuperR
t__init__t
get_optiont_connectiontintRRtKeyErrortdisplayt
deprecatedtCtCACHE_PLUGIN_CONNECTIONtCACHE_PLUGIN_TIMEOUTtCACHE_PLUGIN_PREFIXt_cachetFalset_managed_indexes(tselftargstkwargs((sA/usr/lib/python2.7/site-packages/ansible/plugins/cache/mongodb.pyRDs
	cC`s}|j}|rl|dkrly|jdddd|�Wqytjjk
rh|jd�|j|�SXn
|jd�dS(s�
        This function manages indexes on the mongo collection.
        We only do this once, at run time based on _managed_indexes,
        rather than per connection instantiation as that would be overkill
        itdatetnametttltexpireAfterSecondsN(Rtcreate_indextpymongoterrorstOperationFailuret
drop_indext_manage_indexes(R!t
collectionR((sA/usr/lib/python2.7/site-packages/ansible/plugins/cache/mongodb.pyR-Ts	
cc`s�tj|j�}y|j�}Wn!tjjk
rE|d}nX|d}|jsr|j|�t|_n|V|j	�dS(s
        This is a context manager for opening and closing mongo connections as needed. This exists as to not create a global
        connection, due to pymongo not being fork safe (http://api.mongodb.com/python/current/faq.html#is-pymongo-fork-safe)
        tansibletcacheN(
R)tMongoClientRtget_default_databaseR*tConfigurationErrorR R-tTruetclose(R!tmongotdbR.((sA/usr/lib/python2.7/site-packages/ansible/plugins/cache/mongodb.pyt_collectionis
	
cC`sd|j|fS(Ns%s%s(R(R!tkey((sA/usr/lib/python2.7/site-packages/ansible/plugins/cache/mongodb.pyt	_make_key�scC`sg||jkrW|j��&}|ji|j|�d6�}WdQX|d|j|<n|jj|�S(Nt_idtdata(RR8tfind_oneR:tget(R!R9R.tvalue((sA/usr/lib/python2.7/site-packages/ansible/plugins/cache/mongodb.pyR>�s
%c
C`sz||j|<|j��[}|ji|j|�d6ii|j|�d6|d6tjj�d6d6dt�WdQXdS(NR;R<R$s$settupsert(RR8t
update_oneR:tdatetimetutcnowR4(R!R9R?R.((sA/usr/lib/python2.7/site-packages/ansible/plugins/cache/mongodb.pytset�s
c
C`sG|j��5}g|jiitd6�D]}|d^q)SWdQXdS(NR;(R8tfindR4(R!R.tdoc((sA/usr/lib/python2.7/site-packages/ansible/plugins/cache/mongodb.pytkeys�sc	C`s<|j��*}t|ji|j|�d6��SWdQXdS(NR;(R8tbooltcountR:(R!R9R.((sA/usr/lib/python2.7/site-packages/ansible/plugins/cache/mongodb.pytcontains�scC`s@|j|=|j��$}|ji|j|�d6�WdQXdS(NR;(RR8t
delete_oneR:(R!R9R.((sA/usr/lib/python2.7/site-packages/ansible/plugins/cache/mongodb.pytdelete�s
cC`s&|j��}|ji�WdQXdS(N(R8tdelete_many(R!R.((sA/usr/lib/python2.7/site-packages/ansible/plugins/cache/mongodb.pytflush�scC`s6|j��$}td�|ji�D��SWdQXdS(Ncs`s#|]}|d|dfVqdS(R;R<N((t.0td((sA/usr/lib/python2.7/site-packages/ansible/plugins/cache/mongodb.pys	<genexpr>�s(R8tdictRE(R!R.((sA/usr/lib/python2.7/site-packages/ansible/plugins/cache/mongodb.pytcopy�scC`st�S(N(RQ(R!((sA/usr/lib/python2.7/site-packages/ansible/plugins/cache/mongodb.pyt__getstate__�scC`s|j�dS(N(R(R!R<((sA/usr/lib/python2.7/site-packages/ansible/plugins/cache/mongodb.pyt__setstate__�s(t__name__t
__module__t__doc__RR-RR8R:R>RDRGRJRLRNRRRSRT(((sA/usr/lib/python2.7/site-packages/ansible/plugins/cache/mongodb.pyR
@s											(t
__future__RRRttypet
__metaclass__tANSIBLE_METADATAt
DOCUMENTATIONRBt
contextlibRR/R	Rtansible.errorsR
tansible.plugins.cacheRtansible.utils.displayRR)tImportErrorRR
(((sA/usr/lib/python2.7/site-packages/ansible/plugins/cache/mongodb.pyt<module>s"


%
	

Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]