
    x[hi*                         S SK r S SKrS SKJr  S SKJrJrJr  S SKJ	r	  S SK
Jr  S SKJr  S SKJr  \ R                   " \5      rSrS	r " S
 S\R*                  5      rSS jr\S4S jr SS jrSS jrg)    N)List)distrossubputil)Apt)PackageManager)HostnameConf)CLOUDINIT_NETPLAN_FILEa8  # This file is generated from information provided by the datasource.  Changes
# to it will not persist across an instance reboot.  To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
z/etc/default/localec                      ^  \ rS rSrSrS\S.r\S   \S.\S   \SS	.S.rS
r	Sr
U 4S jrS rSS jrU 4S jrS rS rS rSS jrS rS rS S jrS rS\S\S\S\4S jrSrU =r$ )!Distro!   z/etc/hostnamez'/etc/network/interfaces.d/50-cloud-init)eninetplanr   )eni_path
eni_headerr   T)netplan_pathnetplan_headerpostcmdsz/var/lib/dhcpzdhclient\.\w+\.leasesc                    > [         TU ]  XU5        SU l        SU l        S U l        [
        R                  " U R                  U5      U l        U R                  /U l	        g )NdebianzC.UTF-8)
super__init__osfamilydefault_localesystem_localer   from_config_runneraptpackage_managers)selfnamecfgpaths	__class__s       :/usr/lib/python3/dist-packages/cloudinit/distros/debian.pyr   Distro.__init__7   sO    E* !'!??4<<57;xxj    c                     U R                   (       d  [        5       U l         U R                   (       a  U R                   $ U R                  $ )z9Return the default locale if set, else use default locale)r   read_system_localer   r    s    r%   
get_localeDistro.get_localeB   s>     !!!3!5D #'"4"4D	
:>:M:M	
r'   c                    U(       d  [         nU(       d  [        S5      eU R                  5       n[        R                  R                  U5      nU R                  (       + nU(       a&  [        R                  S[         U R                  5        O%[        R                  SU R                  [         5        UR                  5       UR                  5       :g  =(       d    U(       + =(       d    UnU(       + =(       d    U=(       d    UnU(       a  [        UUUU R                  S9  O"[        R                  SUU R                  U5        U(       a  [        UUUU R                  S9  SU l        gg)z]Apply specified locale to system, regenerate if specified locale
differs from system default.zFailed to provide locale value.zVSystem locale not found in %s. Assuming system locale is %s based on hardcoded defaultzSystem locale set to %s via %s)keynameinstall_functionz9System has '%s=%s' requested '%s', skipping regeneration.N)LOCALE_CONF_FN
ValueErrorr+   ospathexistsr   LOGdebugr   lowerregenerate_localeinstall_packagesupdate_locale_conf)	r    localeout_fnr.   distro_localeconf_fn_existssys_locale_unset
need_regen	need_confs	            r%   apply_localeDistro.apply_localeM   s9    #F>?? )/#111IIJ##	 II0"" LLNm1133  !!  	
 '&H*H8H	!%!6!6	 IIK""	 !%!6!6	 "&D r'   c                 8   > [        5         [        TU ]  " U0 UD6$ N)_maybe_remove_legacy_eth0r   _write_network_state)r    argskwargsr$   s      r%   rG   Distro._write_network_state   s    !#w+T<V<<r'   c                 T   S n U R                  U5      nU(       d  [        S5      nUR                  U5        [        R                  " U[        U5      S5        g ! [         aC    [        R                  " U R                  SS5      nU(       a   Nz[
        R                  S5         g f = f)Ncreate_hostname_fileTz8create_hostname_file is False; hostname file not created   )_read_hostname_confIOErrorr   get_cfg_option_bool_cfgr5   infor	   set_hostname
write_filestr)r    hostnamefilenameconfrL   s        r%   _write_hostnameDistro._write_hostname   s    	 ++H5D #D(##d)U3  
	#'#;#;		14$  $N 
	s   A 3B'B'&B'c                 T    U R                  U R                  5      nU R                  U4$ rE   )_read_hostnamehostname_conf_fn)r    sys_hostnames     r%   _read_system_hostnameDistro._read_system_hostname   s)    **4+@+@A%%|44r'   c                 d    [        [        R                  " U5      5      nUR                  5         U$ rE   )r	   r   load_text_fileparse)r    rX   rY   s      r%   rO   Distro._read_hostname_conf   s%    D//9:

r'   c                 x    S n U R                  U5      nUR                  nU(       d  U$ U$ ! [         a     Nf = frE   )rO   rW   rP   )r    rX   defaultrW   rY   s        r%   r]   Distro._read_hostname   sH    	++H5D}}H N	  		s   , 
99c                     g)Nz	127.0.1.1 r*   s    r%   _get_localhost_ipDistro._get_localhost_ip   s    r'   c                 J    [         R                  " XR                  U5      S9  g )N)tztz_file)r   set_etc_timezone_find_tz_file)r    rn   s     r%   set_timezoneDistro.set_timezone   s      B0B0B20FGr'   c                 d    US:w  a  [        SU S35      eU R                  R                  S5        g )NupgradezUnable to handle z command)RuntimeErrorr   run_package_command)r    commandrH   pkgss       r%   package_commandDistro.package_command   s3     i!27)8DEE$$Y/r'   c                 ,    [         R                  " 5       $ rE   )r   get_dpkg_architecturer*   s    r%   get_primary_archDistro.get_primary_arch   s    ))++r'   layoutmodelvariantoptionsc                     SR                  SSSU S3SU S3SU S3SU S3SS	S/	5      n[        R                  " S
USSS9  U R                  SS5        g )N
z'# This file was generated by cloud-initrM   z
XKBMODEL=""zXKBLAYOUT="zXKBVARIANT="zXKBOPTIONS="zBACKSPACE="guess"z/etc/default/keyboardrN   w)rX   contentmodeomoderestartzconsole-setup)joinr   rU   manage_service)r    r   r   r   r   contentss         r%   
set_keymapDistro.set_keymap   s     999UG1%fXQ'wiq)wiq)#

 	,		
 	I7r'   )r   r   r   r   r   )NLANGrE   )NN)__name__
