
    }fC                         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 j                  e      Z G d dej                         Zy)    N)distroshelperssubputil)PackageList)HostnameConf)
PER_ALWAYSPER_INSTANCEc                   x    e Zd ZdZdZdZddgZd ZddZd	e	fd
Z
d Zd Zed        ZddZd ZddZdddZy)Distroz/etc/locale.genz/etc/conf.d/hostnamezen_US.UTF-8zC.UTF8 UTF-8zen_US.UTF-8 UTF-8c                     t         j                  j                  | |||       t        j                  |      | _        d| _        d|d<   t        j                         rt        j                  d       y y )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pathss       :/usr/lib/python3/dist-packages/cloudinit/distros/gentoo.pyr   zDistro.__init__   s[    dC7 u- /M!IIGH "    Nc                     t        j                  | j                  dj                  | j                        d       t        j
                  dgd       t        j
                  ddd	| j                  gd       y
)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_fns      r   apply_localezDistro.apply_locale(   s[     	**DIIdll,C#N 			<.%0 			%)<)<=u	
r   pkglistc                 J    | j                          | j                  d|       y )N )pkgs)update_package_sourcespackage_command)r   r-   s     r   install_packageszDistro.install_packages8   s!    ##%Rg.r   c                 B   d }	 | j                  |      }|st        d      }|j                  d|z         t        j                  |t        |      d       y # t        $ r> t        j                  | j                  dd      }|rnt
        j                  d       Y y Y w xY w)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confr5   s        r   _write_hostnamezDistro._write_hostname<   s    	 ++H5D #D
 	/H45#d)U3%  
	#'#;#;		14$  $N  
	s   A ABBc                 T    | j                  | j                        }| j                  |fS N)_read_hostnamehostname_conf_fn)r   sys_hostnames     r   _read_system_hostnamezDistro._read_system_hostnameV   s)    **4+@+@A$$l22r   c                 b    t        t        j                  |             }|j                          |S rB   )r   r   load_text_fileparse)r>   r?   s     r   r6   zDistro._read_hostname_confZ   s%    D//9:

r   c                 l    d }	 | j                  |      }|j                  }|s|S |S # t        $ r Y w xY wrB   )r6   r=   r7   )r   r>   defaultr=   r?   s        r   rC   zDistro._read_hostname`   sH    	++H5D}}H N	  		s   ' 	33c                 P    t        j                  || j                  |             y )N)tztz_file)r   set_etc_timezone_find_tz_file)r   rM   s     r   set_timezonezDistro.set_timezonek   s      B0B0B20FGr   c                    dg}|j                  d       |dk(  r|j                  ddg       n|g }|r"t        |t              r|j                  |       n#|r!t        |t              r|j                  |       |r|j                  |       t        j                  d|      }|j                  |       t        j                  |d       y )	Nemergez--quietupgradez--updateworldz%s-%sFr    )appendextend
isinstancer<   listr   expand_package_listr   )r   commandargsr0   cmdr-   s         r   r2   zDistro.package_commandn   s    j

9iJJ
G,-|
4-

4 *T40

4 

7#..w=GJJw 			#u%r   F)forcec                |    | j                   j                  d| j                  dg|rt               y t               y )Nzupdate-sourcesz--sync)freq)r   runr2   r	   r
   )r   r^   s     r   r1   zDistro.update_package_sources   s>      J$	 	 	
 +7	 	 	
r   rB   )NN)__name__
__module____qualname__r&   rD   r)   r(   r   r,   r   r3   r@   rF   staticmethodr6   rC   rQ   r2   r1    r   r   r   r      sn    %M-"N 23G
I
 / /443  
	H&2 /4 
r   r   )logging	cloudinitr   r   r   r   cloudinit.distrosr   "cloudinit.distros.parsers.hostnamer   cloudinit.settingsr	   r
   	getLoggerrb   r   r   rf   r   r   <module>rm      s=     2 2 ) ; 7g!z
W^^ z
r   