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

�Adp5�@s�ddlZddlZddlZddlmZmZddlmZddlmZm	Z	ddl
mZddlm
Z
e�e�ZdZdZd	d
d�ZdZd
ZdZgd�ZGdd�dej�Zdd�Zddd�Zedfdd�Zddd�Zddd�ZdS) �N)�distros�helpers)�log)�subp�util)�HostnameConf)�PER_INSTANCE�)zapt-getz(--option=Dpkg::Options::=--force-confoldz*--option=Dpkg::options::=--force-unsafe-ioz--assume-yesz--quiet�	eatmydata�auto)�command�enableda8# 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}
�'/etc/network/interfaces.d/50-cloud-initz/etc/default/locale)z/var/lib/dpkg/lock-frontendz/var/lib/dpkg/lockz/var/cache/apt/archives/lockz/var/lib/apt/lists/lockcs�eZdZdZddd�Zeded�ededd	�d�Zd
d�Zdd
�Zd.dd�Z	dd�Z
�fdd�Zdd�Zdd�Z
dd�Zd/dd�Zdd�Zd d!�Zd/d"d#�Zefd$d%�Zd0d&d'�Zd(d)�Zd*d+�Zd,d-�Z�ZS)1�Distroz
/etc/hostnamerz/etc/netplan/50-cloud-init.yaml)�eni�netplanr)�eni_path�
eni_headerrT)�netplan_path�netplan_header�postcmdscCs4tj�||||�t�|�|_d|_d|_d|_dS)N�debianzen_US.UTF-8)	rr�__init__r�Runners�_runner�osfamily�default_locale�
system_locale)�self�name�cfg�paths�r"�:/usr/lib/python3/dist-packages/cloudinit/distros/debian.pyrNs

zDistro.__init__cCs |jst�|_|jr
|jS|jS)z9Return the default locale if set, else use default locale)r�read_system_localer�rr"r"r#�
get_localeXs
��zDistro.get_localeN�LANGc	Cs�|st}|s
td��|��}tj�|�}|jrdnd}|��|��kp'|p'|}|p.|p.|}|r9t|||d�n	t	�
d||j|�|rPt|||d�d|_dSdS)zeApply specified locale to system, regenerate if specified locale
        differs from system default.zFailed to provide locale value.FT)�keynamez9System has '%s=%s' requested '%s', skipping regeneration.N)�LOCALE_CONF_FN�
ValueErrorr&�os�path�existsr�lower�regenerate_locale�LOG�debug�update_locale_conf)	r�locale�out_fnr(�
distro_locale�conf_fn_exists�sys_locale_unset�
need_regen�	need_confr"r"r#�apply_localeds2���
�zDistro.apply_localecCs|��|jd|d�dS)N�install)�pkgs)�update_package_sources�package_command)r�pkglistr"r"r#�install_packages�szDistro.install_packagescst�t�j|i|��S�N)�_maybe_remove_legacy_eth0�super�_write_network_state)r�args�kwargs��	__class__r"r#rD�szDistro._write_network_statecCsRd}z|�|�}Wn	tyYnw|std�}|�|�t�|t|�d�dS)N�i�)�_read_hostname_conf�IOErrorr�set_hostnamer�
write_file�str)r�hostname�filename�confr"r"r#�_write_hostname�s�
zDistro._write_hostnamecCs|�|j�}|j|fSrA)�_read_hostname�hostname_conf_fn)r�sys_hostnamer"r"r#�_read_system_hostname�s
zDistro._read_system_hostnamecCstt�|��}|��|SrA)rr�	load_file�parse)rrPrQr"r"r#rJ�szDistro._read_hostname_confcCs8d}z
|�|�}|j}Wn	tyYnw|s|S|SrA)rJrOrK)rrP�defaultrOrQr"r"r#rS�s

�zDistro._read_hostnamecCsdS)Nz	127.0.1.1r"r%r"r"r#�_get_localhost_ip�szDistro._get_localhost_ipcCstj||�|�d�dS)N)�tz�tz_file)r�set_etc_timezone�
_find_tz_file)rr[r"r"r#�set_timezone�szDistro.set_timezonec
Cs�|durt}|D]<}tj�|�sqt|d��&}zt�|tjtjB�Wnt	y4YWd�dSwWd�n1s?wYqdS)ztDetermines if another process holds any apt locks.

        If all locks are clear, return True else False.
        N�wFT)
