PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB`  #^c@sdZddlZddlZddlZddlmZddlmZmZm Z ddl m Z m Z m Z ejeZdejfdYZdefd YZd efd YZdS( s* Base classes for all backed-end plugins. iN(tplugable(t PublicErrort InternalErrort CommandError(tcontextt Connectiontdestroy_contexttBackendcBseZdZRS(s- Base class for all backend plugins. (t__name__t __module__t__doc__(((s2/usr/lib/python2.7/site-packages/ipalib/backend.pyR#st ConnectiblecBs\eZdZedZdZdZdZdZdZ dZ e e Z RS(s$ Base class for backend plugins that create connections. In addition to the nicety of providing a standard connection API, all backend plugins that create connections should use this base class so that `request.destroy_context()` can properly close all open connections. cCsKtj|||r%|j|_n"d|jtt|f|_dS(Ns%s_%s(Rt__init__tnametidtstr(tselftapitshared_instance((s2/usr/lib/python2.7/site-packages/ipalib/backend.pyR 2scOstt|jrBtdj|j|jtjjn|j ||}t t|jt ||j |j |ksttjd|jdS(s1 Create thread-local connection. s%{0} is already connected ({1} in {2})sCreated connection context.%sN(thasattrRRt ExceptiontformatR t threadingt currentThreadtgetNametcreate_connectiontsetattrRt disconnecttconntAssertionErrortloggertdebug(RtargstkwR((s2/usr/lib/python2.7/site-packages/ipalib/backend.pytconnect9scOstd|jdS(Ns%s.create_connection()(tNotImplementedErrorR(RR R!((s2/usr/lib/python2.7/site-packages/ipalib/backend.pyRJscCsstt|jsBtdj|j|jtjjn|j t t|jt j d|jdS(Ns!{0} is not connected ({1} in {2})sDestroyed connection context.%s( RRRRRR RRRtdestroy_connectiontdelattrRR(R((s2/usr/lib/python2.7/site-packages/ipalib/backend.pyRMs cCstd|jdS(Ns%s.destroy_connection()(R#R(R((s2/usr/lib/python2.7/site-packages/ipalib/backend.pyR$ZscCstt|jS(sY Return ``True`` if thread-local connection on `request.context` exists. (RRR(R((s2/usr/lib/python2.7/site-packages/ipalib/backend.pyt isconnected]scCsUtt|jsBtdj|j|jtjjnt t|jj S(s1 Return thread-local connection. s!{0} is not connected ({1} in {2})( RRRtAttributeErrorRR RRRtgetattrR(R((s2/usr/lib/python2.7/site-packages/ipalib/backend.pyt __get_conncs( RR R tFalseR R"RRR$R&t_Connectible__get_conntpropertyR(((s2/usr/lib/python2.7/site-packages/ipalib/backend.pyR )s      t ExecutionercBs)eZdddZdZdZRS(cCs|dk r|tjds   J