+
    i@                        ^ RI t ^ RIt^ RIt^ RIHtHtHt ^ RIHt ^ RI	H	t	 ^ RI
HtHtHtHt ^ RIHtHtHtHt ]P(                  ! ]4      t ! R R]4      t ! R	 R
4      t ! R R4      t ! R R4      tR t ! R R4      t ! R R4      t ! R R4      t ! R R4      t  ! R R]PB                  4      t" ! R R]4      t#R# )    N)NoOptionErrorNoSectionErrorRawConfigParser)StringIO)time)persistencesettings
type_utilsutil)CFG_ENV_NAME
PER_ALWAYSPER_INSTANCEPER_ONCEc                       ] tR t^tRtR# )LockFailure N__name__
__module____qualname____firstlineno____static_attributes__r       3/usr/lib/python3/dist-packages/cloudinit/helpers.pyr   r          r   r   c                       ] tR t^tRtR# )	DummyLockr   Nr   r   r   r   r   r      r   r   r   c                   Z   a  ] tR t^ t o R t]P                  RR l4       tR tR t	Rt
V tR# )DummySemaphoresc                    R # Nr   selfs   &r   __init__DummySemaphores.__init__!   s    r   c              #  &   "   \        4       x  R # 5ir!   )r   )r#   _name_freq_clear_on_fails   &&&&r   lockDummySemaphores.lock$   s     ks   c                    R # Fr   r#   r'   r(   s   &&&r   has_runDummySemaphores.has_run(   s    r   c                    R # )Tr   r.   s   &&&r   clearDummySemaphores.clear+   s    r   r   Nr-   )r   r   r   r   r$   
contextlibcontextmanagerr*   r/   r2   r   __classdictcell____classdict__s   @r   r   r       s3        r   r   c                   ,   a  ] tR t^/t o R tR tRtV tR# )FileLockc                    Wn         R # r!   fn)r#   r=   s   &&r   r$   FileLock.__init__0   s    r   c                T    R \         P                  ! V 4      : RV P                  : R2# )<z using file >)r
   obj_namer=   r"   s   &r   __str__FileLock.__str__3   s    '1':':4'@$''JJr   r<   N)r   r   r   r   r$   rC   r   r6   r7   s   @r   r:   r:   /   s     K Kr   r:   c                 &    V P                  R R4      # )-_)replace)names   &r   canon_sem_namerJ   7   s    <<S!!r   c                   f   a  ] tR t^;t o R t]P                  R	R l4       tR tR t	R t
R tRtV tR# )
FileSemaphoresc                    Wn         R # r!   sem_path)r#   rO   s   &&r   r$   FileSemaphores.__init__<   s     r   c              #     "   \        V4      p V P                  W4      x  R #   \         d    T'       d   T P                  Y4       h i ; i5ir!   )rJ   _acquire	Exceptionr2   )r#   rI   freqclear_on_fails   &&&&r   r*   FileSemaphores.lock?   sC     d#	--++ 	

4&	s   A$ AA
A

Ac                    \        V4      pV P                  W4      p \        P                  ! V4       R#   \        \
        3 d!    \        P                  ! \        R T4        R# i ; i)zFailed deleting semaphore %sFT)rJ   	_get_pathr   del_fileIOErrorOSErrorlogexcLOG)r#   rI   rT   sem_files   &&& r   r2   FileSemaphores.clearI   sZ    d#>>$-	MM(#  ! 	KK;XF	s   6 -A'&A'c                L   V P                  W4      '       d   R # V P                  W4      p\        P                  ! 4       : R\	        4       : R2p \
        P                  ! W44       \        T4      #   \        \        3 d!    \
        P                  ! \        RT4        R # i ; i)Nz: 
