܍~c UdZddlZddlZddlmZddlmZmZddlm Z ddl m Z ddl m Z mZddlmZd Zd gZeZd d d eedgegdZe ed<eeZdZdZdede de dededdf dZdS)z8Migrator: Migrate old versions of cloud-init data to newN)Logger)helpersutil)Cloud)Config) MetaSchema get_meta_doc) PER_ALWAYSaEThis 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. all cc_migratorMigratorz.Migrate old versions of cloud-init data to newz6# Do not migrate cloud-init semaphores migrate: false )idnametitle descriptiondistrosexamples frequencyactivate_by_schema_keysmetac^|jd|jdf}d}|D]}|rtj|s$tj|D]}tj||}tj|rytj |\}}tj |}||kr=tj|||z} tj || |dz }|S)Nsemr)paths get_ipath get_cpathospathexistslistdirjoinisfilesplitextrcanon_sem_nameshutilmove) cloudr am_adjustedsem_pathp full_pathrext canon_namenew_paths >/usr/lib/python3/dist-packages/cloudinit/config/cc_migrator.py_migrate_canon_semsr0,s [ " "5 ) )5;+@+@+G+G HEK % % rw~~h77  H%% % %A Xq11Iw~~i(( % g..q11 s$3D99 %%!w||Hj36FGGHK 84441$K % c dddgi}|jd|jdf}|D]}|rtj|s%t j|}|D]3\}}|t j |g}g} tj |D]\} tj | \} } | |vr4tj | r| | ]| D]} tjtj|| tj | \} }|D]H}|d| ||||5 dddn #1swxYwYI5dS)Nzapt-update-upgradez apt-configurezpackage-update-upgrade-installrz*Migrating %s => %s with the same frequency)rrrrrrrFileSemaphoresitemsr$r r#r"appendrdel_filer!debuglock)r'log legacy_adjustrr) sem_helpermod_name migrate_to possibles old_existsr*r_ext_namefreqms r/_migrate_legacy_semsrD>s  , M [ " "5 ) )5;+@+@+G+G HE rw~~h77  +H55 &3&9&9&;&;   "Xz!7#9(#C#CDIJZ)) ) )!w//22 t9$$):):$%%a(((   bgll8Q77888 " 0 0 3 3 #AIIDa$D11    s"F0 0F47F4rcfgr'r9argsreturnctj|dd}tj|s|d|dSt |}|d|t ||dS)NmigrateTz,Skipping module named %s, migration disabledz8Migrated %s semaphore files to there canonicalized names)rget_cfg_option_strtranslate_boolr7r0rD)rrEr'r9rF do_migrate sems_moveds r/handlerN\s(i>>J  z * * @$GGG$U++JIIBJ$$$$$r1)__doc__rr%loggingr cloudinitrrcloudinit.cloudrcloudinit.configrcloudinit.config.schemarr cloudinit.settingsr MODULE_DESCRIPTIONrrr__annotations__r0rDstrlistrNr1r/r[sg?>> ########!!!!!!######<<<<<<<<)))))) '     =%KL!  j    ,t  $< %  % %#( %/5 %=A %  % % % % % %r1