o
    w7e                     @   sx   d dl Z d dlmZmZ d dlmZ d dlmZmZ d dlm	Z	 d dl
mZ d dlmZ eeZG dd	 d	ejZdS )
    N)distroshelpers)log)subputil)	rhel_util)HostnameConf)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	d
dddddiZdZdd Z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( ZdS ),Distroz/etc/sysconfig/clockz/etc/sysconfig/i18nz/etc/locale.confz/etc/sysconfig/networkz/etc/hostnamez'/etc/sysconfig/network-scripts/ifcfg-%sz/etc/localtimez/usr/libexec	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   0   s   zDistro.__init__c                 C   s   | j d|d d S )Ninstall)pkgs)package_command)r   pkglistr   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_locale>   s   

zDistro.get_localeNc                 C   s<   |   r|s	| j}| 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_localeJ   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%   W   s   zDistro._read_system_localec                 C   sr   |   r|drtd}|| t|t|d d S |   r-tddt|g d S d|i}t	|| d S )N/previous-hostname i  hostnamectlzset-hostnameHOSTNAME)
r)   endswithr   set_hostnamer   
write_filestrr   r   r,   )r   hostnamefilenameconfhost_cfgr   r   r   _write_hostnameh   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_hostnamew   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:   rB   r=   )	r)   r>   r   	load_filestripr   lenr   r5   )r   rC   defaultout_errr8   r9   r   r   r   rJ   ~   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_linkrA   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   whichLOGdebugappend
isinstancerA   listextendr   expand_package_list)r   commandargsr!   cmdr#   r   r   r   r"      s    






zDistro.package_commandc                 C   s   | j jd| jdgtd d S )Nzupdate-sources	makecache)freq)r   runr"   r	   r&   r   r   r   update_package_sources   s   
zDistro.update_package_sourcesrG   )r(   )NN)__name__
__module____qualname__rX   r+   r*   network_conf_fnrI   rH   network_script_tplrV   usr_lib_execrenderer_configsprefer_fqdnr   r$   r'   r0   r%   rF   rL   rJ   r]   r"   ro   r   r   r   r   r
      s<    



!r
   )r2   	cloudinitr   r   r   loggingr   r   cloudinit.distrosr   "cloudinit.distros.parsers.hostnamer   cloudinit.settingsr	   	getLoggerrp   rb   r
   r   r   r   r   <module>   s   	
