Viewing File: /usr/lib/python2.7/site-packages/cloudinit/config/cc_migrator.pyc

ó
oBú]c@ssdZddlZddlZddlmZddlmZddlmZeZd„Z	d„Z
d„ZdS(	s%
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>
iÿÿÿÿN(thelpers(tutil(t
PER_ALWAYSc
Cs|jjdƒ|jjdƒf}d}xÛ|D]Ó}|s1tjj|ƒrWq1nxªtj|ƒD]™}tjj||ƒ}tjj|ƒrgtjj	|ƒ\}}t
j|ƒ}||krtjj|||ƒ}	tj
||	ƒ|d7}qqgqgWq1W|S(Ntsemii(tpathst	get_ipatht	get_cpathtostpathtexiststlistdirtjointisfiletsplitextRtcanon_sem_nametshutiltmove(
tcloudRtam_adjustedtsem_pathtpt	full_pathtnametextt
canon_nametnew_path((s@/usr/lib/python2.7/site-packages/cloudinit/config/cc_migrator.pyt_migrate_canon_sems(s$
c
Cs•iddgd6}|jjdƒ|jjdƒf}xW|D]O}|s>tjj|ƒrdq>ntj|ƒ}x|jƒD]	\}}|tj	|ƒg}g}	x]tj
|ƒD]L}
tjj|
ƒ\}}||kr·tjj|
ƒr·|	j
|
ƒq·q·Wx|	D]w}
tjtjj||
ƒƒtjj|
ƒ\}
}x:|D]2}|jd|
|ƒ|j||ƒWdQXqOWqWq€Wq>WdS(Ns
apt-configurespackage-update-upgrade-installsapt-update-upgradeRs*Migrating %s => %s with the same frequency(RRRRRR	RtFileSemaphorestitemsRR
R
RtappendRtdel_fileRtdebugtlock(Rtlogt
legacy_adjustRRt
sem_helpertmod_namet
migrate_tot	possiblest
old_existsRRt_extt_nametfreqtm((s@/usr/lib/python2.7/site-packages/cloudinit/config/cc_migrator.pyt_migrate_legacy_sems:s.
$


	
cCsetj|dtƒ}tj|ƒs8|jd|ƒdSt|ƒ}|jd|ƒt||ƒdS(Ntmigrates,Skipping module named %s, migration disableds8Migrated %s semaphore files to there canonicalized names(Rtget_cfg_option_strtTruettranslate_boolRRR,(RtcfgRR!t_argst
do_migratet
sems_moved((s@/usr/lib/python2.7/site-packages/cloudinit/config/cc_migrator.pythandleWs	(t__doc__RRt	cloudinitRRtcloudinit.settingsRt	frequencyRR,R5(((s@/usr/lib/python2.7/site-packages/cloudinit/config/cc_migrator.pyt<module>s		
Back to Directory File Manager