name : opensuse.cpython-39.opt-1.pyc
a

'�Dg�'�@s|ddlZddlZddlmZmZmZmZddlmZddlm	Z
ddlmZddl
mZmZe�e�ZGdd�dej�ZdS)	�N)�distros�helpers�subp�util)�PackageList)�	rhel_util)�HostnameConf)�
PER_ALWAYS�PER_INSTANCEc@s�eZdZdZdZdgZdZdZdZdZ	dZ
d	d
ddd
ddd�d�iZdd�Zd/dd�Z
ed�dd�Zd0dd�Zdd�Zdd�dd �Zd1d!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zed-d.��ZdS)2�Distroz/etc/sysconfig/clockz
/etc/HOSTNAMEZservicez/etc/sysconfig/languagez/etc/sysconfig/network/configz
/etc/hostnamez/etc/locale.confz/etc/localtimeZ	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)Zipv4Zipv6)ZcontrolZflavorZiface_templatesZ
netrules_pathZroute_templatescCsTtj�||||�t�|�|_d|_d|_d|_d|d<|�	�rPdg|_
d|d<dS)NrFZsshdZssh_svcnameZ	systemctlzsshd.service)rr�__init__rZRunners�_runnerZosfamily�
update_method�read_only_root�uses_systemd�init_cmd)�self�nameZcfg�paths�r�>/usr/lib/python3.9/site-packages/cloudinit/distros/opensuse.pyr
/szDistro.__init__NcCs>|��r|s|j}d|i}n|s&|j}d|i}t�||�dS)N�LANGZRC_LANG)r�systemd_locale_conf_fn�locale_conf_fn�rhutil�update_sysconfig_file)r�localeZout_fnZ
locale_cfgrrr�apply_locale:s
zDistro.apply_locale)�pkglistcCs|jdd|d�dS)N�installz--auto-agree-with-licenses)�args�pkgs)�package_command)rrrrr�install_packagesEs�zDistro.install_packagescCs|durg}|��|jr2|jdks2t�d�dS|jdkrFddg}ngd�}|dkrZd}|s||jdkr||dkr|d}gd	�}|d
kr�ddg}|�|�|r�t|t�r�|�|�n|r�t|t�r�|�	|�t
�d|�}|�	|�tj|dd
�|jdk�rt�
d�dS)N�
transactionalzUPackage operation requested but read only root without btrfs and transactional-updata�zypper�--non-interactive)�transactional-updater'�--drop-if-no-change�pkgZupgrade�updateZup)r(r'r)�refreshz%s-%sF)Zcapturez8To use/activate the installed packages reboot the system)�_set_update_methodrr�LOG�error�append�
isinstance�str�list�extendrZexpand_package_listr�info)rZcommandr!r"�cmdrrrrr#JsF�

���


�zDistro.package_commandcCsZ|�|�}|��r.t�|j�t�||j�n(dt|�i}t�|j	|�t�
||j�dS)NZTIMEZONE)Z
_find_tz_filerrZdel_file�tz_local_fnZsym_linkr2rr�
clock_conf_fn�copy)rZtzZtz_fileZ	clock_cfgrrr�set_timezone�s
�zDistro.set_timezoneF)�forcecCs$|jjd|jdg|rtntd�dS)Nzupdate-sourcesr,)Zfreq)r�runr#r	r
)rr;rrr�update_package_sources�s
�zDistro.update_package_sourcescCs�|��r |�d�r t�|���S|��rJt�dg�\}}t|�rD|S|Sn4z|�|�}|j}Wnt	ypYn0|sz|S|SdS)N�/previous-hostname�hostname)
r�endswithr�load_text_file�stripr�len�_read_hostname_confr?�IOError)r�filename�default�outZ_err�confr?rrr�_read_hostname�s

zDistro._read_hostnamecCsdS)Nz	127.0.1.1r)rrrr�_get_localhost_ip�szDistro._get_localhost_ipcCstt�|��}|��|S�N)rrrA�parse)rrFrIrrrrD�szDistro._read_hostname_confcCs$|��r|j}n|j}||�|�fSrL)r�systemd_hostname_conf_fn�hostname_conf_fnrJ)rZhost_fnrrr�_read_system_hostname�szDistro._read_system_hostnamecCs�|jdur�t�d�}d}|r�|\}}}t�d��d�}|D]8}|�|�r:|��}|d|kr^q:|d�d�|_qtq:|��d	kr�tj	�
d
�r�d|_q�d|_nt�d
�d|_dS)z7Decide if we want to use transactional-update or zypperN�/�z/proc/mounts�
���roZbtrfsz/usr/sbin/transactional-updater%r&z7Could not determine filesystem type of '/' using zypper)
rrZget_mount_inforA�split�
startswithr�lower�os�path�existsr.r5)r�resultZfs_typeZdevpthZmount_pointZmountsZmountZ
mount_inforrrr-�s,



��zDistro._set_update_methodcCs�t�|jdd�}|��r0|�d�r0t�||�n�|��rj|rRt�ddt|�g�q�t�dddt|�g�ndd}z|�|�}Wn(t	y�|r�nt
�d�YdSYn0|s�td�}|�
|�t�|t|�d	�dS)
N�create_hostname_fileTr>Zhostnamectlzset-hostnamez--transientz7create_hostname_file is False; hostname file notcreatedrRi�)rZget_cfg_option_boolZ_cfgrr@Z
write_filerr2rDrEr.r5rZset_hostname)rr?rFr^rIrrr�_write_hostname�s:���	�
zDistro._write_hostnamecCst|jsnt��d}|d}t|d�d�d�}|dkr@d|vsX|dkrdd|vrd|dkrdgd�|_n
gd	�|_|jS)
z5The preferred ntp client is dependent on the version.ZdistrrT�.�ZopenSUSE�*)�chrony�systemd-timesyncd�ntp)rerdrc)Z_preferred_ntp_clientsrZsystem_info�intrW)rZdistro_inforZ	major_verrrr�preferred_ntp_clientss���
zDistro.preferred_ntp_clients)N)NN)N)�__name__�
__module__�__qualname__r8rOrrZnetwork_conf_fnrNrr7Zrenderer_configsr
rrr$r#r:r=rJrKrDrPr-r_�propertyrgrrrrrs@���

=
&r)ZloggingrZZ	cloudinitrrrrZcloudinit.distrosrrrZ"cloudinit.distros.parsers.hostnamerZcloudinit.settingsr	r
Z	getLoggerrhr.rrrrr�<module>s


© 2025 Cubjrnet7