
    }fn                         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mZ  e j                  e      Z G d dej"                        Zy)    N)distroshelpersnetsubputil)PackageList)	rhel_util)
PER_ALWAYSPER_INSTANCEc                       e Zd ZdZdZdZdZdeediZdZd Z	dd	Z
d
 ZddZdefdZd Zd ZddZd Zd ZddZdddZy)Distroz/etc/hostnamez/etc/systemd/network/z/etc/locale.confz/etc/systemd/resolved.confnetworkd)resolv_conf_fnnetwork_conf_dirTc                     t         j                  j                  | |||       t        j                  |      | _        d| _        dg| _        y )Nphoton	systemctl)r   r   __init__r   Runners_runnerosfamilyinit_cmd)selfnamecfgpathss       :/usr/lib/python3/dist-packages/cloudinit/distros/photon.pyr   zDistro.__init__   s<    dC7 u- $    c                    t         j                  d|       	 t        j                  ||      \  }}|rt         j                  d||       d||fS d||fS # t        j                  $ r t        j                  t         d|       Y yw xY 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errs        r   exec_cmdzDistro.exec_cmd(   s    		)3/
	$38JS#>S S#~%#s?")) 	$KK0#6#	$s   7A A .BBc                     d}| j                   j                  |d      }t        j                  d||       |st	        j
                         S t        j                  d       y )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+   s      r   r.   zDistro.generate_fallback_config6   sV    '"&))--T":		#S*AB&//11	
 r   Nc                 ~    |s| j                   }d|i}t        j                  ||       g d}| j                  |       y )NLANG)r   restartzsystemd-localed)systemd_locale_conf_fnrhutilupdate_sysconfig_filer)   )r   localeout_fn
locale_cfgr&   s        r   apply_localezDistro.apply_localeD   sE     00F F

 	$$VZ8
 :cr   pkglistc                 *    | j                  d|       y )Ninstall)pkgs)package_command)r   r;   s     r   install_packageszDistro.install_packagesV   s    YW5r   c                    |r(|j                  d      rt        j                  ||       y d }t        j                  | j                  dd      }|r"| j                  ddt        |      g      \  }}}n7| j                  dddt        |      g      \  }}}t        j                  d       |rt        j                  d||f       y y )	N/previous-hostnamecreate_hostname_fileThostnamectlzset-hostnamez--transientz7create_hostname_file is False; hostname set transientlyz3Error while setting hostname: %s
Given hostname: %s)
endswithr   
write_fileget_cfg_option_boolr,   r)   strr!   r/   r#   )r   hostnamefilenameretrC   _outr(   s          r   _write_hostnamezDistro._write_hostnameZ   s    ))*>?OOHh/C#'#;#;		14$  $!%"NCMB"T3 "&%&%H	"T3 M N  r   c                 T    | j                  | j                        }| j                  |fS N)_read_hostnamesystemd_hostname_conf_fn)r   sys_hostnames     r   _read_system_hostnamezDistro._read_system_hostname{   s)    **4+H+HI--|<<r   c                     |r4|j                  d      r#t        j                  |      j                         S | j	                  ddg      \  }}}|r|j                         S |S )NrB   rI   z-f)rE   r   load_text_filestripr)   )r   rJ   default_retr'   _errs         r   rP   zDistro._read_hostname   sY    ))*>?&&x06688--T(:;c4!syy{.w.r   c                      y)Nz	127.0.1.1 )r   s    r   _get_localhost_ipzDistro._get_localhost_ip   s    r   c                 P    t        j                  || j                  |             y )N)tztz_file)r   set_etc_timezone_find_tz_file)r   r^   s     r   set_timezonezDistro.set_timezone   s      B0B0B20FGr   c                 n   |sg }ddg}|r"t        |t              r|j                  |       n#|r!t        |t              r|j	                  |       |j                  |       t        j                  d|      }|j	                  |       | j                  |      \  }}}|rt        j                  d|       y y )Ntdnfz-yz%s-%sz#Error while installing packages: %s)

isinstancerH   appendlistextendr   expand_package_listr)   r!   error)	r   commandargsr>   r&   r;   rK   rL   r(   s	            r   r?   zDistro.package_command   s    DtnJtS)JJtjt,JJt

7**7D9

7s+T3II;SA r   F)forcec                |    | j                   j                  d| j                  dg|rt               y t               y )Nzupdate-sources	makecache)freq)r   runr?   r
   r   )r   rm   s     r   update_package_sourceszDistro.update_package_sources   s>      M$	 	 	
 +7	 	 	
r   )TrO   )NN)__name__
__module____qualname__rQ   r   r4   resolve_conf_fnrenderer_configsprefer_fqdnr   r)   r.   r:   r   r@   rM   rS   rP   r\   rb   r?   rr   r[   r   r   r   r      s    ../2O 	- 0
 K&$$6 6B=/HB& /4 
r   r   )logging	cloudinitr   r   r   r   r   cloudinit.distrosr   r	   r5   cloudinit.settingsr
   r   	getLoggerrs   r!   r   r[   r   r   <module>r~      s=   
  7 7 ) 1 7g!V
W^^ V
r   