z Failed writing semaphore file %s)r/   rX   osgetpidr   r   
write_filerZ   r[   r\   r]   r:   )r#   rI   rT   r^   contentss   &&&  r   rR   FileSemaphores._acquireS   s~    <<## >>$-!#df5	OOH/ !! ! 	KK?J	s   A2 2-B#"B#c                    V'       d   V\         8X  d   R # \        V4      pV P                  W24      p\        P                  P                  V4      # r-   )r   rJ   rX   rb   pathexists)r#   rI   rT   cnamer^   s   &&&  r   r/   FileSemaphores.has_runc   s<    tz)t$>>%. ww~~h''r   c                    V P                   pV'       d   V\        8X  d    \        P                  P	                  W14      # \        P                  P	                  W1: R V: 24      # ).)rO   r   rb   rh   join)r#   rI   rT   rO   s   &&& r   rX   FileSemaphores._get_pathm   sB    ==t|+77<<//77<<T4*@AAr   rN   Nr-   )r   r   r   r   r$   r4   r5   r*   r2   rR   r/   rX   r   r6   r7   s   @r   rL   rL   ;   s?     !  " (B Br   rL   c                   6   a  ] tR t^ut o R tR tRR ltRtV tR# )Runnersc                     Wn         / V n        R # r!   pathssems)r#   rt   s   &&r   r$   Runners.__init__v   s    
	r   c                T   V\         8X  g	   V'       g   R # R pV\        8X  d   V P                  P                  R4      pM&V\        8X  d   V P                  P                  R4      pV'       g   R # W P                  9  d   \        V4      V P                  V&   V P                  V,          # )Nsem)r   r   rt   	get_ipathr   	get_cpathru   rL   )r#   rT   rO   s   && r   _get_semRunners._get_semz   s    :T< zz++E2HXzz++E2H99$"0":DIIhyy""r   Nc                   V P                  V4      pV'       g   \        4       pV'       g   . pVP                  W4      '       d   \        P	                  R W4       R# VP                  WV4      ;_uu_ 4       pV'       g   \        RV,          4      h\        P	                  RW4       \        V\        4      '       d
   V! R/ VB pMV! V!  pRV3uuRRR4       #   + '       g   i     R# ; i)z%s already ran (freq=%s)NzFailed to acquire lock for %szRunning %s using lock (%s)T)FNr   )	r{   r   r/   r]   debugr*   r   
