HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux ip-10-0-8-47 6.8.0-1021-aws #23~22.04.1-Ubuntu SMP Tue Dec 10 16:31:58 UTC 2024 aarch64
User: ubuntu (1000)
PHP: 8.1.2-1ubuntu2.22
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/cloudinit/distros/__pycache__/gentoo.cpython-310.pyc
o

�Ad�#�@sxddlmZmZddlmZddlmZmZddlmZddl	m
Z
ddlmZe�
e�ZGdd�dej�Zd	d
�ZdS)�)�distros�helpers)�log)�subp�util)�net_util)�HostnameConf)�PER_INSTANCEc@s�eZdZdZdZdZdZdgZdZddgZ	d	d
�Z
d&dd
�Zdd�Zdd�Z
edd��Zdd�Zdd�Zdd�Zdd�Zedd��Zd&dd�Zd d!�Zd'd"d#�Zd$d%�ZdS)(�Distroz/etc/env.d/02localez/etc/locale.genz/etc/conf.d/netz/etc/conf.d/hostnamez
rc-servicezen_US.UTF-8zC.UTF8 UTF-8zen_US.UTF-8 UTF-8cCsFtj�||||�t�|�|_d|_d|d<t��r!t�	d�dSdS)N�gentooz/etc/init.d/sshd�ssh_svcnamez/Cloud-init does not support systemd with gentoo)
rr
�__init__r�Runners�_runner�osfamily�uses_systemd�LOG�error)�self�name�cfg�paths�r�:/usr/lib/python3/dist-packages/cloudinit/distros/gentoo.pyr
s�zDistro.__init__NcCsFtj|jd�|j�dd�tjdgdd�tjddd	|jgdd�d
S)z�rc-only - not compatible with systemd

        Locales need to be added to /etc/locale.gen and generated prior
        to selection. Default to en_US.UTF-8 for simplicity.
        �
i�)�modez
locale-genF��capture�eselect�locale�setN)r�
write_file�
locale_gen_fn�join�localesr�default_locale)r�_�out_fnrrr�apply_locale+s

�zDistro.apply_localecCs|��|jd|d�dS)N�)�pkgs)�update_package_sources�package_command)r�pkglistrrr�install_packages;szDistro.install_packagesc
	Cs�t�|�}t�d||�|��}g}|��D]�\}}d|vr%|�|d�|dkr*q|jd|}|�d�}t	|t
tf�rGtt|���
dd�}d}	|�d�dkrY|	d	j|d
�7}	n |	dj||�d�|�d
�|�d�d�7}	|	dj||�d�d�7}	|�d�r�|	dj||d�7}	t�||	�|�|�|�d�r�dddj|d
�dg}
zt�|
�\}}t|�r�t�d|
|�Wqtjy�t�td|
�Yqwq|r�t�|jt|��|S)Nz3Translated ubuntu style network settings %s into %szdns-nameservers�lo�.�,r)�	bootproto�dhcpzconfig_{name}="dhcp"�rzEconfig_{name}="{ip_address} netmask {netmask}"
mac_{name}="{hwaddr}"
�address�netmask�	hwaddress)r�
ip_addressr6�hwaddrz&routes_{name}="default via {gateway}"
�gateway)rr:z"dns_servers_{name}="{dnsservers}"
)r�
dnsservers�autoz	rc-update�addz
net.{name}�default�(Running %s resulted in stderr output: %s�#Running interface command %s failed)r�translate_networkr�debug�keys�items�extend�network_conf_fn�get�
isinstance�list�tuple�str�replace�formatrr!�_create_network_symlinkr�len�warning�ProcessExecutionError�logexc�resolve_conf_fn�convert_resolv_conf)
r�settings�entries�	dev_names�nameservers�dev�info�net_fn�dns_nameservers�results�cmd�_out�errrrr�_write_network?s~
�
�	
�
�


������
�zDistro._write_networkcCs*dj|d�}t�|�st�d|�dSdS)Nz/etc/init.d/net.{name}r4z/etc/init.d/net.lo)rMr�is_link�sym_link)�interface_name�	file_pathrrrrN�s
�zDistro._create_network_symlinkcCsjd|dg}t�d||�zt�|�\}}t|�r t�d||�WdStjy4t�td|�YdSw)Nz/etc/init.d/net.%s�restartz8Attempting to run bring up interface %s using command %sr?Tr@F)rrBrrOrPrQrrR)r�device_namer^r_r`rrr�_bring_up_interface�s"���zDistro._bring_up_interfacecCs�d}|D]}|dkrd}q|rKddg}zt�|�\}}t|�r&t�d||�Wntjy9t�td|�YdSwdd	�|�d
�D�}tj	�
||�Stj	�
||�S)NF�allT�lsz/etc/init.d/net.*r?r@cSsg|]	}|�d�d�qS)r0�)�split)�.0�xrrr�
<listcomp>�sz/Distro._bring_up_interfaces.<locals>.<listcomp>z  )rrOrrPrQrrRrlrr
�_bring_up_interfaces)r�device_names�use_all�dr^r_r`�devicesrrrrp�s*����zDistro._bring_up_interfacescCsVd}z|�|�}Wn	tyYnw|std�}|�d|�t�|t|�d�dS)Nr)z
hostname="%s"i�)�_read_hostname_conf�IOErrorr�set_hostnamerr!rK)r�hostname�filename�confrrr�_write_hostname�s�zDistro._write_hostnamecCs|�|j�}|j|fS�N)�_read_hostname�hostname_conf_fn)r�sys_hostnamerrr�_read_system_hostname�s
zDistro._read_system_hostnamecCstt�|��}|��|Sr|)rr�	load_file�parse)ryrzrrrru�szDistro._read_hostname_confcCs8d}z
|�|�}|j}Wn	tyYnw|s|S|Sr|)rurxrv)rryr>rxrzrrrr}�s

�zDistro._read_hostnamecCstj||�|�d�dS)N)�tz�tz_file)r�set_etc_timezone�
_find_tz_file)rr�rrr�set_timezone�szDistro.set_timezonecCs�td�}|�d�|dkr|�ddg�n1|durg}|r(t|t�r(|�|�n|r4t|t�r4|�|�|r;|�|�t�d|�}|�|�tj|dd�dS)	N�emergez--quiet�upgradez--update�worldz%s-%sFr)rI�appendrErHrKr�expand_package_listr)r�command�argsr*r^r-rrrr,�s



zDistro.package_commandcCs|jjd|jdgtd�dS)Nzupdate-sourcesz--sync)�freq)r�runr,r	)rrrrr+�s
�zDistro.update_package_sourcesr|)NN)�__name__�
__module__�__qualname__�locale_conf_fnr"rFr~�init_cmdr%r$r
r(r.ra�staticmethodrNrhrpr{r�rur}r�r,r+rrrrr
s0
F



r
cCs(d}t|t�r|D]}|d|7}q	|S)z4Returns a settings string formatted for resolv.conf.r)znameserver %s
)rHrI)rU�result�nsrrrrT�s

rTN)�	cloudinitrrr�loggingrr�cloudinit.distrosr�"cloudinit.distros.parsers.hostnamer�cloudinit.settingsr	�	getLoggerr�rr
rTrrrr�<module>s
l