o
    fC                     @   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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/etc/conf.d/hostnamezen_US.UTF-8zC.UTF8 UTF-8zen_US.UTF-8 UTF-8c                 C   sF   t j| ||| t|| _d| _d|d< t  r!t	d d S d S )Ngentooz/etc/init.d/sshdssh_svcnamez/Cloud-init does not support systemd with gentoo)
r   r
   __init__r   Runners_runnerosfamilyuses_systemdLOGerror)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 )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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_packages8   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}|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_cfgr   infor   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   sys_hostnamer   r   r   _read_system_hostnameV   s   
zDistro._read_system_hostnamec                 C   s   t t| }|  |S r;   )r   r   load_text_fileparse)r8   r9   r   r   r   r0   Z   s   zDistro._read_hostname_confc                 C   s8   d }z
|  |}|j}W n	 ty   Y nw |s|S |S r;   )r0   r7   r1   )r   r8   defaultr7   r9   r   r   r   r<   `   s   

zDistro._read_hostnamec                 C   s   t j|| |d d S )N)tztz_file)r   set_etc_timezone_find_tz_file)r   rC   r   r   r   set_timezonek   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
isinstancer6   listr   expand_package_listr   )r   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)freq)r   runr-   r   r	   )r   rS   r   r   r   r,      s   

zDistro.update_package_sourcesr;   )NN)__name__
__module____qualname__r"   r=   r%   r$   r   r(   r   r.   r:   r?   staticmethodr0   r<   rG   r-   r,   r   r   r   r   r
      s     



r
   )logging	cloudinitr   r   r   r   cloudinit.distrosr   "cloudinit.distros.parsers.hostnamer   cloudinit.settingsr   r	   	getLoggerrV   r   r
   r   r   r   r   <module>   s   