isinstancedict)	r#   rI   functorargsrT   rU   rx   lkresultss	   &&&&&&   r   runRunners.run   s    mmD!!#CD;;t""II0$=  XXd-00B!"AD"HII		6AdT++%ooG%tnGg 1000s   7ACC,	rs   )NF)	r   r   r   r   r$   r{   r   r   r6   r7   s   @r   rq   rq   u   s     #&' 'r   rq   c                   ^   a  ] tR t^t o R
R ltR tR tR tV 3R lR lt]	R 4       t
R	tV tR# )ConfigMergerNc                P    Wn         W n        W0n        W@n        WPn        R V n        R # r!   )_paths_ds_fns	_base_cfg_include_vendor_cfg)r#   rt   
datasourceadditional_fnsbase_cfginclude_vendors   &&&&&&r   r$   ConfigMerger.__init__   s%     "	!-	r   c                6   . pV P                   '       dM    V P                   P                  4       pV'       d(   \        V\        4      '       d   VP	                  V4       V# V#   \
         d+    \        P                  ! \        R T P                   4        T# i ; i)z2Failed loading of datasource config object from %s)	r   get_config_objr   r   appendrS   r   r\   r]   )r#   d_cfgsds_cfgs   &  r   _get_datasource_configs$ConfigMerger._get_datasource_configs   s~    888	002j$88MM&) v  HHH
 s   !A# 'A# #1BBc                   . p\         \        P                  9   dD   \        P                  \         ,          p VP                  \        P
                  ! V4      4       V# V#   \         d!    \        P                  ! \        R T4        T# i ; i)z%Failed loading of env. config from %s)	r   rb   environr   r   	read_confrS   r\   r]   )r#   e_cfgse_fns   &  r   _get_env_configsConfigMerger._get_env_configs   sp    2::%::l+DPdnnT23 v  PC!H$OPs   %A! !'BBc                8   . pV P                   '       g   V# R .pV P                  '       d#   VP                  R4       VP                  R4       V Fu  pV P                   P                  V4      pV'       g   K(  \        P
                  P                  V4      '       g   KO   VP                  \        P                  ! V4      4       Kw  	  V#   \         d    \        P                  RT4        K  \         d!    \        P                  ! \        RT4        K  i ; i)cloud_configvendor2_cloud_configvendor_cloud_configz5Skipped loading cloud-config from %s due to non-root.z&Failed loading of cloud-config from %s)r   r   r   get_ipath_currb   rh   isfiler   r   PermissionErrorr]   r~   rS   r\   )r#   i_cfgscc_pathscc_pcc_fns   &    r   _get_instance_configs"ConfigMerger._get_instance_configs   s     {{{M"# OO23OO12DKK--d3Eu..MM$.."78	   ' II%
 ! KKEus    %C!D/D8DDc                    < V ^8  d   QhRS[ /# )   returnr   )formatr8   s   "r   __annotate__ConfigMerger.__annotate__   s     ( (4 (r   c                8   . pV P                   '       d:   V P                    F)  p VP                  \        P                  ! V4      4       K+  	  VP                  V P                  4       4       VP                  V P                  4       4       VP                  V P                  4       4       V P                  '       d   VP                  V P                  4       \        P                  ! V4      #   \         d!    \        P
                  ! \        R T4        K  i ; i)z'Failed loading of configuration from %s)r   r   r   r   rS   r\   r]   extendr   r   r   r   mergemanydict)r#   cfgsc_fns   &  r   	_read_cfgConfigMerger._read_cfg   s     999		KKt 45 " 	D))+,D..01D0023>>>KK'!!$'' ! KKFs   %C..'DDc                `    V P                   f   V P                  4       V n         V P                   # r!   )r   r   r"   s   &r   cfgConfigMerger.cfg  s&     99(DIyyr   )r   r   r   r   r   r   )NNNNT)r   r   r   r   r$   r   r   r   r   propertyr   r   r6   r7   s   @r   r   r      s8      @( (0  r   r   c                   N   a  ] tR tRt o R tR tR tR tRR ltR t	R t
R	tV tR
# )ContentHandlersi  c                "    / V n         . V n        R # r!   )
registeredinitializedr"   s   &r   r$   ContentHandlers.__init__  s    r   c                $    V P                  V4      # r!   )is_registered)r#   items   &&r   __contains__ContentHandlers.__contains__  s    !!$''r   c                $    V P                  V4      # r!   )_get_handler)r#   keys   &&r   __getitem__ContentHandlers.__getitem__  s      %%r   c                    WP                   9   # r!   r   r#   content_types   &&r   r   ContentHandlers.is_registered  s    ..r   c                f   \        4       pVP                  4        FH  pV'       d   VP                  V4       K  V P                  V4      '       d   K7  VP                  V4       KJ  	  V F  pWP                  V&   K  	  V'       d,   WP
                  9  d   V P
                  P                  V4       V# r!   )set
list_typesaddr   r   r   r   )r#   modr   	overwritetypests   &&&&  r   registerContentHandlers.register  s    !A		!))!,,IIaL " A!$OOA 3&6&66##C(r   c                (    V P                   V,          # r!   r   r   s   &&r   r   ContentHandlers._get_handler(  s    |,,r   c                H    \        V P                  P                  4       4      # r!   )listr   itemsr"   s   &r   r   ContentHandlers.items+  s    DOO))+,,r   )r   r   N)FT)r   r   r   r   r$   r   r   r   r   r   r   r   r6   r7   s   @r   r   r     s-     (&/-- -r   r   c                      a  ] tR tRt o ^tRV 3R lR lltV 3R lR ltRR ltRR ltRR	 lt	RR
 lt
