
    x[h                         S SK r S SKrS SKrS SKJr  S SKJr  S SKJrJ	r	  S SK
Jr  S SKJr  \R                  " \5      r " S S5      rg)	    N)Optional)Distro)PathsRunners)events)
DataSourcec                       \ rS rSr SS\S\S\S\S\S\	\
R                     4S	 jjr\S
 5       rSS jrS rSS jrS r\S 5       rS rS rSS jrS rSS jrSS jrSS jrSrg)Cloud   N
datasourcepathscfgdistrorunnersreporterc                 ~    Xl         X l        X@l        X0l        XPl        Uc  [
        R                  " SSSS9nX`l        g )Nzunnamed-cloud-reporterF)namedescriptionreporting_enabled)r   r   r   _cfg_runnersr   ReportEventStackr   )selfr   r   r   r   r   r   s          1/usr/lib/python3/dist-packages/cloudinit/cloud.py__init__Cloud.__init__    sC     %
	..-4"'H
 !    c                 B    [         R                  " U R                  5      $ N)copydeepcopyr   r   s    r   r   	Cloud.cfg6   s     }}TYY''r   c                 <    U R                   R                  XX4U5      $ )a  Run a function gated by a named semaphore for a desired frequency.

The typical case for this method would be to limit running of the
provided func to a single well-defined frequency:
    PER_INSTANCE, PER_BOOT or PER_ONCE

The semaphore provides a gate that persists across cloud-init
boot stage boundaries so multiple modules can share this state
even if they happen to be run in different boot stages or across
reboots.
)r   run)r   r   functorargsfreqclear_on_fails         r   r%   	Cloud.run;   s     }}  MJJr   c                     U R                   R                  U-  n[        R                  R	                  U5      (       d5  [
        R                  S[        R                  R                  U5      U5        g U$ )Nz-No template found in %s for template named %s)r   template_tplospathisfileLOGwarningdirname)r   r   fns      r   get_template_filenameCloud.get_template_filenameI   sU    ZZ$$-ww~~b!!KK?#
 	r   c                 8    U R                   R                  U5      $ r   )r   get_userdata)r   apply_filters     r   r7   Cloud.get_userdataU   s    ++L99r   c                 6    U R                   R                  5       $ r   )r   get_instance_idr"   s    r   r;   Cloud.get_instance_idX   s    ..00r   c                 .    U R                   R                  $ r   )r   launch_indexr"   s    r   r>   Cloud.launch_index[   s    +++r   c                 6    U R                   R                  5       $ r   )r   get_public_ssh_keysr"   s    r   rA   Cloud.get_public_ssh_keys_   s    2244r   c                 6    U R                   R                  5       $ r   )r   
get_localer"   s    r   rD   Cloud.get_localeb   s    ))++r   c                 4    U R                   R                  XS9$ )N)fqdnmetadata_only)r   get_hostname)r   rG   rH   s      r   rI   Cloud.get_hostnamee   s!    ++ , 
 	
r   c                 8    U R                   R                  U5      $ r   )r   device_name_to_devicer   r   s     r   rL   Cloud.device_name_to_devicej   s    44T::r   c                 8    U R                   R                  U5      $ r   )r   get_ipath_currM   s     r   rP   Cloud.get_ipath_curm   s    zz''--r   c                 8    U R                   R                  U5      $ r   )r   	get_cpathrM   s     r   rS   Cloud.get_cpathp       zz##D))r   c                 8    U R                   R                  U5      $ r   )r   	get_ipathrM   s     r   rW   Cloud.get_ipaths   rU   r   )r   r   r   r   r   r   r   )NF)T)FF)__name__
__module____qualname____firstlineno__r   r   dictr   r   r   r   r   r   propertyr   r%   r4   r7   r;   r>   rA   rD   rI   rL   rP   rS   rW   __static_attributes__ r   r   r
   r
      s     7;!! ! 	!
 ! ! 6223!, ( (K	:1 , ,5,

;.**r   r
   )r    loggingr-   typingr   cloudinit.distrosr   cloudinit.helpersr   r   cloudinit.reportingr   cloudinit.sourcesr   	getLoggerrY   r0   r
   r`   r   r   <module>rh      s;      	  $ , & (!U* U*r   