
    x[h                         d dl Z d dlmZmZmZmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ  e j                  e      Z G d dej"                        Zd	 Zd
 Zy)    N)distroshelperssubputil)PackageList)HostnameConf)SysConf)PER_INSTANCEc                       e Zd ZdZdgZdZdZdZdZdZ	dd	d
ddddiZ
dZd ZddZd ZddZd Zd ZddZdefdZdddZy)Distroz/etc/locale.conf	systemctlz/etc/sysconfig/networkz/etc/systemd/resolved.confz/etc/localtimez/var/lib/NetworkManagerzdhclient-[\w-]+\.lease	sysconfigzetc/sysconfig/networkz'%(base)s/network-scripts/ifcfg-%(name)sz'%(base)s/network-scripts/route-%(name)sz(%(base)s/network-scripts/route6-%(name)s)ipv4ipv6)controliface_templatesroute_templatesFc                     t         j                  j                  | |||       t        j                  |      | _        d| _        d| _        d|d<   y )Naosczen_US.UTF-8sshdssh_svcname)r   r   __init__r   Runners_runnerosfamilydefault_locale)selfnamecfgpathss       8/usr/lib/python3/dist-packages/cloudinit/distros/aosc.pyr   zDistro.__init__(   sC    dC7u-+#M    Nc                 @    |s| j                   }d|i}t        ||       y )NLANG)systemd_locale_conf_fnupdate_locale_conf)r   localeout_fn
locale_cfgs       r!   apply_localezDistro.apply_locale/   s(    00FF

 	6:.r"   c                    |j                  d      r<t        d      }|j                  |       t        j                  |t        |      d       t        j                  | j                  dd      }|r"t        j                  ddt        |      g       y t        j                  dddt        |      g       t        j                  d	       y )
N/previous-hostname   create_hostname_fileThostnamectlzset-hostnamez--transientz7create_hostname_file is False; hostname set transiently)endswithr   set_hostnamer   
write_filestrget_cfg_option_bool_cfgr   LOGinfo)r   hostnamefilenameconfr/   s        r!   _write_hostnamezDistro._write_hostname7   s    12#Dh'OOHc$i7#77II-t 
  II}nc(mDEII!"!M	 HHNOr"   c                     |j                  d      r#t        j                  |      j                         S t	        j                  dg      \  }}|j                         }t        |      r|S |S )Nr,   r9   )r1   r   load_text_filestripr   len)r   r:   defaultout_errs        r!   _read_hostnamezDistro._read_hostnameL   s[    12&&x06688ii-diiks8JNr"   c                 T    | j                  | j                        }| j                  |fS N)rD   hostname_conf_fn)r   sys_hostnames     r!   _read_system_hostnamezDistro._read_system_hostnameV   s)    **4+@+@A%%|44r"   c                     | j                  |      }t        j                  | j                         t        j                  || j                         y rF   )_find_tz_filer   del_filetz_local_fnsym_link)r   tztz_files      r!   set_timezonezDistro.set_timezoneZ   s8    $$R(d&&'gt//0r"   c                     |g }dg}|r|j                  |       |j                  d       |j                  |       t        j                  |d       y )Nomaz-yF)capture)appendextendr   )r   commandargspkgscmds        r!   package_commandzDistro.package_command_   sH    <DgJJw

4

4		#u%r"   pkglistc                 *    | j                  d|       y )Ninstall)rY   )r[   )r   r\   s     r!   install_packageszDistro.install_packagesk   s    YW5r"   )forcec                ^    | j                   j                  d| j                  dt               y )Nzupdate-sourcesrefresh)freq)r   runr[   r
   )r   r`   s     r!   update_package_sourceszDistro.update_package_sourcesn   s+      	 	 	
r"   rF   )NN)__name__
__module____qualname__r%   init_cmdnetwork_conf_dirresolve_conf_fnrM   dhclient_lease_directorydhclient_lease_file_regexrenderer_configsprefer_fqdnr   r*   r<   rD   rI   rQ   r[   r   r_   re    r"   r!   r   r      s    /}H/2O"K8 9 	.HAB 
	 K$/P*51

&6 6 /4 
r"   r   c                     d}	 t        j                  |       j                         }d}|t	        |      fS # t        $ r g }Y w xY w)NFT)r   r>   
splitlinesIOErrorr	   )sys_pathexistscontentss      r!   read_locale_confrw   w   sR    F&&x0;;= GH%&&  s   %6 AAc                 L   |sy t        |       \  }}d}|j                         D ]   \  }}|	t        |      }|s|||<   |dz  }" |r\t        |      g}|s$|j                  dt	        j
                                t	        j                  | dj                  |      dz   d       y y )Nr      
r.   )rw   itemsr4   insertr   make_headerr3   join)rt   r)   ru   rv   
updated_amkvliness           r!   r&   r&      s    )(3VXJ  " 19Fa
 M
 LLD,,./$))E"2T"95A r"   )logging	cloudinitr   r   r   r   cloudinit.distrosr   "cloudinit.distros.parsers.hostnamer   "cloudinit.distros.parsers.sys_confr	   cloudinit.settingsr
   	getLoggerrf   r7   r   rw   r&   rp   r"   r!   <module>r      sL     2 2 ) ; 6 +g!c
W^^ c
L'Br"   