00000030 ˆ¾Â „ .�ŸÁÅÄ5‡a '¡Dg£@ã@sddlZddlZddlZddlmZmZmZddlmZddl m Z ddl m Z m Z m Z mZddlmZmZmZmZe e¡ZGdd„deƒZGd d „d ƒZGd d „d ƒZGd d„dƒZdd„ZGdd„dƒZGdd„dƒZGdd„dƒZGdd„dƒZ Gdd„de j!ƒZ"Gdd„deƒZ#dS)éN)Ú NoOptionErrorÚNoSectionErrorÚRawConfigParser)ÚStringIO)Útime)Ú persistenceÚsettingsÚ type_utilsÚutil)Ú CFG_ENV_NAMEÚ PER_ALWAYSÚ PER_INSTANCEÚPER_ONCEc@s eZdZdS)Ú LockFailureN©Ú__name__Ú __module__Ú __qualname__©rrú5/usr/lib/python3.9/site-packages/cloudinit/helpers.pyrsrc@s eZdZdS)Ú DummyLockNrrrrrrsrc@s4eZdZdd„Zejd dd„ƒZdd„Zdd „Zd S) ÚDummySemaphorescCsdS©Nr©ÚselfrrrÚ__init__!szDummySemaphores.__init__Fccs tƒVdSr)r)rÚ_nameÚ_freqZ_clear_on_failrrrÚlock$szDummySemaphores.lockcCsdS©NFr©rrrrrrÚhas_run(szDummySemaphores.has_runcCsdS)NTrr rrrÚclear+szDummySemaphores.clearN)F) rrrrÚ contextlibÚcontextmanagerrr!r"rrrrr s  rc@seZdZdd„Zdd„ZdS)ÚFileLockcCs ||_dSr)Úfn)rr&rrrr0szFileLock.__init__cCsdt |¡|jfS)Nz<%s using file %r>)r Zobj_namer&rrrrÚ__str__3szFileLock.__str__N)rrrrr'rrrrr%/sr%cCs | dd¡S)Nú-Ú_)Úreplace)ÚnamerrrÚcanon_sem_name7sr,c@sDeZdZdd„Zejddd„ƒZdd„Zdd „Zd d „Z d d „Z dS)ÚFileSemaphorescCs ||_dSr)Úsem_path)rr.rrrr<szFileSemaphores.__init__FccsDt|ƒ}z| ||¡VWn$ty>|r8| ||¡‚Yn0dSr)r,Ú_acquireÚ Exceptionr")rr+ÚfreqÚ clear_on_failrrrr?s  zFileSemaphores.lockc CsNt|ƒ}| ||¡}zt |¡Wn&ttfyHt td|¡YdS0dS)NzFailed deleting semaphore %sFT)r,Ú _get_pathr Zdel_fileÚIOErrorÚOSErrorÚlogexcÚLOG)rr+r1Úsem_filerrrr"Is zFileSemaphores.clearc Csn| ||¡rdS| ||¡}dt ¡tƒf}zt ||¡Wn&ttfydt  t d|¡YdS0t |ƒS)Nz%s: %s z Failed writing semaphore file %s) r!r3ÚosÚgetpidrr Z write_filer4r5r6r7r%)rr+r1r8Úcontentsrrrr/Ss  zFileSemaphores._acquirecCs0|r |tkrdSt|ƒ}| ||¡}tj |¡Sr)r r,r3r9ÚpathÚexists)rr+r1Zcnamer8rrrr!cs   zFileSemaphores.has_runcCs:|j}|r|tkr tj ||¡Stj |d||f¡SdS)Nz%s.%s)r.r r9r<Újoin)rr+r1r.rrrr3ms zFileSemaphores._get_pathN)F) rrrrr#r$rr"r/r!r3rrrrr-;s   r-c@s&eZdZdd„Zdd„Zd dd„ZdS) ÚRunnerscCs||_i|_dSr)ÚpathsÚsems)rr@rrrrvszRunners.__init__cCsh|tks |sdSd}|tkr*|j d¡}n|tkr>|j d¡}|sFdS||jvr^t|ƒ|j|<|j|S)NÚsem)r r r@