File: //usr/lib/python3/dist-packages/cloudinit/config/__pycache__/cc_migrator.cpython-39.pyc
a
��`L � @ sX d Z ddlZddlZddlmZ ddlmZ ddlmZ eZdd� Z dd � Z
d
d� ZdS )a%
Migrator
--------
**Summary:** migrate old versions of cloud-init data to new
This module handles moving old versions of cloud-init data to newer ones.
Currently, it only handles renaming cloud-init's per-frequency semaphore files
to canonicalized name and renaming legacy semaphore names to newer ones. This
module is enabled by default, but can be disabled by specifying ``migrate:
false`` in config.
**Internal name:** ``cc_migrator``
**Module frequency:** per always
**Supported distros:** all
**Config keys**::
migrate: <true/false>
� N)�helpers)�util)�
PER_ALWAYSc
C s� | j �d�| j �d�f}d}|D ]�}|r tj�|�s6q t�|�D ]f}tj�||�}tj�|�r@tj� |�\}}t
�|�}||kr@tj�||| �} t�
|| � |d7 }q@q |S )N�semr � )�paths� get_ipath� get_cpath�os�path�exists�listdir�join�isfile�splitextr �canon_sem_name�shutil�move)
�cloudr Zam_adjusted�sem_path�p� full_path�name�ext�
canon_name�new_path� r �>/usr/lib/python3/dist-packages/cloudinit/config/cc_migrator.py�_migrate_canon_sems( s
r c C s$ dddgi}| j �d�| j �d�f}|D ]�}|r(tj�|�s>q(t�|�}|�� D ]�\}}|t� |�g}g } t�
|�D ]2}
tj�|
�\}}||v rttj�|
�rt| �
|
� qt| D ]n}
t�tj�||
�� tj�|
�\}
}|D ]@}|�d|
|� |�||�� W d � q�1 �s0 Y q�q�qPq(d S )Nzapt-update-upgradez
apt-configurezpackage-update-upgrade-installr z*Migrating %s => %s with the same frequency)r r r r
r r r �FileSemaphores�itemsr r
r r �appendr �del_filer �debug�lock)r �logZ
legacy_adjustr r Z
sem_helper�mod_nameZ
migrate_toZ possiblesZ
old_existsr r Z_ext�_name�freq�mr r r �_migrate_legacy_sems: s4 ��
�r* c C sJ t �|dd�}t �|�s(|�d| � d S t|�}|�d|� t||� d S )NZmigrateTz,Skipping module named %s, migration disabledz8Migrated %s semaphore files to there canonicalized names)r �get_cfg_option_str�translate_boolr# r r* )r �cfgr r% �_argsZ
do_migrateZ
sems_movedr r r �handleW s
�r/ )�__doc__r
r � cloudinitr r �cloudinit.settingsr � frequencyr r* r/ r r r r �<module> s