o
    f                     @   st   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 eZG dd dejZdS )    N)distroshelperssubputil)PackageList	rhel_util)HostnameConf)
PER_ALWAYSPER_INSTANCEc                   @   s   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d ZdefddZdd Zd-ddZd.ddZdd  Zd!d" Zd-d#d$Zd%d& Zd/d'd(Zd)d*d+d,ZdS )0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                 C   s<   t j| ||| t|| _d| _d| _d | _d|d< d S )Nredhatzen_US.UTF-8sshdssh_svcname)	r   r   __init__r   Runners_runnerosfamilydefault_localesystem_locale)selfnamecfgpaths r   8/usr/lib/python3/dist-packages/cloudinit/distros/rhel.pyr   4   s   zDistro.__init__pkglistc                 C   s   | j d|d d S )Ninstall)pkgs)package_command)r   r!   r   r   r    install_packages?   s   zDistro.install_packagesc                 C   s"   | j s|  | _ | j r| j S | jS )z8Return the default locale if set, else use system locale)r   _read_system_localer   )r   r   r   r    
get_localeB   s   

zDistro.get_localeNc                 C   s6   |   r
|s	| j}n|s| j}d|i}t|| d S )NLANG)uses_systemdsystemd_locale_conf_fnlocale_conf_fnr   update_sysconfig_file)r   localeout_fn
locale_cfgr   r   r    apply_localeN   s   zDistro.apply_localer(   c                 C   sX   |   r| j}n| j}|std| tj|r*t|\}}||v r(|| S dS dS )z.Read system default locale setting, if presentzInvalid path: %sN)	r)   r*   r+   
ValueErrorospathexistsr   read_sysconfig_file)r   keyname	locale_fn_existscontentsr   r   r    r&   Z   s   zDistro._read_system_localec                 C   s   |   r|drtd}|| t|t|d d S |   rIt| jdd}|r7t		ddt|g d S t		dddt|g t
d	 d S d
|i}t|| d S )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   r,   )r   hostnamefilenameconfr<   host_cfgr   r   r    _write_hostnamek   s.   
zDistro._write_hostnamec                 C   s$   |   r| j}n| j}|| |fS N)r)   systemd_hostname_conf_fnhostname_conf_fn_read_hostname)r   host_fnr   r   r    _read_system_hostname   s   zDistro._read_system_hostnamec                 C   sr   |   r|drt| S |   r(tdg\}}| }t|r&|S |S t|\}}d|v r7|d S |S )Nr:   rG   r>   )	r)   r?   r   load_text_filestripr   lenr   r5   )r   rH   defaultout_errr8   r9   r   r   r    rO      s   zDistro._read_hostnamec                 C   s\   |  |}|  rt| j t|| j d S dt|i}t| j	| t
|| j d S )NZONE)_find_tz_filer)   r   del_filetz_local_fnsym_linkrB   r   r,   clock_conf_fncopy)r   tztz_file	clock_cfgr   r   r    set_timezone   s   
zDistro.set_timezonec                 C   s   |d u rg }t drtd dg}n	td ddg}|d |r/t|tr/|| n|r;t|tr;|| || t	
d|}|| t j |dd	 d S )
Ndnfz Using DNF for package managementz Using YUM for package managementyumz-tz-yz%s-%sF)capture)r   whichrE   debugappend
isinstancerB   listextendr   expand_package_list)r   commandargsr#   cmdr!   r   r   r    r$      s    






zDistro.package_commandF)forcec                C   s$   | j jd| jdg|rtntd d S )Nzupdate-sources	makecache)freq)r   runr$   r	   r
   )r   rp   r   r   r    update_package_sources   s   

zDistro.update_package_sourcesrL   )r(   )NN)__name__
__module____qualname__r]   r+   r*   network_conf_fnrN   rM   r[   usr_lib_execdhclient_lease_directorydhclient_lease_file_regexrenderer_configsprefer_fqdnr   r   r%   r'   r0   r&   rK   rQ   rO   rb   r$   rt   r   r   r   r    r      s>    



!r   )loggingr2   	cloudinitr   r   r   r   cloudinit.distrosr   r   "cloudinit.distros.parsers.hostnamer   cloudinit.settingsr	   r
   	getLoggerru   rE   r   r   r   r   r    <module>   s   	
