
    x[h                         S SK r S SKrS SKJrJrJrJr  S SKJrJ	r	  S SK
Jr  S SKJrJr  \ R                  " \5      r " S S\R$                  5      rg)    N)distroshelperssubputil)PackageList	rhel_util)HostnameConf)
PER_ALWAYSPER_INSTANCEc                       \ rS rSrSrSrSrSrSrSr	Sr
SrS	rS
rSSSSSS.S.0rSrS rS\4S jrS rS#S jrS$S jrS rS rS#S jrS rS%S jrSS .S! jrS"rg)&Distro   z/etc/sysconfig/clockz/etc/sysconfig/i18nz/etc/locale.confz/etc/sysconfig/networkz/etc/hostnamez/etc/localtimez/usr/libexecz/var/lib/NetworkManagerzdhclient-[\w-]+\.lease	sysconfigzetc/sysconfig/networkz'%(base)s/network-scripts/ifcfg-%(name)sz'%(base)s/network-scripts/route-%(name)sz(%(base)s/network-scripts/route6-%(name)s)ipv4ipv6)controliface_templatesroute_templatesTc                     [         R                  R                  XX#5        [        R                  " U5      U l        SU l        SU l        S U l        SUS'   g )Nredhatzen_US.UTF-8sshdssh_svcname)	r   r   __init__r   Runners_runnerosfamilydefault_localesystem_locale)selfnamecfgpathss       8/usr/lib/python3/dist-packages/cloudinit/distros/rhel.pyr   Distro.__init__4   sI    C7 u- +!#M    pkglistc                 $    U R                  SUS9  g )Ninstall)pkgs)package_command)r   r&   s     r#   install_packagesDistro.install_packages?   s    YW5r%   c                     U R                   (       d  U R                  5       U l         U R                   (       a  U R                   $ U R                  $ )z8Return the default locale if set, else use system locale)r   _read_system_localer   )r   s    r#   
get_localeDistro.get_localeB   sD     !!!%!9!9!;D #'"4"4D	
:>:M:M	
r%   Nc                     U R                  5       (       a  U(       d  U R                  nOU(       d  U R                  nSU0n[        R                  " X#5        g )NLANG)uses_systemdsystemd_locale_conf_fnlocale_conf_fnr   update_sysconfig_file)r   localeout_fn
locale_cfgs       r#   apply_localeDistro.apply_localeN   sJ    44,,F

 	'';r%   c                    U R                  5       (       a  U R                  nOU R                  nU(       d  [        SU-  5      e[        R
                  R                  U5      (       a"  [        R                  " U5      u  p4X;   a  XA   $ gg)z.Read system default locale setting, if presentzInvalid path: %sN)	r3   r4   r5   
ValueErrorospathexistsr   read_sysconfig_file)r   keyname	locale_fn_existscontentss        r#   r.   Distro._read_system_localeZ   sx    33I++I/);<<77>>)$$"+"?"?	"JW"(( %r%   c                 >   U R                  5       (       aT  UR                  S5      (       a>  [        S5      nUR                  U5        [        R
                  " U[        U5      S5        g U R                  5       (       a  [        R                  " U R                  SS5      nU(       a#  [        R                  " SS[        U5      /5        g [        R                  " SSS[        U5      /5        [        R                  S	5        g S
U0n[        R                  " X%5        g )N/previous-hostname i  create_hostname_fileThostnamectlzset-hostnamez--transientz7create_hostname_file is False; hostname set transientlyHOSTNAME)r3   endswithr	   set_hostnamer   
write_filestrget_cfg_option_bool_cfgr   LOGinfor   r6   )r   hostnamefilenameconfrJ   host_cfgs         r#   _write_hostnameDistro._write_hostnamek   s     8#4#45I#J#J#Dh'OOHc$i7  #'#;#;		14$  $		=.#h-HI		%&%H	 M
 HH ++H?r%   c                     U R                  5       (       a  U R                  nOU R                  nXR                  U5      4$ N)r3   systemd_hostname_conf_fnhostname_conf_fn_read_hostname)r   host_fns     r#   _read_system_hostnameDistro._read_system_hostname   s;    33G++G,,W566r%   c                    U R                  5       (       a:  UR                  S5      (       a$  [        R                  " U5      R	                  5       $ U R                  5       (       a=  [
        R
                  " S/5      u  p4UR	                  5       n[        U5      (       a  U$ U$ [        R                  " U5      u  pVSU;   a  US   $ U$ )NrH   rU   rL   )	r3   rM   r   load_text_filestripr   lenr   rA   )r   rV   defaultout_errrD   rE   s          r#   r_   Distro._read_hostname   s    8#4#45I#J#J&&x06688  ))ZL1KS))+C3xx
"+"?"?"IWX%
++r%   c                 n   U R                  U5      nU R                  5       (       aA  [        R                  " U R                  5        [        R
                  " X R                  5        g S[        U5      0n[        R                  " U R                  U5        [        R                  " X R                  5        g )NZONE)_find_tz_filer3   r   del_filetz_local_fnsym_linkrP   r   r6   clock_conf_fncopy)r   tztz_file	clock_cfgs       r#   set_timezoneDistro.set_timezone   s    $$R( MM$**+MM'#3#34 BI ++D,>,>	JIIg//0r%   c                    Uc  / n[         R                  " S5      (       a  [        R                  S5        S/nO[        R                  S5        SS/nUR	                  S5        U(       a'  [        U[        5      (       a  UR	                  U5        O-U(       a&  [        U[        5      (       a  UR                  U5        UR	                  U5        [        R                  " SU5      nUR                  U5        [         R                   " USS	9  g )
Ndnfz Using DNF for package managementz Using YUM for package managementyumz-tz-yz%s-%sF)capture)r   whichrS   debugappend
isinstancerP   listextendr   expand_package_list)r   commandargsr)   cmdr&   s         r#   r*   Distro.package_command   s    <D::eII89'CII89 $-C 	

4JtS))JJtjt,,JJt

7**7D9

7 			#u%r%   F)forcec                t    U R                   R                  SU R                  S/U(       a  [        O[        S9  g )Nzupdate-sources	makecache)freq)r   runr*   r
   r   )r   r   s     r#   update_package_sourcesDistro.update_package_sources   s1      M$,	 	 	
r%   )r   r   r   r   r\   )r2   )NN)__name__
__module____qualname____firstlineno__rq   r5   r4   network_conf_fnr^   r]   ro   usr_lib_execdhclient_lease_directorydhclient_lease_file_regexrenderer_configsprefer_fqdnr   r   r+   r/   r:   r.   rY   ra   r_   rv   r*   r   __static_attributes__ r%   r#   r   r      s    *M*N/.O/."K!L
  9 9.HAB 
	 K	$6 6


<"@>7"1 &B /4 
 
r%   r   )loggingr>   	cloudinitr   r   r   r   cloudinit.distrosr   r   "cloudinit.distros.parsers.hostnamer	   cloudinit.settingsr
   r   	getLoggerr   rS   r   r   r%   r#   <module>r      s>     	 2 2 4 ; 7!D
W^^ D
r%   