o
    ƒtÖhF	  ã                   @   sd   d dl Z d dlZd dlmZmZ d dlmZ d dlmZ d dl	m
Z
 e e¡ZG dd„ dejƒZdS )é    N)ÚPREFERRED_NTP_CLIENTSÚdebian)ÚSnap)Ú
activators)ÚCLOUDINIT_NETPLAN_FILEc                       s@   e Zd Z‡ fdd„Zd‡ fdd„	Zedd„ ƒZdd	d
„Z‡  ZS )ÚDistroc                    sd   t ƒ  |||¡ dtdœ| _| jd tjdœ| jd tjddœdœ| _t| jƒ| _	| j
 | j	¡ d S )Nz+/etc/network/interfaces.d/50-cloud-init.cfg)ÚeniÚnetplanr   )Úeni_pathÚ
eni_headerr	   T)Únetplan_pathÚnetplan_headerÚpostcmds)ÚsuperÚ__init__r   Únetwork_conf_fnr   ÚNETWORK_FILE_HEADERÚrenderer_configsr   Ú_runnerÚsnapÚpackage_managersÚappend)ÚselfÚnameÚcfgÚpaths©Ú	__class__© ú:/usr/lib/python3/dist-packages/cloudinit/distros/ubuntu.pyr      s   þþýûzDistro.__init__Nc                    s,   t ƒ  |||¡ | j ¡ r| j ¡  d S d S )N)r   Úpackage_commandr   Ú	availableÚupgrade_packages)r   ÚcommandÚargsÚpkgsr   r   r   r    -   s   
ÿzDistro.package_commandc                 C   s   | j s	t t¡| _ | j S )z5The preferred ntp client is dependent on the version.)Ú_preferred_ntp_clientsÚcopyÚdeepcopyr   )r   r   r   r   Úpreferred_ntp_clients2   s   zDistro.preferred_ntp_clientsÚreturnc              
   C   sb   z| j  ¡  W dS  tjy   t d¡ Y dS  ty0 } zt d|¡ W Y d}~dS d}~ww )zAEnsure that cloud-init's network service has network connectivityz6Failed to wait for network. No network activator foundzFailed to wait for network: %sN)Únetwork_activatorÚwait_for_networkr   ÚNoActivatorExceptionÚLOGÚerrorÚ	Exception)r   Úer   r   r   r,   9   s   €ÿzDistro.wait_for_network)NN)r*   N)	Ú__name__Ú
__module__Ú__qualname__r   r    Úpropertyr)   r,   Ú__classcell__r   r   r   r   r      s    
r   )r'   ÚloggingÚcloudinit.distrosr   r   Ú)cloudinit.distros.package_management.snapr   Úcloudinit.netr   Úcloudinit.net.netplanr   Ú	getLoggerr2   r.   r   r   r   r   r   Ú<module>   s   
