o
    fn                     @   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def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.confnetworkd)resolv_conf_fnnetwork_conf_dirTc                 C   s0   t j| ||| t|| _d| _dg| _d S )Nphoton	systemctl)r   r   __init__r   Runners_runnerosfamilyinit_cmd)selfnamecfgpaths r   :/usr/lib/python3/dist-packages/cloudinit/distros/photon.pyr      s   zDistro.__init__c                 C   sn   t d| ztj||d\}}|rt d|| d||fW S d||fW S  tjy6   tt d| Y dS w )NzAttempting to run: %s)capturez(Running %s resulted in stderr output: %sTFzCommand %s failed)TNN)LOGdebugr   warningProcessExecutionErrorr   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   s4   |s| j }d|i}t|| g d}| | d S )NLANG)r   restartzsystemd-localed)systemd_locale_conf_fnrhutilupdate_sysconfig_filer%   )r   localeout_fn
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   r5   r   r   r   install_packagesV   s   zDistro.install_packagesc                 C   s   |r| drt|| d S d }t| jdd}|r)| ddt|g\}}}n| dddt|g\}}}td |rHt	d||f d S d S )	N/previous-hostnamecreate_hostname_fileThostnamectlzset-hostnamez--transientz7create_hostname_file is False; hostname set transientlyz3Error while setting hostname: %s
Given hostname: %s)
endswithr   
write_fileget_cfg_option_boolr'   r%   strr   r*   r   )r   hostnamefilenameretr;   _outr$   r   r   r   _write_hostnameZ   s8   
zDistro._write_hostnamec                 C   s   |  | j}| j|fS N)_read_hostnamesystemd_hostname_conf_fn)r   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:   rA   z-f)r=   r   load_text_filestripr%   )r   rB   default_retr#   _errr   r   r   rG      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)tztz_file)r   set_etc_timezone_find_tz_file)r   rQ   r   r   r   set_timezone   s   zDistro.set_timezonec           	      C   s   |sg }ddg}|rt |tr|| n|r!t |tr!|| || td|}|| | |\}}}|rCt	d| d S d S )Ntdnfz-yz%s-%sz#Error while installing packages: %s)

isinstancer@   appendlistextendr   expand_package_listr%   r   error)	r   commandargsr7   r"   r5   rC   rD   r$   r   r   r   r8      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   runr8   r	   r
   )r   r_   r   r   r   update_package_sources   s   

zDistro.update_package_sources)TrF   )NN)__name__
__module____qualname__rH   r   r.   resolve_conf_fnrenderer_configsprefer_fqdnr   r%   r)   r4   r   r9   rE   rJ   rG   rP   rU   r8   rc   r   r   r   r   r      s.    
	
!

r   )logging	cloudinitr   r   r   r   r   cloudinit.distrosr   r   r/   cloudinit.settingsr	   r
   	getLoggerrd   r   r   r   r   r   r   <module>   s   
