U
    L¬÷dñ  ã                   @   sh   d dl mZmZ d dl mZ d dl mZmZmZ d dlm	Z
 d dlmZ e e¡ZG dd„ dejƒZdS )	é    )ÚdistrosÚhelpers)Úlog)ÚnetÚsubpÚutil)Ú	rhel_util)ÚPER_INSTANCEc                   @   s–   e Zd ZdZdZdZdZdeedœiZdZdd	„ Z	d!d
d„Z
dd„ Zd"dd„Zdd„ Zdd„ Zdd„ Zd#dd„Zdd„ Zdd„ Zd$dd„Zdd „ ZdS )%ÚDistroz/etc/hostnamez/etc/systemd/network/z/etc/locale.confz/etc/systemd/resolved.confZnetworkd)Zresolv_conf_fnÚnetwork_conf_dirTc                 C   s0   t j | |||¡ t |¡| _d| _dg| _d S )NZphotonÚ	systemctl)r   r
   Ú__init__r   ZRunnersÚ_runnerZosfamilyZinit_cmd)ÚselfÚnameZcfgÚpaths© r   ú:/usr/lib/python3/dist-packages/cloudinit/distros/photon.pyr   !   s    zDistro.__init__c                 C   st   t  d|¡ z<tj||d\}}|r>t  d||¡ d||fW S d||fW S  tjk
rn   t t d|¡ Y dS X d S )NzAttempting to run: %s)Úcapturez(Running %s resulted in stderr output: %sTFzCommand %s failed)TNN)ÚLOGÚdebugr   ÚwarningZProcessExecutionErrorr   Zlogexc)r   Úcmdr   ÚoutÚerrr   r   r   Úexec_cmd*   s      ÿzDistro.exec_cmdc                 C   s:   d}| j  |d¡}t d||¡ |s,t ¡ S t d¡ d S )NÚdisable_fallback_netcfgTz%s value is: %szJSkipping generate_fallback_config. Rely on PhotonOS default network config)Z_cfgÚgetr   r   r   Úgenerate_fallback_configÚinfo)r   Úkeyr   r   r   r   r   8   s    ÿzDistro.generate_fallback_configNc                 C   s6   |s
| j }d|i}t ||¡ dddg}|  |¡ d S )NZLANGr   Zrestartzsystemd-localed)Úsystemd_locale_conf_fnÚrhutilZupdate_sysconfig_filer   )r   ZlocaleZout_fnZ
locale_cfgr   r   r   r   Úapply_localeF   s     ÿ
zDistro.apply_localec                 C   s   | j d|d d S )NÚinstall)Úpkgs)Úpackage_command)r   Úpkglistr   r   r   Úinstall_packagesX   s    zDistro.install_packagesc                 C   sN   |r|  d¡rt ||¡ n.|  ddt|ƒg¡\}}}|rJt d||f¡ d S )Nú/previous-hostnameZhostnamectlzset-hostnamez3Error while setting hostname: %s
Given hostname: %s)Úendswithr   Z
write_filer   Ústrr   r   )r   ÚhostnameÚfilenameÚretÚ_outr   r   r   r   Ú_write_hostname\   s    ÿ
ýÿzDistro._write_hostnamec                 C   s   |   | j¡}| j|fS )N)Ú_read_hostnameÚsystemd_hostname_conf_fn)r   Zsys_hostnamer   r   r   Ú_read_system_hostnamel   s    zDistro._read_system_hostnamec                 C   s@   |r|  d¡rt |¡ ¡ S |  ddg¡\}}}|r<| ¡ S |S )Nr)   r,   z-f)r*   r   Z	load_fileÚstripr   )r   r-   ÚdefaultZ_retr   Z_errr   r   r   r1   p   s    zDistro._read_hostnamec                 C   s   dS )Nz	127.0.1.1r   ©r   r   r   r   Ú_get_localhost_ipw   s    zDistro._get_localhost_ipc                 C   s   t j||  |¡d d S )N)ÚtzZtz_file)r   Zset_etc_timezoneZ_find_tz_file)r   r8   r   r   r   Úset_timezonez   s    zDistro.set_timezonec           	      C   s†   |sg }ddg}|r*t |tƒr*| |¡ n|rBt |tƒrB| |¡ | |¡ t d|¡}| |¡ |  |¡\}}}|r‚t 	d|¡ d S )NZtdnfz-yz%s-%sz#Error while installing packages: %s)
Ú
isinstancer+   ÚappendÚlistÚextendr   Zexpand_package_listr   r   Úerror)	r   ZcommandÚargsr%   r   r'   r.   r/   r   r   r   r   r&   }   s    


zDistro.package_commandc                 C   s   | j jd| jdgtd d S )Nzupdate-sourcesZ	makecache)Zfreq)r   Úrunr&   r	   r6   r   r   r   Úupdate_package_sources   s    üzDistro.update_package_sources)T)N)N)NN)Ú__name__Ú
__module__Ú__qualname__r2   r   r!   Zresolve_conf_fnZrenderer_configsZprefer_fqdnr   r   r   r#   r(   r0   r3   r1   r7   r9   r&   rA   r   r   r   r   r
      s,   þÿ	



r
   N)Z	cloudinitr   r   r   Zloggingr   r   r   Zcloudinit.distrosr   r"   Zcloudinit.settingsr	   Z	getLoggerrB   r   r
   r   r   r   r   Ú<module>   s   
