Ë
    x[hÖ  ã                   ó”   — 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   € ô �}‰}˜TŸY™YÓ'Ð'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°°d¸MÓ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   € Ø�Z‰Z×$Ñ$¨Ñ-ˆÜ�w‰w�~‰~˜bÔ!Ü�K‰KØ?Ü—‘—‘ Ó#Øôð
 Øˆ	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Ñ4°TÓ:Ð:r   c                 ó8   — | j                   j                  |«      S r   )r   Úget_ipath_currB   s     r   rD   zCloud.get_ipath_curm   s   € Ø�z‰z×'Ñ'¨Ó-Ð-r   c                 ó8   — | j                   j                  |«      S r   )r   Ú	get_cpathrB   s     r   rF   zCloud.get_cpathp   ó   € Ø�z‰z×#Ñ# 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   