
    x[h~                         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                   t    e 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en_US.UTF-8zC.UTF8 UTF-8zen_US.UTF-8 UTF-8c                     t         j                  j                  | |||       t        j                         rd| _        nd| _        t        j                  |      | _        d| _        y )Nz/etc/hostnamez/etc/conf.d/hostnamegentoo)	r   r   __init__uses_systemdhostname_conf_fnr   Runners_runnerosfamily)selfnamecfgpathss       :/usr/lib/python3/dist-packages/cloudinit/distros/gentoo.pyr   zDistro.__init__   sO    dC7!$3D!$:D!
 u-     Nc                     t        j                  | j                  dj                  | j                        d       t        j
                  dgd       t        j
                  ddd	| j                  gd       y
)zLocales 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_packages9   s!    ##%Rg.r   c                    d }	 | j                  |      }|st        d      }t        j                         r|j                  |       n|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_cfgLOGinfor   r   r   set_hostnamer#   str)r   hostnamefilenameconfr3   s        r   _write_hostnamezDistro._write_hostname=   s    	 ++H5D #D! h'
 o89#d)U33  
	#'#;#;		14$  $N  
	s   A= =ACCc                 T    | j                  | j                        }| j                  |fS N)_read_hostnamer   )r   sys_hostnames     r   _read_system_hostnamezDistro._read_system_hostname^   s)    **4+@+@A$$l22r   c                 b    t        t        j                  |             }|j                          |S rA   )r   r   load_text_fileparse)r=   r>   s     r   r4   zDistro._read_hostname_confb   s%    D//9:

r   c                 l    d }	 | j                  |      }|j                  }|s|S |S # t        $ r Y w xY wrA   )r4   r<   r5   )r   r=   defaultr<   r>   s        r   rB   zDistro._read_hostnameh   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   rK   s     r   set_timezonezDistro.set_timezones   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argsr.   cmdr+   s         r   r0   zDistro.package_commandv   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   runr0   r	   r
   )r   r\   s     r   r/   zDistro.update_package_sources   s>      J$	 	 	
 +7	 	 	
r   rA   )NN)__name__
__module____qualname__r$   r'   r&   r   r*   r   r1   r?   rD   staticmethodr4   rB   rO   r0   r/    r   r   r   r      sh    %M"N 23G!
/ /4B3  
	H&2 /4 
r   r   )logging	cloudinitr   r   r   r   cloudinit.distrosr   "cloudinit.distros.parsers.hostnamer   cloudinit.settingsr	   r
   	getLoggerr`   r8   r   rd   r   r   <module>rk      s=     2 2 ) ; 7g!@
W^^ @
r   