U
    ¯Adt  ã                   @   st   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 e e¡Zdd„ ZG d	d
„ d
ejƒZdS )é    N)ÚdistrosÚhelpers)Úlog)ÚsubpÚutil)Ú	rhel_util)ÚPER_INSTANCEc                 C   s   | rdS dS d S )NZyesZno© )Úvalr	   r	   ú8/usr/lib/python3/dist-packages/cloudinit/distros/rhel.pyÚ_make_sysconfig_bool   s    r   c                   @   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/libexecZ	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 | |||¡ t |¡| _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Úpathsr	   r	   r   r   6   s    zDistro.__init__c                 C   s   | j d|d d S )NÚinstall)Úpkgs)Úpackage_command)r   Úpkglistr	   r	   r   Úinstall_packagesA   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_localeD   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   ZlocaleZout_fnZ
locale_cfgr	   r	   r   Úapply_localeP   s     ÿzDistro.apply_localer   c                 C   sX   |   ¡ r| j}n| j}|s&td| ƒ‚tj |¡rTt |¡\}}||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   ]   s    zDistro._read_system_localec                 C   sV   |   ¡ r | d¡r t ||¡ n2|   ¡ r>t ddt|ƒg¡ nd|i}t ||¡ d S )Nú/previous-hostnameZhostnamectlzset-hostnameÚHOSTNAME)r   Úendswithr   Z
write_filer   Ústrr   r!   )r   ÚhostnameÚfilenameZhost_cfgr	   r	   r   Ú_write_hostnamen   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   Zhost_fnr	   r	   r   Ú_read_system_hostname{   s    zDistro._read_system_hostnamec                 C   sx   |   ¡ r | d¡r t |¡ ¡ S |   ¡ rRt dg¡\}}| ¡ }t|ƒrL|S |S n"t |¡\}}d|krp|d S |S d S )Nr*   r.   r+   )	r   r,   r   Z	load_fileÚstripr   Úlenr   r'   )r   r/   ÚdefaultÚoutZ_errr(   r)   r	   r	   r   r3   ‚   s    zDistro._read_hostnamec                 C   sZ   |   |¡}|  ¡ r.t | j¡ t || j¡ n(dt|ƒi}t | j	|¡ t 
|| 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  d¡r(t d¡ dg}nt d¡ ddg}| d¡ |r^t|tƒr^| |¡ n|rvt|tƒrv| |¡ | |¡ t	 
d|¡}| |¡ 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   Úrunr   r   r   r	   r	   r   Úupdate_package_sourcesÄ   s    üzDistro.update_package_sources)N)r   )N)NN)Ú__name__Ú
__module__Ú__qualname__r:   r    r   Znetwork_conf_fnr2   r1   Znetwork_script_tplr9   Zusr_lib_execZrenderer_configsZprefer_fqdnr   r   r   r"   r   r0   r4   r3   r<   r   rF   r	   r	   r	   r   r      s:   þýÿ



!r   )r$   Z	cloudinitr   r   r   Zloggingr   r   Zcloudinit.distrosr   Zcloudinit.settingsr   Z	getLoggerrG   r=   r   r   r	   r	   r	   r   Ú<module>
   s   
