U
    Ӈg                     @   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edd d!Zdd"d#d$ZdS )(Distroz/etc/locale.confZ	systemctlz/etc/sysconfig/networkz/etc/systemd/resolved.confz/etc/localtimez/var/lib/NetworkManagerzdhclient-[\w-]+\.leaseZ	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)Zipv4Zipv6)ZcontrolZiface_templatesZroute_templatesFc                 C   s6   t j| ||| t|| _d| _d| _d|d< d S )NZaosczen_US.UTF-8ZsshdZssh_svcname)r   r
   __init__r   ZRunners_runnerZosfamilyZdefault_locale)selfnameZ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 )NZLANG)systemd_locale_conf_fnupdate_locale_conf)r   ZlocaleZ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}|rXtddt|g n tdddt|g t	
d	 d S )
N/previous-hostname   create_hostname_fileTZhostnamectlzset-hostnamez--transientz7create_hostname_file is False; hostname set transiently)endswithr   Zset_hostnamer   
write_filestrZget_cfg_option_boolZ_cfgr   LOGinfo)r   hostnamefilenameconfr   r   r   r   _write_hostname7   s&    

  zDistro._write_hostnamec                 C   sD   | drt| S tdg\}}| }t|r<|S |S d S )Nr   r   )r   r   load_text_filestripr   len)r   r    defaultoutZ_errr   r   r   _read_hostnameL   s    
zDistro._read_hostnamec                 C   s   |  | j}| j|fS N)r(   Zhostname_conf_fn)r   Zsys_hostnamer   r   r   _read_system_hostnameV   s    zDistro._read_system_hostnamec                 C   s(   |  |}t| j t|| j d S r)   )Z_find_tz_filer   Zdel_filetz_local_fnZsym_link)r   ZtzZtz_filer   r   r   set_timezoneZ   s    
zDistro.set_timezonec                 C   sF   |d krg }dg}|r | | | d || tj|dd d S )NZomaz-yF)Zcapture)appendextendr   )r   Zcommandargspkgscmdr   r   r   package_command_   s    


zDistro.package_command)pkglistc                 C   s   | j d|d d S )Ninstall)r0   )r2   )r   r3   r   r   r   install_packagesk   s    zDistro.install_packages)forcec                C   s   | j jd| jdtd d S )Nzupdate-sourcesZrefresh)Zfreq)r   runr2   r	   )r   r6   r   r   r   update_package_sourcesn   s    zDistro.update_package_sources)N)N)NN)__name__
__module____qualname__r   Zinit_cmdZnetwork_conf_dirZresolve_conf_fnr+   Zdhclient_lease_directoryZdhclient_lease_file_regexZrenderer_configsZprefer_fqdnr   r   r"   r(   r*   r,   r2   r   r5   r8   r   r   r   r   r
      s2   



r
   c                 C   s@   d}zt |  }d}W n tk
r2   g }Y nX |t|fS )NFT)r   r#   
splitlinesIOErrorr   )sys_pathexistscontentsr   r   r   read_locale_confw   s    
rA   c                 C   s   |sd S t | \}}d}| D ]8\}}|d kr2q t|}t|dkrHq |||< |d7 }q |rt|g}|s||dt  t| d|d d d S )Nr      
r   )	rA   itemsr   r%   insertr   Zmake_headerr   join)r>   r   r?   r@   Z
updated_amkvlinesr   r   r   r      s$    
r   )ZloggingZ	cloudinitr   r   r   r   Zcloudinit.distrosr   Z"cloudinit.distros.parsers.hostnamer   Z"cloudinit.distros.parsers.sys_confr   Zcloudinit.settingsr	   Z	getLoggerr9   r   r
   rA   r   r   r   r   r   <module>   s   
f
