
    }f                         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m	Z	 d dl
mZ d dlmZ  ej                  e      Z G d d      Zy)	    N)Optional)Distro)PathsRunners)events)
DataSourcec                       e Zd Z	 ddedededededee	j                     fdZed	        Zdd
Zd ZddZd Zed        Zd Zd ZddZd ZddZddZddZy)CloudN
datasourcepathscfgdistrorunnersreporterc                     || _         || _        || _        || _        || _        |t        j                  ddd      }|| _        y )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__zCloud.__init__    sO     %
	..-4"'H
 !    c                 @    t        j                  | j                        S N)copydeepcopyr   r   s    r   r   z	Cloud.cfg6   s     }}TYY''r   c                 @    | j                   j                  |||||      S )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"   z	Cloud.run;   s!     }}  wdMJJr   c                     | j                   j                  |z  }t        j                  j	                  |      s5t
        j                  dt        j                  j                  |      |       y |S )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_filenamezCloud.get_template_filenameI   sR    ZZ$$-ww~~b!KK?#
 	r   c                 8    | j                   j                  |      S r   )r   get_userdata)r   apply_filters     r   r2   zCloud.get_userdataU   s    ++L99r   c                 6    | j                   j                         S r   )r   get_instance_idr    s    r   r5   zCloud.get_instance_idX   s    ..00r   c                 .    | j                   j                  S r   )r   launch_indexr    s    r   r7   zCloud.launch_index[   s    +++r   c                 6    | j                   j                         S r   )r   get_public_ssh_keysr    s    r   r9   zCloud.get_public_ssh_keys_   s    2244r   c                 6    | j                   j                         S r   )r   
get_localer    s    r   r;   zCloud.get_localeb   s    ))++r   c                 <    | j                   j                  ||      S )N)fqdnmetadata_only)r   get_hostname)r   r=   r>   s      r   r?   zCloud.get_hostnamee   s#    ++] , 
 	
r   c                 8    | j                   j                  |      S r   )r   device_name_to_devicer   r   s     r   rA   zCloud.device_name_to_devicej   s    44T::r   c                 8    | j                   j                  |      S r   )r   get_ipath_currB   s     r   rD   zCloud.get_ipath_curm   s    zz''--r   c                 8    | j                   j                  |      S r   )r   	get_cpathrB   s     r   rF   zCloud.get_cpathp       zz##D))r   c                 8    | j                   j                  |      S r   )r   	get_ipathrB   s     r   rI   zCloud.get_ipaths   rG   r   r   )NF)T)FF)__name__
__module____qualname__r   r   dictr   r   r   r   r   r   propertyr   r"   r0   r2   r5   r7   r9   r;   r?   rA   rD   rF   rI    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   	getLoggerrJ   r,   r
   rO   r   r   <module>rW      s=      	  $ , & (g!U* U*r   