U
    Ó‡gF	  ã                   @   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                       sD   e Zd Z‡ fdd„Zd‡ fdd„	Zedd„ ƒZd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   )Zeni_pathZ
eni_headerr	   T)Znetplan_pathZnetplan_headerZpostcmds)ÚsuperÚ__init__r   Znetwork_conf_fnr   ZNETWORK_FILE_HEADERZrenderer_configsr   Z_runnerÚsnapZpackage_managersÚappend)ÚselfÚnameZcfgÚpaths©Ú	__class__© ú:/usr/lib/python3/dist-packages/cloudinit/distros/ubuntu.pyr      s    þþýûzDistro.__init__Nc                    s(   t ƒ  |||¡ | j ¡ r$| j ¡  d S )N)r
   Úpackage_commandr   Z	availableZupgrade_packages)r   ZcommandÚargsZ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.)Z_preferred_ntp_clientsÚcopyÚdeepcopyr   )r   r   r   r   Úpreferred_ntp_clients2   s    zDistro.preferred_ntp_clients)Úreturnc              
   C   s`   z| j  ¡  W nL tjk
r.   t d¡ Y n. tk
rZ } zt d|¡ W 5 d}~X Y nX dS )zAEnsure that cloud-init's network service has network connectivityz6Failed to wait for network. No network activator foundzFailed to wait for network: %sN)Znetwork_activatorÚwait_for_networkr   ZNoActivatorExceptionÚLOGÚerrorÚ	Exception)r   Úer   r   r   r   9   s    zDistro.wait_for_network)NN)	Ú__name__Ú
__module__Ú__qualname__r   r   Úpropertyr   r   Ú__classcell__r   r   r   r   r      s
   
r   )r   ZloggingZcloudinit.distrosr   r   Z)cloudinit.distros.package_management.snapr   Zcloudinit.netr   Zcloudinit.net.netplanr   Z	getLoggerr    r   r   r   r   r   r   Ú<module>   s   