RV 3R lR lltRR ltRtV tR# )Pathsi/  Nc                    < V ^8  d   QhRS[ /# )r   	path_cfgsr   )r   r8   s   "r   r   Paths.__annotate__2  s     3 3$ 3r   c                   Wn         VP                  R R4      V n        VP                  RR4      V n        VP                  R\        P
                  4      V n        \        P                  P                  V P                  R4      V n
        \        P                  P                  V P                  R4      V n        \        P                  P                  V P                  R4      V n        VP                  RR	4      p\        P                  P                  VR
4      V n        / RRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbR R!bR"R#bR$R%bR&R'bR(R)R*R+R,R-R.R/R0R1R2R2R3R3R4R4/CV n        W n        R5# )6	cloud_dirz/var/lib/clouddocs_dirz/usr/share/doc/cloud-init/run_dirinstancezboot-finishedseedtemplates_dirz/etc/cloud/templates/z%s.tmpl	boothooksr   zcloud-config.txtdatahandlersinstance_datainstance-data.jsoninstance_data_sensitiveinstance-data-sensitive.jsoncombined_cloud_configcombined-cloud-config.jsonnetwork_configznetwork-config.jsoninstance_idz.instance-idmanual_clean_markerzmanual-cleanobj_pklzobj.pklscriptsrx   userdatazuser-data.txt.iuserdata_rawzuser-data.txt
vendordatazvendor-data.txt.ivendordata2zvendor-data2.txt.ivendordata2_rawzvendor-data2.txtvendordata_rawzvendor-data.txtr   zvendor2-cloud-config.txtr   zvendor-cloud-config.txtvendor_scriptszscripts/vendorwarningshotplug.enabledz.skip-networkN)r   getr   r   r	   DEFAULT_RUN_DIRr   rb   rh   rn   instance_linkboot_finishedseed_dirtemplate_tpllookupsr   )r#   r   dstemplate_dirs   &&& r   r$   Paths.__init__2  s   	'mmK9IJ&]]4
 &MM)X5M5MN"$'',,t~~z"J"$'',,#
  WW\\$..&A%MM4
 "$lI!F

.
 F
 
	
 1
 &'E
 $%A
 3
 >
 ">
  y!
" y#
$ 5%
& )'
( O)
* -+
, /-
. 1/"$>!#<.
0_=
B r   c                $   < V ^8  d   QhRS[ RR/# )r   ci_pkl_versionr   N)int)r   r8   s   "r   r   r   g  s     @ @ @ @r   c                   \        V R4      '       g1   \        V P                  V P                  R7      P                  V n        RV P
                  9  d   RV P
                  R&   RV P
                  9  d   RV P
                  R&   RV P
                  9  d   RV P
                  R&   R	V P
                  9  d   R	V P
                  R	&   R
# R
# )z(Perform deserialization fixes for Paths.r   )r   r  r   r   r   r   r   r   r	  N)hasattrr   r   r   r   r  )r#   r  s   &&r   	_unpicklePaths._unpickleg  s    tY'' !))g L $,,.,@DLL)$DLL8. LL23 #$,,6, LL01 DLL0.?DLL*+ 1r   c                :    V P                  V P                  V4      # r!   )rX   r  r#   rI   s   &&r   r   Paths.get_ipath_cur  s    ~~d00$77r   c                :    V P                  V P                  V4      # r!   )rX   r   r  s   &&r   rz   Paths.get_cpath  s    ~~dnnd33r   c                   V P                   '       g   R # V P                   P                  4       pVf   R # \        V4      P                  \        P
                  R4      p\        P                  P                  V P                  RV4      pV P                  P                  V4      pV'       d    \        P                  P                  WE4      pV# )NrG   	instances)r   get_instance_idstrrH   rb   seprh   rn   r   r  r
  )r#   rI   iidpath_safe_iidipathadd_ons   &&    r   
