
    f                         d dl Z d dlZd dlmZmZmZmZ d dlmZm	Z	 d dl
mZ d dlmZ  e j                  e      Z G d dej"                        Zy)    N)distroshelperssubputil)PackageList	rhel_util)HostnameConf)PER_INSTANCEc                       e Zd ZdZdZdZdZdZdZdZ	dZ
dZd	Zd
ZdddddddiZdZd ZdefdZd Zd dZd!dZd Zd Zd dZd Zd"dZd Zy)#Distroz/etc/sysconfig/clockz/etc/sysconfig/i18nz/etc/locale.confz/etc/sysconfig/networkz/etc/hostnamez'/etc/sysconfig/network-scripts/ifcfg-%sz/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                     t         j                  j                  | |||       t        j                  |      | _        d| _        d| _        d | _        d|d<   y )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   zDistro.__init__5   sM    dC7 u- +!#M    pkglistc                 *    | j                  d|       y )Ninstall)pkgs)package_command)r   r#   s     r!   install_packageszDistro.install_packages@   s    YW5r"   c                     | j                   s| j                         | _         | j                   r| j                   S | j                  S )z8Return the default locale if set, else use system locale)r   _read_system_localer   r   s    r!   
get_localezDistro.get_localeC   sD     !!!%!9!9!;D #'"4"4D	
:>:M:M	
r"   Nc                     | j                         r|s| j                  }n|s| j                  }d|i}t        j                  ||       y )NLANG)uses_systemdsystemd_locale_conf_fnlocale_conf_fnr   update_sysconfig_file)r   localeout_fn
locale_cfgs       r!   apply_localezDistro.apply_localeO   sH    44,,F

 	''
;r"   c                     | j                         r| j                  }n| j                  }|st        d|z        t        j
                  j                  |      r"t        j                  |      \  }}||v r||   S yy)z.Read system default locale setting, if presentzInvalid path: %sN)	r/   r0   r1   
ValueErrorospathexistsr   read_sysconfig_file)r   keyname	locale_fn_existscontentss        r!   r*   zDistro._read_system_locale[   sx    33I++I/);<<77>>)$"+"?"?	"JWh("(( %r"   c                    | j                         rN|j                  d      r=t        d      }|j                  |       t	        j
                  |t        |      d       y | j                         r}t	        j                  | j                  dd      }|r"t        j                  ddt        |      g       y t        j                  dddt        |      g       t        j                  d	       y d
|i}t        j                  ||       y )N/previous-hostname i  create_hostname_fileThostnamectlzset-hostnamez--transientz7create_hostname_file is False; hostname set transientlyHOSTNAME)r/   endswithr	   set_hostnamer   
write_filestrget_cfg_option_bool_cfgr   LOGinfor   r2   )r   hostnamefilenameconfrD   host_cfgs         r!   _write_hostnamezDistro._write_hostnamel   s     8#4#45I#J#Dh'OOHc$i7 #'#;#;		14$  $		=.#h-HI		%&%H	 M
 HH ++Hh?r"   c                 z    | j                         r| j                  }n| j                  }|| j                  |      fS N)r/   systemd_hostname_conf_fnhostname_conf_fn_read_hostname)r   host_fns     r!   _read_system_hostnamezDistro._read_system_hostname   s:    33G++G,,W566r"   c                 `   | j                         r4|j                  d      r#t        j                  |      j	                         S | j                         r8t        j
                  dg      \  }}|j	                         }t        |      r|S |S t        j                  |      \  }}d|v r|d   S |S )NrB   rO   rF   )	r/   rG   r   load_text_filestripr   lenr   r<   )r   rP   defaultout_errr?   r@   s          r!   rX   zDistro._read_hostname   s    8#4#45I#J&&x06688 ))ZL1KS$))+C3x
"+"?"?"IWhX%
++r"   c                 `   | j                  |      }| j                         r@t        j                  | j                         t        j
                  || j                         y dt        |      i}t        j                  | j                  |       t        j                  || j                         y )NZONE)_find_tz_filer/   r   del_filetz_local_fnsym_linkrJ   r   r2   clock_conf_fncopy)r   tztz_file	clock_cfgs       r!   set_timezonezDistro.set_timezone   s    $$R( MM$**+MM'4#3#34 BI ++D,>,>	JIIgt//0r"   c                    |g }t        j                  d      rt        j                  d       dg}nt        j                  d       ddg}|j	                  d       |r"t        |t              r|j	                  |       n#|r!t        |t              r|j                  |       |j	                  |       t        j                  d|      }|j                  |       t        j                   |d	       y )
Ndnfz Using DNF for package managementz Using YUM for package managementyumz-tz-yz%s-%sF)capture)r   whichrM   debugappend
isinstancerJ   listextendr   expand_package_list)r   commandargsr&   cmdr#   s         r!   r'   z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"   c                 `    | j                   j                  d| j                  dgt               y )Nzupdate-sources	makecache)freq)r   runr'   r
   r+   s    r!   update_package_sourceszDistro.update_package_sources   s-      M	 	 	
r"   rU   )r.   )NN)__name__
__module____qualname__rh   r1   r0   network_conf_fnrW   rV   network_script_tplrf   usr_lib_execdhclient_lease_directorydhclient_lease_file_regexrenderer_configsprefer_fqdnr   r   r(   r,   r6   r*   rS   rZ   rX   rm   r'   r    r"   r!   r   r      s    *M*N/.O/.B"K!L
  9 9.HAB 
	 K	$6 6


<"@>7"1 &B
r"   r   )loggingr9   	cloudinitr   r   r   r   cloudinit.distrosr   r   "cloudinit.distros.parsers.hostnamer	   cloudinit.settingsr
   	getLoggerr   rM   r   r   r"   r!   <module>r      s@     	 2 2 4 ; +g!E
W^^ E
r"   