o
    f                     @   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|}t|dkr$q|||< |d7 }q|rLt|g}|s>|dt  t| d|d d d S d S )Nr      
r)   )	rj   itemsr/   r:   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
