Your IP : 216.73.217.13


Current Path : /usr/lib/python3/dist-packages/cloudinit/distros/__pycache__/
Upload File :
Current File : //usr/lib/python3/dist-packages/cloudinit/distros/__pycache__/debian.cpython-38.pyc

U

�Adp5�@s�ddlZddlZddlZddlmZmZddlmZddlmZm	Z	ddl
mZddlm
Z
e�e�ZdZdZd	d
d�ZdZd
ZdZddddgZGdd�dej�Zdd�Zd!dd�Zedfdd�Zd"dd�Zd#dd �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--quietZ	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/localez/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!�Zd0d"d#�Zefd$d%�Zd1d&d'�Zd(d)�Zd*d+�Zd,d-�Z�ZS)2�Distroz
/etc/hostnamer
z/etc/netplan/50-cloud-init.yaml)�eni�netplanr)Zeni_pathZ
eni_headerrT)Znetplan_pathZnetplan_headerZpostcmdscCs4tj�||||�t�|�|_d|_d|_d|_dS)NZdebianzen_US.UTF-8)	rr�__init__rZRunners�_runnerZosfamily�default_locale�
system_locale)�self�nameZcfg�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�rrrr�
get_localeXs�zDistro.get_localeN�LANGc	Cs�|st}|std��|��}tj�|�}|jr2dnd}|��|��kpN|pN|}|p\|p\|}|rrt|||d�nt	�
d||j|�|r�t|||d�d|_dS)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�localeZout_fnrZ
distro_localeZconf_fn_existsZsys_locale_unsetZ
need_regenZ	need_confrrr�apply_localeds0���zDistro.apply_localecCs|��|jd|d�dS)N�install)�pkgs)�update_package_sources�package_command)r�pkglistrrr�install_packages�szDistro.install_packagescst�t�j||�S�N)�_maybe_remove_legacy_eth0�super�_write_network_state)r�args�kwargs��	__class__rrr4�szDistro._write_network_statecCsTd}z|�|�}Wntk
r&YnX|s4td�}|�|�t�|t|�d�dS)N�i�)�_read_hostname_conf�IOErrorrZset_hostnamerZ
write_file�str)r�hostname�filename�confrrr�_write_hostname�s
zDistro._write_hostnamecCs|�|j�}|j|fSr1)�_read_hostname�hostname_conf_fn)rZsys_hostnamerrr�_read_system_hostname�szDistro._read_system_hostnamecCstt�|��}|��|Sr1)rr�	load_file�parse)rr>r?rrrr:�szDistro._read_hostname_confcCs:d}z|�|�}|j}Wntk
r,YnX|s6|S|Sr1)r:r=r;)rr>�defaultr=r?rrrrA�s

zDistro._read_hostnamecCsdS)Nz	127.0.1.1rrrrr�_get_localhost_ip�szDistro._get_localhost_ipcCstj||�|�d�dS)N)�tzZtz_file)rZset_etc_timezoneZ
_find_tz_file)rrHrrr�set_timezone�szDistro.set_timezonec
Csz|dkrt}|D]d}tj�|�s"qt|d��B}zt�|tjtjB�Wn"t	k
rhYW5QR�dSXW5QRXqdS)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�lockfZLOCK_EXZLOCK_NB�OSError)rZ
lock_files�lockZhandlerrr�_apt_lock_available�s zDistro._apt_lock_availablecCs�t��}t�d�t��||kr�|��s6t�d�qt�d�z.d|d�|d�f}tjtj|tj|d�WStj	k
r�|��r��t�d�t�d�YqXqt
d	��d
S)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]� r5)Zlogfunc�msg�funcr6z*Another process holds apt lock. Waiting...zCould not get apt lockN)�timer&r'rQ�sleep�joinrZlog_timerZProcessExecutionError�TimeoutError)r�	short_cmd�subp_kwargsZtimeoutZ
start_timeZlog_msgrrr�_wait_for_apt_command�s0


��
zDistro._wait_for_apt_commandc	Cs�|dkrg}tj��}d|d<|�dt�}t|�dtd�|�dtd��}|�t|�dt	���|r|t
|t�r||�|�n|r�t
|t�r�|�|�|}|dkr�|�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
        NZnoninteractiveZDEBIAN_FRONTENDZapt_get_wrapperrrZapt_get_commandZupgradeZapt_get_upgrade_subcommandzdist-upgrade�%s=%sF)r5�env�capture)rZr[)r!�environ�copyZ
get_option�APT_GET_WRAPPER�_get_wrapper_prefix�get�extend�list�APT_GET_COMMAND�
isinstancer<�appendrZexpand_package_listr\)	rrr5r,�eZwcfg�cmdZsubcmdr/rrrr.�s6

�
�


�zDistro.package_commandcCs|jjd|jdgtd�dS)Nzupdate-sources�update)Zfreq)r�runr.rrrrrr-$s�zDistro.update_package_sourcescCst��Sr1)rZget_dpkg_architecturerrrr�get_primary_arch,szDistro.get_primary_archcCs$tj�|||||�|�dd�dS)NZrestartz
console-setup)rr�
set_keymapZmanage_service)rZlayoutZmodelZvariantZoptionsrrrro/szDistro.set_keymap)Nr)N)N)NN)�__name__�
__module__�__qualname__rBZnetwork_conf_fn�NETWORK_FILE_HEADERZrenderer_configsrrr*r0r4r@rCr:rArGrIrQ�APT_LOCK_WAIT_TIMEOUTr\r.r-rnro�
__classcell__rrr7rr<s<����

$


�
,
.rcCsPt|t�rt|�g}t�|�sDt|���dkrH|drHt�|d�rH|SgSdS)Nr
r)rhr<rZis_truer$rZwhich)rk�moderrrrc7s


���rc�"/etc/network/interfaces.d/eth0.cfgcCs�tj�|�sdSd}zPt�|�}ddg}dd�|��D�}||krVt�|�d|}n|d|}Wn tk
r�|d	|}YnXt�	|�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�frrr�
<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#rrD�
splitlinesZdel_file�	Exceptionr&Zwarning)r"Zbmsg�contentsZknown_contents�linesrTrrrr2Cs 
�

r2rcCsDd}|std|��tj�|�r@t�|�}t�|�}|�|d�}|S)z.Read system default locale setting, if presentr9zInvalid path: %s)r r!r"r#rrDZload_shell_contentrd)�sys_pathrZsys_valZlocale_contentZsys_defaultsrrrrcs

rcCs4t�d|||�tjdd|d||fgdd�dS)zUpdate system locale configz%Updating %s with locale setting %s=%sz
update-localez--locale-file=r]F�r_N)r&r'r�r)r�rrrrr(qs�
��r(cCs@|��dkrt�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$r&r'rr�rrrr%�s
r%)rw)r)r)rMr!rVZ	cloudinitrrrZloggingrrZ"cloudinit.distros.parsers.hostnamerZcloudinit.settingsrZ	getLoggerrpr&rtrgrbrsZNETWORK_CONF_FNrrKrrcr2rr(r%rrrr�<module>
s8
�	�|