
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
3
\me                 @   sp   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 dejZdS )    N)distroshelperssubputil)PackageList	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ed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)Zipv4Zipv6)ZcontrolZiface_templatesZroute_templatesTc             C   s<   t jj| ||| tj|| _d| _d| _d | _d|d< d S )NZredhatzen_US.UTF-8ZsshdZssh_svcname)	r   r
   __init__r   ZRunners_runnerZosfamilydefault_localesystem_locale)selfnameZcfgpaths r   /usr/lib/python3.6/rhel.pyr   /   s    zDistro.__init__)pkglistc             C   s   | j d|d d S )NZinstall)pkgs)package_command)r   r   r   r   r   install_packages:   s    zDistro.install_packagesc             C   s"   | j s| j | _ | 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   s6   | j  r|s| j}n
|s| j}d|i}tj|| d S )NLANG)uses_systemdsystemd_locale_conf_fnlocale_conf_fnr   update_sysconfig_file)r   ZlocaleZout_fnZ
locale_cfgr   r   r   apply_localeI   s    zDistro.apply_localer   c             C   sX   | j  r| j}n| j}|s&td| tjj|rTtj|\}}||krP|| 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   ZkeynameZ	locale_fn_existscontentsr   r   r   r   U   s    zDistro._read_system_localec             C   s   | j  r8|jdr8td}|j| tj|t|d n^| j  rtj| jdd}|rjt	j	ddt|g qt	j	dddt|g nd	|i}t
j|| d S )
Nz/previous-hostname i  create_hostname_fileTZhostnamectlzset-hostnamez--transientHOSTNAME)r   endswithr   Zset_hostnamer   Z
write_filestrZget_cfg_option_boolZ_cfgr   r   r   )r   hostnamefilenameZconfr)   Zhost_cfgr   r   r   _write_hostnamef   s     
zDistro._write_hostnamec             C   s$   | j  r| j}n| j}|| j|fS )N)r   systemd_hostname_conf_fnhostname_conf_fn_read_hostname)r   Zhost_fnr   r   r   _read_system_hostname   s    zDistro._read_system_hostnamec             C   sx   | j  r |jdr tj|j S | j  rRtjdg\}}|j }t|rL|S |S n"tj|\}}d|krp|d S |S d S )Nz/previous-hostnamer-   r*   )	r   r+   r   Z	load_filestripr   lenr   r%   )r   r.   defaultoutZ_errr&   r'   r   r   r   r2      s    zDistro._read_hostnamec             C   sZ   | j |}| j r.tj| j tj|| j n(dt|i}tj| j	| tj
|| j d S )NZZONE)Z_find_tz_filer   r   Zdel_filetz_local_fnZsym_linkr,   r   r   clock_conf_fncopy)r   ZtzZtz_fileZ	clock_cfgr   r   r   set_timezone   s    
zDistro.set_timezonec             C   s   |d kr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|rvt|trv|j| |j| t	j
d|}|j| t j |dd	 d S )
NZdnfz Using DNF for package managementz Using YUM for package managementZyumz-tz-yz%s-%sF)Zcapture)r   ZwhichLOGdebugappend
isinstancer,   listextendr   Zexpand_package_list)r   Z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-sourcesZ	makecache)Zfreq)r   Zrunr   r	   )r   r   r   r   update_package_sources   s
    zDistro.update_package_sources)N)r   )N)NN)__name__
__module____qualname__r9   r   r   Znetwork_conf_fnr1   r0   Znetwork_script_tplr8   Zusr_lib_execZrenderer_configsZprefer_fqdnr   r   r   r   r    r   r/   r3   r2   r;   r   rD   r   r   r   r   r
      s4   



!r
   )Zloggingr"   Z	cloudinitr   r   r   r   Zcloudinit.distrosr   r   Z"cloudinit.distros.parsers.hostnamer   Zcloudinit.settingsr	   Z	getLoggerrE   r<   r
   r   r   r   r   <module>
   s   