__module____qualname____firstlineno__r^   r
   network_conf_fnNETWORK_FILE_HEADERrenderer_configsdhclient_lease_directorydhclient_lease_file_regexr   r+   rB   rG   rZ   r`   rO   r]   rk   rr   rz   r~   rV   r   __static_attributes____classcell__)r$   s   @r%   r   r   !   s    &8)O (.-

 ,I61

  / 8	A	
9&v=4,5
	H0, 8  8S  83  8  8  8r'   r   c                    [         R                  R                  U 5      (       d  gSn [        R                  " U 5      nSS/nUR                  5        Vs/ s H*  oDR                  S5      (       a  M  UR                  5       PM,     nnXS:X  a  [        R                  " U 5        SU -  nO	USU -  -   n [        R                  U5        gs  snf ! [         a    USU -  -   n N/f = f)	a3  Ubuntu cloud images previously included a 'eth0.cfg' that had
hard coded content.  That file would interfere with the rendered
configuration if it was present.

if the file does not exist do nothing.
If the file exists:
  - with known content, remove it and warn
  - with unknown content, leave it and warn
Nz(Dynamic networking config may not apply.z	auto eth0ziface eth0 inet dhcp#zremoved %s with known contentsz* '%s' exists with user configured content.z" %s exists, but could not be read.)r2   r3   r4   r   rc   
splitlines
startswithstripdel_file	Exceptionr5   warning)r3   bmsgr   known_contentsflinesmsgs          r%   rF   rF      s     77>>$5DA&&t,%'=>'224
4!LL<MIAGGI4 	 
 "MM$2T9CELLC KK
  A9D@@As/   ,C C2C"C )C C C"!C"r   c                     SnU (       d  [        SU -  5      e[        R                  R                  U 5      (       a>  [        R
                  " U 5      n[        R                  " U5      nUR                  US5      nU$ )z.Read system default locale setting, if presentrM   zInvalid path: %s)r1   r2   r3   r4   r   rc   load_shell_contentget)sys_pathr.   sys_vallocale_contentsys_defaultss        r%   r)   r)   
  se    G+h677	ww~~h,,X6..~>""7B/Nr'   c                     [         R                  SXU 5        [        R                  " S5      (       d	  U" S/5        [        R                  " SSU-   U< SU < 3/SS9  g)	zUpdate system locale configz%Updating %s with locale setting %s=%szupdate-localelocalesz--locale-file==FcaptureN)r5   r6   r   whichr;   r   r.   r/   s       r%   r:   r:     s[     II/F ::o&&)%IIx''	

 r'   c                     U R                  5       S;   a  [        R                  SX 5        g[        R                  " S5      (       d	  U" S/5        [        R                  SU 5        [        R                  " SU /SS9  g)	z
Run locale-gen for the provided locale and set the default
system variable `keyname` appropriately in the provided `sys_path`.

)czc.utf-8posixz$%s=%s does not require rengenerationNz
locale-genr   zGenerating locales for %sFr   )r7   r5   r6   r   r   r   s       r%   r8   r8   +  sb     ||~22		8'J ::l##)%II)62II|V$e4r'   )z"/etc/network/interfaces.d/eth0.cfg)r   N)loggingr2   typingr   	cloudinitr   r   r   (cloudinit.distros.package_management.aptr   4cloudinit.distros.package_management.package_managerr   "cloudinit.distros.parsers.hostnamer	   cloudinit.net.netplanr
   	getLoggerr   r5   r   r0   r   rF   r)   r:   r8   rj   r'   r%   <module>r      su     	  ) ) 8 O ; 8!  'F8W^^ F8R@ !/  8<&5r'   