
    }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mZ  e j                  e      Z G d dej$                        Zy)    N)distroshelperssubputil)PackageList	rhel_util)HostnameConf)
PER_ALWAYS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
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dd Zy)$Distroz/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                     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__4   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_localeB   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_localeN   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_localeZ   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_hostnamek   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#   F)forcec                |    | j                   j                  d| j                  dg|rt               y t               y )Nzupdate-sources	makecache)freq)r   runr(   r
   r   )r   r|   s     r"   update_package_sourceszDistro.update_package_sources   s>      M$	 	 	
 +7	 	 	
r#   rU   )r.   )NN)__name__
__module____qualname__rh   r1   r0   network_conf_fnrW   rV   rf   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/."K!L
  9 9.HAB 
	 K	$6 6


<"@>7"1 &B /4 
r#   r   )loggingr9   	cloudinitr   r   r   r   cloudinit.distrosr   r   "cloudinit.distros.parsers.hostnamer	   cloudinit.settingsr
   r   	getLoggerr   rM   r   r   r#   r"   <module>r      s@     	 2 2 4 ; 7g!D
W^^ D
r#   