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__/opensuse.cpython-310.pyc
o

�Adm%�@sxddlZddlmZmZddlmZddlmZmZddlm	Z
ddlmZddl
mZe�e�ZGdd	�d	ej�ZdS)
�N)�distros�helpers)�log)�subp�util)�	rhel_util)�HostnameConf)�PER_INSTANCEc@s�eZdZdZdZdgZdZdZdZdZ	dZ
d	Zd
Zddd
ddddd�d�iZ
dd�Zd.dd�Zdd�Zd/dd�Zdd�Zdd�Zd.d d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zed,d-��ZdS)0�Distroz/etc/sysconfig/clockz
/etc/HOSTNAME�servicez/etc/sysconfig/languagez/etc/sysconfig/network/configz/etc/sysconfig/network/ifcfg-%sz!/etc/sysconfig/network/ifroute-%sz
/etc/hostnamez/etc/locale.confz/etc/localtime�	sysconfigzetc/sysconfig/network/config�susez%(base)s/network/ifcfg-%(name)sz3etc/udev/rules.d/85-persistent-net-cloud-init.rulesz!%(base)s/network/ifroute-%(name)s)�ipv4�ipv6)�control�flavor�iface_templates�
netrules_path�route_templatescCsXtj�||||�t�|�|_d|_d|_d|_d|d<|�	�r*dg|_
d|d<dSdS)Nr
F�sshd�ssh_svcname�	systemctlzsshd.service)rr
�__init__r�Runners�_runner�osfamily�
update_method�read_only_root�uses_systemd�init_cmd)�self�name�cfg�paths�r$�</usr/lib/python3/dist-packages/cloudinit/distros/opensuse.pyr1s�zDistro.__init__NcCs>|��r|s	|j}d|i}n	|s|j}d|i}t�||�dS)N�LANG�RC_LANG)r�systemd_locale_conf_fn�locale_conf_fn�rhutil�update_sysconfig_file)r �locale�out_fn�
locale_cfgr$r$r%�apply_locale<s
zDistro.apply_localecCs|jdd|d�dS)N�installz--auto-agree-with-licenses)�args�pkgs)�package_command)r �pkglistr$r$r%�install_packagesGs
�zDistro.install_packagescCs|durg}|��|jr|jdkst�d�dS|jdkr#ddg}ngd�}|dkr-d}|s>|jdkr>|dkr>d}gd	�}|d
krFddg}|�|�|rXt|t�rX|�|�n|rdt|t�rd|�	|�t
�d|�}|�	|�tj|dd
�|jdkr�t�
d�dSdS)N�
transactionalzUPackage operation requested but read only root without btrfs and transactional-updata�zypper�--non-interactive)�transactional-updater8�--drop-if-no-change�pkg�upgrade�update�up)r9r8r:�refreshz%s-%sF)�capturez8To use/activate the installed packages reboot the system)�_set_update_methodrr�LOG�error�append�
isinstance�str�list�extendr�expand_package_listr�info)r �commandr1r2�cmdr4r$r$r%r3LsH�

���



��zDistro.package_commandcCs\|�|�}|��rt�|j�t�||j�dSdt|�i}t�|j	|�t�
||j�dS)N�TIMEZONE)�
_find_tz_filerr�del_file�tz_local_fn�sym_linkrFr*r+�
clock_conf_fn�copy)r �tz�tz_file�	clock_cfgr$r$r%�set_timezone�s
�zDistro.set_timezonecCs|jjd|jdgtd�dS)Nzupdate-sourcesr?)�freq)r�runr3r	�r r$r$r%�update_package_sources�s
�zDistro.update_package_sourcescCs||��r|�d�rt�|���S|��r$t�dg�\}}t|�r"|S|Sz
|�|�}|j}Wn	t	y7Ynw|s<|S|S)N�/previous-hostname�hostname)
r�endswithr�	load_file�stripr�len�_read_hostname_confr]�IOError)r �filename�default�out�_err�confr]r$r$r%�_read_hostname�s 

�zDistro._read_hostnamecCsdS)Nz	127.0.1.1r$rZr$r$r%�_get_localhost_ip�szDistro._get_localhost_ipcCstt�|��}|��|S�N)rrr_�parse)r rdrhr$r$r%rb�szDistro._read_hostname_confcCs$|��r|j}n|j}||�|�fSrk)r�systemd_hostname_conf_fn�hostname_conf_fnri)r �host_fnr$r$r%�_read_system_hostname�szDistro._read_system_hostnamecCs�|jdurZt�d�}d}|rP|\}}}t�d��d�}|D]}|�|�r9|��}|d|kr/q|d�d�|_nq|��d	krKtj	�
d
�rKd|_dSd|_dSt�d
�d|_dSdS)z7Decide if we want to use transactional-update or zypperN�/�z/proc/mounts�
���ro�btrfsz/usr/sbin/transactional-updater6r7z7Could not determine filesystem type of '/' using zypper)
rr�get_mount_infor_�split�
startswithr�lower�os�path�existsrBrJ)r �result�fs_type�devpth�mount_point�mounts�mount�
mount_infor$r$r%rA�s0



��

�
�zDistro._set_update_methodcCs�|��r|�d�rt�||�dS|��r!t�ddt|�g�dSd}z|�|�}Wn	ty3Ynw|s:td�}|�	|�t�|t|�d�dS)Nr\�hostnamectlzset-hostnamerri�)
rr^r�
write_filerrFrbrcr�set_hostname)r r]rdrhr$r$r%�_write_hostname�s�
zDistro._write_hostnamecCsx|js9t��d}|d}t|d�d�d�}|dkr d|vs,|dkr4d|vr4|dkr4gd�|_|jSgd	�|_|jS)
z5The preferred ntp client is dependent on the version.�distrrt�.��openSUSE�*)�chrony�systemd-timesyncd�ntp)r�r�r�)�_preferred_ntp_clientsr�system_info�intry)r �distro_infor!�	major_verr$r$r%�preferred_ntp_clients�s���

�zDistro.preferred_ntp_clientsrk)NN)�__name__�
__module__�__qualname__rRrnrr)�network_conf_fn�network_script_tpl�route_conf_tplrmr(rP�renderer_configsrr/r5r3rWr[rirjrbrprAr��propertyr�r$r$r$r%r
sF���

=
r
)r|�	cloudinitrrr�loggingrr�cloudinit.distrosrr*�"cloudinit.distros.parsers.hostnamer�cloudinit.settingsr	�	getLoggerr�rBr
r$r$r$r%�<module>s