
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!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ƒ\}}}|r€t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|ƒ\}}}|r‚t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   
