o
    x[h‚  ã                   @   s€   d dl Z d dlmZmZmZmZ d dl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	d
„ Zdd„ ZdS )é    N)ÚdistrosÚhelpersÚsubpÚutil)ÚPackageList)ÚHostnameConf)ÚSysConf)ÚPER_INSTANCEc                   @   sž   e Zd ZdZdgZdZdZdZdZdZ	dd	d
dddœ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d„Zdefd d!„Zdd"œd#d$„ZdS )'ÚDistroz/etc/locale.confÚ	systemctlz/etc/sysconfig/networkz/etc/systemd/resolved.confz/etc/localtimez/var/lib/NetworkManagerzdhclient-[\w-]+\.leaseÚ	sysconfigzetc/sysconfig/networkz'%(base)s/network-scripts/ifcfg-%(name)sz'%(base)s/network-scripts/route-%(name)sz(%(base)s/network-scripts/route6-%(name)s)Úipv4Úipv6)ÚcontrolÚiface_templatesÚroute_templatesFc                 C   s6   t j | |||¡ t |¡| _d| _d| _d|d< d S )NÚaosczen_US.UTF-8ÚsshdÚssh_svcname)r   r
   Ú__init__r   ÚRunnersÚ_runnerÚosfamilyÚdefault_locale)ÚselfÚnameÚcfgÚpaths© r   ú8/usr/lib/python3/dist-packages/cloudinit/distros/aosc.pyr   (   s
   zDistro.__init__Nc                 C   s    |s| j }d|i}t||ƒ d S )NÚLANG)Úsystemd_locale_conf_fnÚupdate_locale_conf)r   ÚlocaleÚout_fnÚ
locale_cfgr   r   r   Úapply_locale/   s
   ÿzDistro.apply_localec                 C   s~   |  d¡rtdƒ}| |¡ t |t|ƒd¡ t | jdd¡}|r-t ddt|ƒg¡ d S t dddt|ƒg¡ t	 
d	¡ d S )
Nú/previous-hostnameÚ é¤  Úcreate_hostname_fileTÚhostnamectlzset-hostnamez--transientz7create_hostname_file is False; hostname set transiently)Úendswithr   Úset_hostnamer   Ú
write_fileÚstrÚget_cfg_option_boolÚ_cfgr   ÚLOGÚinfo)r   ÚhostnameÚfilenameÚconfr*   r   r   r   Ú_write_hostname7   s"   

ÿüÿzDistro._write_hostnamec                 C   s@   |  d¡rt |¡ ¡ S t dg¡\}}| ¡ }t|ƒr|S |S )Nr'   r4   )r,   r   Úload_text_fileÚstripr   Úlen)r   r5   ÚdefaultÚoutÚ_errr   r   r   Ú_read_hostnameL   s   
zDistro._read_hostnamec                 C   s   |   | j¡}| j|fS ©N)r>   Úhostname_conf_fn)r   Úsys_hostnamer   r   r   Ú_read_system_hostnameV   s   
zDistro._read_system_hostnamec                 C   s(   |   |¡}t | j¡ t || j¡ d S r?   )Ú_find_tz_filer   Údel_fileÚtz_local_fnÚsym_link)r   ÚtzÚtz_filer   r   r   Úset_timezoneZ   s   
zDistro.set_timezonec                 C   sF   |d u rg }dg}|r|  |¡ |  d¡ | |¡ tj|dd� d S )NÚomaz-yF)Úcapture)ÚappendÚextendr   )r   ÚcommandÚargsÚpkgsÚcmdr   r   r   Úpackage_command_   s   


zDistro.package_commandÚpkglistc                 C   s   | j d|d� d S )NÚinstall)rP   )rR   )r   rS   r   r   r   Úinstall_packagesk   s   zDistro.install_packages)Úforcec                C   s   | j jd| jdtd� d S )Nzupdate-sourcesÚrefresh)Úfreq)r   ÚrunrR   r	   )r   rV   r   r   r   Úupdate_package_sourcesn   s   
üzDistro.update_package_sourcesr?   )NN)Ú__name__Ú
__module__Ú__qualname__r!   Úinit_cmdÚnetwork_conf_dirÚresolve_conf_fnrE   Údhclient_lease_directoryÚdhclient_lease_file_regexÚrenderer_configsÚprefer_fqdnr   r&   r7   r>   rB   rI   rR   r   rU   rZ   r   r   r   r   r
      s4    þýÿ



r
   c                 C   s>   d}zt  | ¡ ¡ }d}W n ty   g }Y nw |t|ƒfS )NFT)r   r8   Ú
splitlinesÚIOErrorr   )Úsys_pathÚexistsÚcontentsr   r   r   Úread_locale_confw   s   ÿrj   c                 C   s”   |sd S t | ƒ\}}d}| ¡ D ]\}}|d u rqt|ƒ}|s q|||< |d7 }q|rHt|ƒg}|s:| dt ¡ ¡ t | d |¡d d¡ d S d S )Nr   é   Ú
r)   )rj   Úitemsr/   Úinsertr   Úmake_headerr.   Újoin)rg   r%   rh   ri   Ú
updated_amÚkÚvÚlinesr   r   r   r"   �   s&   
ÿúr"   )ÚloggingÚ	cloudinitr   r   r   r   Úcloudinit.distrosr   Ú"cloudinit.distros.parsers.hostnamer   Ú"cloudinit.distros.parsers.sys_confr   Úcloudinit.settingsr	   Ú	getLoggerr[   r2   r
   rj   r"   r   r   r   r   Ú<module>   s   
f
