HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //snap/core22/current/usr/lib/python3/dist-packages/cloudinit/cmd/__pycache__/clean.cpython-310.pyc
o

쑛h��@sdZddlZddlZddlZddlZddlZddlmZmZddl	m
Z
ddlmZddl
mZddlmZddlmZdd	lmZmZmZdd
lmZmZmZmZmZe�e�ZdZ edd
dddgZ!dgZ"ddd�Z#ddd�Z$dd�Z%dd�Z&edkr�e&�dSdS)zFDefine 'clean' utility and handler as part of cloud-init command line.�N)�settings�sources)�	cc_mounts)�uses_systemd)�log_util)�CLOUDINIT_NETPLAN_FILE)�Init)�ProcessExecutionError�runparts�subp)�del_dir�del_file�get_config_logfiles�is_link�
write_filez/etc/machine-idz-/etc/NetworkManager/conf.d/99-cloud-init.confz?/etc/NetworkManager/conf.d/30-cloud-init-ip6-addr-gen-mode.confz@/etc/NetworkManager/system-connections/cloud-init-*.nmconnectionz,/etc/systemd/network/10-cloud-init-*.networkz+/etc/network/interfaces.d/50-cloud-init.cfgz)/etc/ssh/sshd_config.d/50-cloud-init.confc	Cs�|s	tjddd�}|jdddddd	d
�|jddddd
�|jdddddd
�|jddddddd
�|jddgd�gdddd�|S)a#Build or extend an arg parser for clean utility.

    @param parser: Optional existing ArgumentParser instance representing the
        clean subcommand which will be extended to support the args of
        this utility.

    @returns: ArgumentParser with proper argument configuration.
    �cleanzJRemove logs, configs and artifacts so cloud-init re-runs on a clean system)�prog�descriptionz-lz--logs�
store_trueF�remove_logszRemove cloud-init logs.)�action�default�dest�helpz--machine-idz�Set /etc/machine-id to 'uninitialized
' for golden imagecreation. On next boot, systemd generates a new machine-id. Remove /etc/machine-id on non-systemd environments.)rrrz-rz--rebootz;Reboot system after logs are cleaned so cloud-init re-runs.z-sz--seed�remove_seedz5Remove cloud-init seed directory /var/lib/cloud/seed.z-cz	--configs)�all�
ssh_config�network�
datasource�fstab�+�
remove_configzbRemove cloud-init generated config files of a certain type. Config types: all, ssh_config, network)�choicesr�nargsrr)�argparse�ArgumentParser�add_argument��parser�r)�5/usr/lib/python3/dist-packages/cloudinit/cmd/clean.py�
get_parser-sX	���
���r+Fc
Cs|��|rt|j�D]}t|�q|r.t|��ddg�r.tD]}t�|�D]}t|�q&q|rBt|��ddg�rBtD]}t|�q;|rQt|��ddg�rQt	�
�|o[t|��ddg�}tj�
|jj�sotjdttjd�dS|r�z|����Wntjy�tjd	ttjd�Ynwtj�|jjd
�}t�d|jj�D]=}||kr�|s�q�ztj�
|�r�t|�s�t|�nt|�Wq�ty�}	zt�d�|t|	���WYd
}	~	dSd
}	~	wwzt t!j"�WdSt#�y}	zt�dt!j"�d|	���WYd
}	~	dSd
}	~	ww)a�Helper which removes artifacts dir and optionally log files.

    @param: init: Init object to use
    @param: remove_logs: Boolean. Set True to delete the cloud_dir path. False
        preserves them.
    @param: remove_seed: Boolean. Set True to also delete seed subdir in
        paths.cloud_dir.
    @param: remove_config: List of strings.
        Can be any of: all, network, ssh_config, datasource, fstab.
    @returns: 0 on success, 1 otherwise.
    rrrrrzArtifacts already cleaned.)�log�	log_levelrz%No datasource found, nothing cleaned.�seedz%s/*zCould not remove {0}: {1}N�zFailure during run-parts of z: )$�read_cfgr�cfgr
�set�intersection�GEN_NET_CONFIG_FILES�glob�GEN_SSH_CONFIG_FILESr�
cleanup_fstab�os�path�isdir�paths�	cloud_dirr�	multi_log�LOG�logging�INFO�fetchrr�DataSourceNotFoundException�joinrr�OSError�error�format�strr
r�CLEAN_RUNPARTS_DIR�	Exception)
�initrrr!�log_filer9�conf�clean_datasource�	seed_path�er)r)r*�remove_artifactsrsx

��
��
��
�������rPc
Cs�tgd�}t||j|j|j�}|jr!t�rttddd�nt	t�|dkr[|j
r[|jjdddd	�}z	t
|d
d�W|StyZ}zt�d�|t|���d
}WYd}~|Sd}~ww|S)z3Handle calls to 'cloud-init clean' as a subcommand.)�ds_depszuninitialized
i$)�moder�reboot�nowN)rR�delay�messageF)�capturez-Could not reboot this system using "{0}": {1}r/)rrPrrr!�
machine_idrr�ETC_MACHINE_IDr
rS�distro�shutdown_commandrr	rrErFrG)�name�argsrJ�	exit_code�cmdrOr)r)r*�handle_clean_args�s4
�������r`cCst�}t�td|����dS)z4Tool to collect and tar all cloud-init related logs.rN)r+�sys�exitr`�
parse_argsr'r)r)r*�main�srd�__main__)N)FN)'�__doc__r$r5r?r8ra�	cloudinitrr�cloudinit.configr�cloudinit.distrosr�
cloudinit.logr�cloudinit.net.netplanr�cloudinit.stagesr�cloudinit.subpr	r
r�cloudinit.utilrr
rrr�	getLogger�__name__r>rYr4r6r+rPr`rdr)r)r)r*�<module>s@
�	�

EH
