�
�Udac @` s; d d l m Z m Z m Z e Z d Z d d l Z d d l Z d d l Z d d l
m Z d d l m
Z
d d l m Z d d l m Z d d l m Z d d l m Z d d
l m Z y d d l Z Wn e k
r� e d � � n Xe � Z d e f d
� � YZ d e f d � � YZ d e f d � � YZ d S( i ( t absolute_importt divisiont print_functions=
cache: memcached
short_description: Use memcached DB for cache
description:
- This cache uses JSON formatted, per host records saved in memcached.
version_added: "1.9"
requirements:
- memcache (python lib)
options:
_uri:
description:
- List of connection information for the memcached DBs
default: ['127.0.0.1:11211']
type: list
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 for the cache plugin data
env:
- name: ANSIBLE_CACHE_PLUGIN_TIMEOUT
ini:
- key: fact_caching_timeout
section: defaults
type: integer
N( t Lock( t chain( t constants( t AnsibleError( t
MutableSet( t BaseCacheModule( t Displays9 python-memcached is required for the memcached fact cachet ProxyClientPoolc B` s_ e Z d Z d � Z d � Z d � Z d � Z d � Z d � Z d � Z d � Z
d � Z RS(
s�
Memcached connection pooling for thread/fork safety. Inspired by py-redis
connection pool.
Available connections are maintained in a deque and released in a FIFO manner.
c O` s5 | j d d � | _ | | _ | | _ | j � d S( Nt max_connectionsi ( t popR t connection_argst connection_kwargst reset( t selft argst kwargs( ( sC /usr/lib/python2.7/site-packages/ansible/plugins/cache/memcached.pyt __init__J s c C` sL t j � | _ d | _ t j d | j � | _ t � | _ t
� | _ d S( Ni t maxlen( t ost getpidt pidt _num_connectionst collectionst dequeR t _available_connectionst sett _locked_connectionsR t _lock( R ( ( sC /usr/lib/python2.7/site-packages/ansible/plugins/cache/memcached.pyR P s
c C` sY | j t j � k rU | j �2 | j t j � k r8 d S| j � | j � Wd QXn d S( N( R R R R t disconnect_allR ( R ( ( sC /usr/lib/python2.7/site-packages/ansible/plugins/cache/memcached.pyt _check_safeW s
c C` sQ | j � y | j j � } Wn t k
r<