o
    x[hn  ã                   @   sl   d dl Z d dlmZmZmZmZmZ d dlmZ d dlm	Z
 d dlmZmZ e  e¡ZG dd„ dejƒZdS )é    N)ÚdistrosÚhelpersÚnetÚsubpÚutil)ÚPackageList)Ú	rhel_util)Ú
PER_ALWAYSÚ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ef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!œd"d#„ZdS )'ÚDistroz/etc/hostnamez/etc/systemd/network/z/etc/locale.confz/etc/systemd/resolved.confÚnetworkd)Úresolv_conf_fnÚnetwork_conf_dirTc                 C   s0   t j | |||¡ t |¡| _d| _dg| _d S )NÚphotonÚ	systemctl)r   r   Ú__init__r   ÚRunnersÚ_runnerÚosfamilyÚinit_cmd)ÚselfÚnameÚcfgÚpaths© r   ú:/usr/lib/python3/dist-packages/cloudinit/distros/photon.pyr      s   zDistro.__init__c                 C   sn   t  d|¡ ztj||d�\}}|rt  d||¡ d||fW S d||fW S  tjy6   t t d|¡ Y dS w )NzAttempting to run: %s)Úcapturez(Running %s resulted in stderr output: %sTFzCommand %s failed)TNN)ÚLOGÚdebugr   ÚwarningÚProcessExecutionErrorr   Ú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)Ú_cfgÚgetr   r   r   Úgenerate_fallback_configÚinfo)r   Úkeyr&   r   r   r   r)   6   s   ÿzDistro.generate_fallback_configNc                 C   s4   |s| j }d|i}t ||¡ g d¢}|  |¡ d S )NÚLANG)r   Úrestartzsystemd-localed)Úsystemd_locale_conf_fnÚrhutilÚupdate_sysconfig_filer%   )r   ÚlocaleÚout_fnÚ
locale_cfgr"   r   r   r   Úapply_localeD   s   ÿzDistro.apply_localeÚpkglistc                 C   s   | j d|d� d S )NÚinstall)Úpkgs)Úpackage_command)r   r5   r   r   r   Úinstall_packagesV   s   zDistro.install_packagesc                 C   s”   |r|  d¡rt ||¡ d S d }t | jdd¡}|r)|  ddt|ƒg¡\}}}n|  dddt|ƒg¡\}}}t d¡ |rHt 	d||f¡ d S d S )	Nú/previous-hostnameÚcreate_hostname_fileTÚhostnamectlzset-hostnamez--transientz7create_hostname_file is False; hostname set transientlyz3Error while setting hostname: %s
Given hostname: %s)
Úendswithr   Ú
write_fileÚget_cfg_option_boolr'   r%   Ústrr   r*   r   )r   ÚhostnameÚfilenameÚretr;   Ú_outr$   r   r   r   Ú_write_hostnameZ   s8   ÿÿü
ÿÿýÿÿzDistro._write_hostnamec                 C   s   |   | j¡}| j|fS ©N)Ú_read_hostnameÚsystemd_hostname_conf_fn)r   Úsys_hostnamer   r   r   Ú_read_system_hostname{   s   
zDistro._read_system_hostnamec                 C   s@   |r|  d¡rt |¡ ¡ S |  ddg¡\}}}|r| ¡ S |S )Nr:   rA   z-f)r=   r   Úload_text_fileÚstripr%   )r   rB   ÚdefaultÚ_retr#   Ú_errr   r   r   rG      s   zDistro._read_hostnamec                 C   s   dS )Nz	127.0.1.1r   )r   r   r   r   Ú_get_localhost_ip†   s   zDistro._get_localhost_ipc                 C   s   t j||  |¡d� d S )N)ÚtzÚtz_file)r   Úset_etc_timezoneÚ_find_tz_file)r   rQ   r   r   r   Úset_timezone‰   s   zDistro.set_timezonec           	      C   sŠ   |sg }ddg}|rt |tƒr| |¡ n|r!t |tƒr!| |¡ | |¡ t d|¡}| |¡ |  |¡\}}}|rCt 	d|¡ d S d S )NÚtdnfz-yz%s-%sz#Error while installing packages: %s)
Ú
isinstancer@   ÚappendÚlistÚextendr   Úexpand_package_listr%   r   Úerror)	r   ÚcommandÚargsr7   r"   r5   rC   rD   r$   r   r   r   r8   Œ   s   


ÿzDistro.package_commandF)Úforcec                C   s$   | j jd| jdg|rtntd� d S )Nzupdate-sourcesÚ	makecache)Úfreq)r   Úrunr8   r	   r
   )r   r_   r   r   r   Úupdate_package_sourcesŸ   s   

üzDistro.update_package_sources)TrF   )NN)Ú__name__Ú
__module__Ú__qualname__rH   r   r.   Úresolve_conf_fnÚrenderer_configsÚprefer_fqdnr   r%   r)   r4   r   r9   rE   rJ   rG   rP   rU   r8   rc   r   r   r   r   r      s.    þÿ
	
!

r   )ÚloggingÚ	cloudinitr   r   r   r   r   Úcloudinit.distrosr   r   r/   Úcloudinit.settingsr	   r
   Ú	getLoggerrd   r   r   r   r   r   r   Ú<module>   s   
