3 \me @sUdZddlZddlZddlZddlmZmZddlmZddl m Z ddl m Z m Z ddlmZdZd gZeZd d d eed gegdZe e eZejeZddZddZee eeddddZdS)z8Migrator: Migrate old versions of cloud-init data to newN)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. allZ cc_migratorZMigratorz.Migrate old versions of cloud-init data to newz6# Do not migrate cloud-init semaphores migrate: false )idnametitle descriptiondistrosZexamples frequencyZactivate_by_schema_keysc Cs|jjd|jjdf}d}x|D]}| s"tjj| r %s with the same frequency)rrrrrrrZFileSemaphoresitemsrrrrappendrZdel_filerLOGdebuglock)rZ legacy_adjustrrZ sem_helperZmod_nameZ migrate_toZ possiblesZ old_existsr r Z_ext_nameZfreqmr#r#r$_migrate_legacy_sems?s.     r-)r cfgrargsreturncCsHtj|dd}tj|s(tjd|dSt|}tjd|t|dS)NZmigrateTz,Skipping module named %s, migration disabledz8Migrated %s semaphore files to there canonicalized names)rZget_cfg_option_strZtranslate_boolr(r)r%r-)r r.rr/Z do_migrateZ sems_movedr#r#r$handle]s  r1)__doc__ZloggingrrZ cloudinitrrZcloudinit.cloudrZcloudinit.configrZcloudinit.config.schemarrZcloudinit.settingsrZMODULE_DESCRIPTIONrrmetaZ getLogger__name__r(r%r-strlistr1r#r#r#r$s0