_get_ipathPaths._get_ipath  s    oo--/;C((5T^^[-H!!$'GGLL/Er   c                f    V P                  V4      pV'       g   \        P                  R 4       R# V# )z?No per instance data available, is there an datasource/iid set?N)r)  r]   warning)r#   rI   r'  s   && r   ry   Paths.get_ipath  s.    %KK2 Lr   c                    < V ^8  d   QhRS[ /# )r   base)r#  )r   r8   s   "r   r   r     s     6 6c 6r   c                n    Vf   V# \         P                  P                  WP                  V,          4      # r!   )rb   rh   rn   r  )r#   r/  rI   s   &&&r   rX   Paths._get_path  s(    <Kww||D,,t"455r   c                :    V P                  V P                  V4      # r!   )rX   r   r  s   &&r   get_runpathPaths.get_runpath  s    ~~dllD11r   )
r  r   r   r   r   r  r  r   r  r  r!   )r   r   r   r   _ci_pkl_versionr$   r  r   rz   r)  ry   rX   r3  r   r6   r7   s   @r   r   r   /  sI     O3 3j@ @28
4
 	6 6
2 2r   r   c                   b   a  ] tR tRt o ^ tRtRtRtR tRR lt	R t
R tR	 tR
 tRR ltRtV tR# )DefaultingConfigParseri  g        FNc                    V P                   p \        P                  ! WV4      pV#   \         d     T# \         d     T# i ; ir!   )DEF_BASEr   r
  r   r   r#   sectionoptionvalues   &&& r   r
  DefaultingConfigParser.get  sV    	#''v>E
 	  	   		s   ' AAAAc                    V P                  V4      '       g'   VP                  4       R 8w  d   V P                  V4       \        P                  ! WW#4       R# )defaultN)has_sectionloweradd_sectionr   r   r:  s   &&&&r   r   DefaultingConfigParser.set  s>    ((W]]_	-IW%D69r   c                f    V P                  W4      '       d   \        P                  ! WV4       R # R # r!   )
has_optionr   remove_optionr#   r;  r<  s   &&&r   rG  $DefaultingConfigParser.remove_option  s&    ??7++))$@ ,r   c                v    V P                  W4      '       g   V P                  # \        P                  ! WV4      # r!   )rF  DEF_BOOLEANr   
getbooleanrH  s   &&&r   rL  !DefaultingConfigParser.getboolean  s0    w//###))$@@r   c                v    V P                  W4      '       g   V P                  # \        P                  ! WV4      # r!   )rF  	DEF_FLOATr   getfloatrH  s   &&&r   rP  DefaultingConfigParser.getfloat  s.    w//>>!''v>>r   c                v    V P                  W4      '       g   V P                  # \        P                  ! WV4      # r!   )rF  DEF_INTr   getintrH  s   &&&r   rT  DefaultingConfigParser.getint  s.    w//<<%%dV<<r   c                    R p\        4       pV P                  V4       VP                  4        VP                  4       pV'       d   RP	                  WR .4      pV# ) ra   )r   writeflushgetvaluern   )r#   headerre   outputstreams   &&  r   	stringify DefaultingConfigParser.stringify  sO    z

< ((*yy&B!78Hr   r   r!   )r   r   r   r   rS  rO  rK  r9  r
  r   rG  rL  rP  rT  r]  r   r6   r7   s   @r   r7  r7    sC     GIKH:
AA
?
=
 r   r7  )$r4   loggingrb   configparserr   r   r   ior   r   	cloudinitr   r	   r
   r   cloudinit.settingsr   r   r   r   	getLoggerr   r]   rS   r   r   r   r:   rJ   rL   rq   r   r   CloudInitPickleMixinr   r7  r   r   r   <module>rf     s      	 G G   = = O O!	) 		 	 K K"7B 7Bt*' *'Zg gT -  -F|2K,, |2R0_ 0r   