
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
3
\me                 @   sh   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 e jeZG dd dejZdS )    N)distroshelpersnetsubputil)PackageList)	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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! 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j| ||| tj|| _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.6/photon.pyr      s    zDistro.__init__c             C   sn   t jd| y8tj||d\}}|r<t jd|| d||fS d||fS  tjk
rh   tjt d| 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 j|d}tjd|| |s,tj S tj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j|| dddg}| j| 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 )NZinstall)pkgs)package_command)r   r%   r   r   r   install_packagesV   s    zDistro.install_packagesc             C   s   |r|j drtj|| ndd }tj| jdd}|rP| jddt|g\}}}n| jdddt|g\}}}|rtjd||f d S )Nz/previous-hostnamecreate_hostname_fileTZhostnamectlzset-hostnamez--transientz3Error while setting hostname: %s
Given hostname: %s)	endswithr   Z
write_fileZget_cfg_option_boolr   r   strr   r   )r   hostnamefilenameretr)   _outr   r   r   r   _write_hostnameZ   s$    zDistro._write_hostnamec             C   s   | j | j}| j|fS )N)_read_hostnamesystemd_hostname_conf_fn)r   Zsys_hostnamer   r   r   _read_system_hostnamex   s    zDistro._read_system_hostnamec             C   s@   |r|j drtj|j S | jddg\}}}|r<|j S |S )Nz/previous-hostnamer,   z-f)r*   r   Z	load_filestripr   )r   r-   defaultZ_retr   Z_errr   r   r   r1   |   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|| j|d d S )N)tzZtz_file)r   Zset_etc_timezoneZ_find_tz_file)r   r7   r   r   r   set_timezone   s    zDistro.set_timezonec       	      C   s   |sg }ddg}|r*t |tr*|j| n|rBt |trB|j| |j| tjd|}|j| | j|\}}}|rtj	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%   r.   r/   r   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)T)N)N)NN)__name__
__module____qualname__r2   r   r"   Zresolve_conf_fnZrenderer_configsZprefer_fqdnr   r   r   r$   r   r(   r0   r3   r1   r6   r8   r'   r?   r   r   r   r   r
      s(   
	



r
   )ZloggingZ	cloudinitr   r   r   r   r   Zcloudinit.distrosr   r   r#   Zcloudinit.settingsr	   Z	getLoggerr@   r   r
   r   r   r   r   <module>   s   
