U
    Ӈgn                     @   sl   d dl Z d dlmZmZmZmZmZ d dl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netsubputil)PackageList)	rhel_util)
PER_ALWAYSPER_INSTANCEc                   @   s   e Zd ZdZdZdZdZdeediZdZdd	 Z	d$d
dZ
dd Zd%ddZedddZdd Zdd Zd&ddZdd Zdd Zd'ddZd d!d"d#ZdS )(Distroz/etc/hostnamez/etc/systemd/network/z/etc/locale.confz/etc/systemd/resolved.confZnetworkd)Zresolv_conf_fnnetwork_conf_dirTc                 C   s0   t j| ||| t|| _d| _dg| _d S )NZphoton	systemctl)r   r   __init__r   ZRunners_runnerZosfamilyZinit_cmd)selfnameZcfgpaths r   :/usr/lib/python3/dist-packages/cloudinit/distros/photon.pyr      s    zDistro.__init__c                 C   st   t d| z<tj||d\}}|r>t d|| d||fW S d||fW S  tjk
rn   tt d| Y dS X d S )NzAttempting to run: %s)capturez(Running %s resulted in stderr output: %sTFzCommand %s failed)TNN)LOGdebugr   warningZProcessExecutionErrorr   Zlogexc)r   cmdr   outerrr   r   r   exec_cmd(   s      zDistro.exec_cmdc                 C   s:   d}| j |d}td|| |s,t S td d S )Ndisable_fallback_netcfgTz%s value is: %szJSkipping generate_fallback_config. Rely on PhotonOS default network config)_cfggetr   r   r   generate_fallback_configinfo)r   keyr   r   r   r   r    6   s    zDistro.generate_fallback_configNc                 C   s6   |s
| j }d|i}t|| dddg}| | d S )NZLANGr   Zrestartzsystemd-localed)systemd_locale_conf_fnrhutilZupdate_sysconfig_filer   )r   ZlocaleZout_fnZ
locale_cfgr   r   r   r   apply_localeD   s     
zDistro.apply_locale)pkglistc                 C   s   | j d|d d S )Ninstall)pkgs)package_command)r   r&   r   r   r   install_packagesV   s    zDistro.install_packagesc                 C   s   |r| drt|| nnd }t| jdd}|rP| ddt|g\}}}n&| dddt|g\}}}td |rt	d||f d S )	N/previous-hostnamecreate_hostname_fileTZhostnamectlzset-hostnamez--transientz7create_hostname_file is False; hostname set transientlyz3Error while setting hostname: %s
Given hostname: %s)
endswithr   Z
write_fileZget_cfg_option_boolr   r   strr   r!   r   )r   hostnamefilenameretr,   _outr   r   r   r   _write_hostnameZ   s:      
zDistro._write_hostnamec                 C   s   |  | j}| j|fS )N)_read_hostnamesystemd_hostname_conf_fn)r   Zsys_hostnamer   r   r   _read_system_hostname{   s    zDistro._read_system_hostnamec                 C   s@   |r| drt| S | ddg\}}}|r<| S |S )Nr+   r/   z-f)r-   r   Zload_text_filestripr   )r   r0   defaultZ_retr   Z_errr   r   r   r4      s    zDistro._read_hostnamec                 C   s   dS )Nz	127.0.1.1r   )r   r   r   r   _get_localhost_ip   s    zDistro._get_localhost_ipc                 C   s   t j|| |d d S )N)tzZtz_file)r   Zset_etc_timezoneZ_find_tz_file)r   r:   r   r   r   set_timezone   s    zDistro.set_timezonec           	      C   s   |sg }ddg}|r*t |tr*|| n|rBt |trB|| || td|}|| | |\}}}|rt	d| d S )NZtdnfz-yz%s-%sz#Error while installing packages: %s)

isinstancer.   appendlistextendr   Zexpand_package_listr   r   error)	r   Zcommandargsr(   r   r&   r1   r2   r   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-sourcesZ	makecache)Zfreq)r   runr)   r	   r
   )r   rB   r   r   r   update_package_sources   s    
zDistro.update_package_sources)T)N)N)NN)__name__
__module____qualname__r5   r   r#   Zresolve_conf_fnZrenderer_configsZprefer_fqdnr   r   r    r%   r   r*   r3   r6   r4   r9   r;   r)   rD   r   r   r   r   r      s,   	

!

r   )ZloggingZ	cloudinitr   r   r   r   r   Zcloudinit.distrosr   r   r$   Zcloudinit.settingsr	   r
   Z	getLoggerrE   r   r   r   r   r   r   <module>   s   