�APT_LOCK_FILESr+r,r-�open�fcntl�lockf�LOCK_EX�LOCK_NB�OSError)r�
lock_files�lock�handler"r"r#�_apt_lock_available�s ����zDistro._apt_lock_availablecCs�t��}t�d�t��||krY|��st�d�q	t�d�zd|d�|d�f}tjtj|tj|d�WStj	yP|��rD�t�d�t�d�Ynwt��||kst
d	��)
z�Wait for apt install to complete.

        short_cmd: Name of command like "upgrade" or "install"
        subp_kwargs: kwargs to pass to subp
        zWaiting for apt lock�zapt lock availablezapt-%s [%s]� rE)�logfunc�msg�funcrFz*Another process holds apt lock. Waiting...zCould not get apt lock)�timer0r1rk�sleep�joinr�log_timer�ProcessExecutionError�TimeoutError)r�	short_cmd�subp_kwargs�timeout�
start_time�log_msgr"r"r#�_wait_for_apt_command�s4


��
�� zDistro._wait_for_apt_commandc	Cs�|durg}tj��}d|d<|�dt�}t|�dtd�|�dtd��}|�t|�dt	���|r>t
|t�r>|�|�n|rJt
|t�rJ|�|�|}|dkrV|�d	d
�}|�|�t
�d|�}|�|�|j|||dd
�d�dS)aYRun the given package command.

        On Debian, this will run apt-get (unless APT_GET_COMMAND is set).

        command: The command to run, like "upgrade" or "install"
        args: Arguments passed to apt itself in addition to
              any specified in APT_GET_COMMAND
        pkgs: Apt packages that the command will apply to
        N�noninteractive�DEBIAN_FRONTEND�apt_get_wrapperrr
�apt_get_command�upgrade�apt_get_upgrade_subcommandzdist-upgrade�%s=%sF)rE�env�capture)rwrx)r+�environ�copy�
get_option�APT_GET_WRAPPER�_get_wrapper_prefix�get�extend�list�APT_GET_COMMAND�
isinstancerN�appendr�expand_package_listr|)	rrrEr<�e�wcfg�cmd�subcmdr?r"r"r#r>�s4

�
�



�zDistro.package_commandcCs|jjd|jdgtd�dS)Nzupdate-sources�update)�freq)r�runr>rr%r"r"r#r=$s
�zDistro.update_package_sourcescCst��SrA)r�get_dpkg_architecturer%r"r"r#�get_primary_arch,szDistro.get_primary_archcCs$tj�|||||�|�dd�dS)N�restartz
console-setup)rr�
set_keymap�manage_service)r�layout�model�variant�optionsr"r"r#r�/szDistro.set_keymap)Nr'rA)NN)�__name__�
__module__�__qualname__rT�network_conf_fn�NETWORK_FILE_HEADER�renderer_configsrr&r:r@rDrRrVrJrSrZr_rk�APT_LOCK_WAIT_TIMEOUTr|r>r=r�r��
__classcell__r"r"rGr#r<s>����

$



�
,.rcCsLt|t�r
t|�g}t�|�s"t|���dkr$|dr$t�|d�r$|SgS)Nrr)r�rNr�is_truer.r�which)r��moder"r"r#r�7s


���r��"/etc/network/interfaces.d/eth0.cfgcCs�tj�|�sdSd}z(t�|�}ddg}dd�|��D�}||kr+t�|�d|}n|d|}WntyA|d	|}Ynwt�	|�dS)
aOUbuntu 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 eth0ziface eth0 inet dhcpcSsg|]}|�d�s|���qS)�#)�
startswith�strip)�.0�fr"r"r#�
<listcomp>Us

��z-_maybe_remove_legacy_eth0.<locals>.<listcomp>zremoved %s with known contentsz* '%s' exists with user configured content.z" %s exists, but could not be read.)
r+r,r-rrW�
splitlines�del_file�	Exceptionr0�warning)r,�bmsg�contents�known_contents�linesror"r"r#rBCs$
�

��rBr'cCsDd}|s
td|��tj�|�r t�|�}t�|�}|�|d�}|S)z.Read system default locale setting, if presentrIzInvalid path: %s)r*r+r,r-rrW�load_shell_contentr�)�sys_pathr(�sys_val�locale_content�sys_defaultsr"r"r#r$cs

r$cCs4t�d|||�tjdd|d||fgdd�dS)zUpdate system locale configz%Updating %s with locale setting %s=%sz
update-localez--locale-file=r�F�r�N)r0r1r�r3r�r(r"r"r#r2qs�
�
�r2cCs@|��dvrt�d||�dSt�d|�tjd|gdd�dS)z�
    Run locale-gen for the provided locale and set the default
    system variable `keyname` appropriately in the provided `sys_path`.

    )�czc.utf-8�posixz$%s=%s does not require rengenerationNzGenerating locales for %sz
locale-genFr�)r.r0r1rr�r"r"r#r/�s
r/)r�)r')rcr+rq�	cloudinitrrr�loggingrr�"cloudinit.distros.parsers.hostnamer�cloudinit.settingsr�	getLoggerr�r0r�r�r�r��NETWORK_CONF_FNr)rarr�rBr$r2r/r"r"r"r#�<module>s2	
�|