o
    x[h~  ã                   @   sh   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mZ e  e¡ZG dd„ dejƒZdS )é    N)ÚdistrosÚhelpersÚsubpÚutil)ÚPackageList)ÚHostnameConf)Ú
PER_ALWAYSÚPER_INSTANCEc                   @   s‚   e Zd ZdZdZddgZdd„ Zddd	„Zd
efdd„Z	dd„ Z
dd„ Zedd„ ƒZddd„Zdd„ Zddd„Zddœdd„ZdS )ÚDistroz/etc/locale.genzen_US.UTF-8zC.UTF8 UTF-8zen_US.UTF-8 UTF-8c                 C   s>   t j | |||¡ t  ¡ rd| _nd| _t |¡| _d| _d S )Nz/etc/hostnamez/etc/conf.d/hostnameÚgentoo)	r   r
   Ú__init__Úuses_systemdÚhostname_conf_fnr   ÚRunnersÚ_runnerÚosfamily)ÚselfÚnameÚcfgÚpaths© r   ú:/usr/lib/python3/dist-packages/cloudinit/distros/gentoo.pyr      s   
zDistro.__init__Nc                 C   sF   t j| jd | j¡dd� tjdgdd� tjddd	| jgdd� d
S )z…Locales need to be added to /etc/locale.gen and generated prior
        to selection. Default to en_US.UTF-8 for simplicity.
        Ú
i„  )Úmodez
locale-genF©ÚcaptureÚeselectÚlocaleÚsetN)r   Ú
write_fileÚlocale_gen_fnÚjoinÚlocalesr   Údefault_locale)r   Ú_Úout_fnr   r   r   Úapply_locale+   s
   
ÿzDistro.apply_localeÚpkglistc                 C   s   |   ¡  | jd|d� d S )NÚ )Úpkgs)Úupdate_package_sourcesÚpackage_command)r   r'   r   r   r   Úinstall_packages9   s   zDistro.install_packagesc                 C   s�   d }z|   |¡}W n ty%   t | jdd¡}|rnt d¡ Y d S Y nw |s,tdƒ}t 	¡ r6| 
|¡ n| 
d| ¡ t |t|ƒd¡ d S )NÚcreate_hostname_fileTz8create_hostname_file is False; hostname file not createdr(   zhostname="%s"i¤  )Ú_read_hostname_confÚIOErrorr   Úget_cfg_option_boolÚ_cfgÚLOGÚinfor   r   r   Úset_hostnamer   Ústr)r   ÚhostnameÚfilenameÚconfr-   r   r   r   Ú_write_hostname=   s*   ÿÿûûzDistro._write_hostnamec                 C   s   |   | j¡}| j|fS ©N)Ú_read_hostnamer   )r   Úsys_hostnamer   r   r   Ú_read_system_hostname^   s   
zDistro._read_system_hostnamec                 C   s   t t | ¡ƒ}| ¡  |S r:   )r   r   Úload_text_fileÚparse)r7   r8   r   r   r   r.   b   s   zDistro._read_hostname_confc                 C   s8   d }z
|   |¡}|j}W n	 ty   Y nw |s|S |S r:   )r.   r6   r/   )r   r7   Údefaultr6   r8   r   r   r   r;   h   s   

ÿzDistro._read_hostnamec                 C   s   t j||  |¡d� d S )N)ÚtzÚtz_file)r   Úset_etc_timezoneÚ_find_tz_file)r   rA   r   r   r   Úset_timezones   s   zDistro.set_timezonec                 C   sœ   dg}|  d¡ |dkr| ddg¡ n1|d u rg }|r't|tƒr'|  |¡ n|r3t|tƒr3| |¡ |r:|  |¡ t d|¡}| |¡ tj|dd� d S )	NÚemergez--quietÚupgradez--updateÚworldz%s-%sFr   )ÚappendÚextendÚ
isinstancer5   Úlistr   Úexpand_package_listr   )r   ÚcommandÚargsr)   Úcmdr'   r   r   r   r+   v   s   



zDistro.package_commandF)Úforcec                C   s$   | j jd| jdg|rtntd� d S )Nzupdate-sourcesz--sync)Úfreq)r   Úrunr+   r   r	   )r   rQ   r   r   r   r*   �   s   

üzDistro.update_package_sourcesr:   )NN)Ú__name__Ú
__module__Ú__qualname__r    r#   r"   r   r&   r   r,   r9   r=   Ústaticmethodr.   r;   rE   r+   r*   r   r   r   r   r
      s    
!


r
   )ÚloggingÚ	cloudinitr   r   r   r   Úcloudinit.distrosr   Ú"cloudinit.distros.parsers.hostnamer   Úcloudinit.settingsr   r	   Ú	getLoggerrT   r2   r
   r   r   r   r   Ú<module>   s   

