U
    ӇgC                     @   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ZddgZdd Zdd	d
Ze	d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/etc/conf.d/hostnamezen_US.UTF-8zC.UTF8 UTF-8zen_US.UTF-8 UTF-8c                 C   sB   t j| ||| t|| _d| _d|d< t  r>t	d d S )NZgentooz/etc/init.d/sshdZssh_svcnamez/Cloud-init does not support systemd with gentoo)
r   r
   __init__r   ZRunners_runnerZosfamilyZuses_systemdLOGerror)selfnameZ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 )zrc-only - not compatible with systemd

        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ZcaptureZeselectZlocalesetN)r   
write_filelocale_gen_fnjoinlocalesr   default_locale)r   _Z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_packages8   s    zDistro.install_packagesc                 C   s~   d }z|  |}W n: tk
rL   t| jdd}|r8ntd Y d S Y nX |sZtd}|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   Zget_cfg_option_boolZ_cfgr   infor   Z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_hostnamehostname_conf_fn)r   Zsys_hostnamer   r   r   _read_system_hostnameV   s    zDistro._read_system_hostnamec                 C   s   t t| }|  |S r.   )r   r   Zload_text_fileparse)r+   r,   r   r   r   r&   Z   s    zDistro._read_hostname_confc                 C   s:   d }z|  |}|j}W n tk
r,   Y nX |s6|S |S r.   )r&   r*   r'   )r   r+   defaultr*   r,   r   r   r   r/   `   s    

zDistro._read_hostnamec                 C   s   t j|| |d d S )N)tzZtz_file)r   Zset_etc_timezoneZ_find_tz_file)r   r4   r   r   r   set_timezonek   s    zDistro.set_timezonec                 C   s   dg}| d |dkr(|ddg nb|d kr4g }|rNt|trN| | n|rft|trf|| |rt| | td|}|| tj|dd d S )	NZemergez--quietZupgradez--updateZworldz%s-%sFr   )appendextend
isinstancer)   listr   Zexpand_package_listr   )r   Zcommandargsr!   cmdr   r   r   r   r#   n   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)Zfreq)r   runr#   r   r	   )r   r<   r   r   r   r"      s    
zDistro.update_package_sources)N)N)NN)__name__
__module____qualname__r   r0   r   r   r   r   r   r$   r-   r1   staticmethodr&   r/   r5   r#   r"   r   r   r   r   r
      s   



r
   )ZloggingZ	cloudinitr   r   r   r   Zcloudinit.distrosr   Z"cloudinit.distros.parsers.hostnamer   Zcloudinit.settingsr   r	   Z	getLoggerr>   r   r
   r   r   r   r   <module>	   s   
