o
    w7e                     @   sh   d dl mZmZ d dl mZ d dl mZmZmZ d dlm	Z
 d dlmZ eeZG dd dejZdS )	    )distroshelpers)log)netsubputil)	rhel_util)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d Zdd Zdd Zd"ddZdd Zdd Zd#ddZ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(   8   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_localeF   s   zDistro.apply_localec                 C   s   | j d|d d S )Ninstall)pkgs)package_command)r   pkglistr   r   r   install_packagesX   s   zDistro.install_packagesc                 C   sT   |r| drt|| d S | ddt|g\}}}|r(td||f d S d S )N/previous-hostnamehostnamectlzset-hostnamez3Error while setting hostname: %s
Given hostname: %s)endswithr   
write_filer$   strr   r   )r   hostnamefilenameret_outr#   r   r   r   _write_hostname\   s   
zDistro._write_hostnamec                 C   s   |  | j}| j|fS N)_read_hostnamesystemd_hostname_conf_fn)r   sys_hostnamer   r   r   _read_system_hostnamel   s   
zDistro._read_system_hostnamec                 C   s@   |r| drt| S | ddg\}}}|r| S |S )Nr9   r>   z-f)r;   r   	load_filestripr$   )r   r?   default_retr"   _errr   r   r   rD   p   s   zDistro._read_hostnamec                 C   s   dS )Nz	127.0.1.1r   r   r   r   r   _get_localhost_ipw   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   rO   r   r   r   set_timezonez   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argsr5   r!   r7   r@   rA   r#   r   r   r   r6   }   s   


zDistro.package_commandc                 C   s   | j jd| jdgtd d S )Nzupdate-sources	makecache)freq)r   runr6   r	   rM   r   r   r   update_package_sources   s   
zDistro.update_package_sources)TrC   )NN)__name__
__module____qualname__rE   r   r-   resolve_conf_fnrenderer_configsprefer_fqdnr   r$   r(   r3   r8   rB   rG   rD   rN   rS   r6   r`   r   r   r   r   r
      s.    
	


r
   N)	cloudinitr   r   r   loggingr   r   r   cloudinit.distrosr   r.   cloudinit.settingsr	   	getLoggerra   r   r
   r   r   r   r   <module>   s   
