summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzsdc <taras@vyos.io>2024-02-06 16:09:36 +0200
committerzsdc <taras@vyos.io>2024-02-06 16:21:42 +0200
commitd24e690f49477007ec71a24048fe4402cf88a8d7 (patch)
tree5d1493a4562cf370954e3e151a99004a47fc190a
parent9f8bdf9b7b4b72afa9290ee6b42ecb88a59bf4f8 (diff)
downloadvyos-cloud-init-d24e690f49477007ec71a24048fe4402cf88a8d7.tar.gz
vyos-cloud-init-d24e690f49477007ec71a24048fe4402cf88a8d7.zip
cc_vyos: T6007: Run config migrations before Cloud-init
Configuration in `vyos_config_commands` is expected to use a syntax from the target VyOS version. But, if Cloud-init applies configuration commands to a default file, all the migrations (from the 0 version to the latest) will still be executed on top of it. This process can break proper config, for example, if the current syntax variant partially repeats one of the older ones, which will trigger a migration without need.
-rw-r--r--cloudinit/config/cc_vyos.py4
1 files changed, 4 insertions, 0 deletions
diff --git a/cloudinit/config/cc_vyos.py b/cloudinit/config/cc_vyos.py
index 8f2e7f46..ba0401d9 100644
--- a/cloudinit/config/cc_vyos.py
+++ b/cloudinit/config/cc_vyos.py
@@ -1081,6 +1081,10 @@ def handle(name, cfg, cloud, log, _args):
file_name = cfg_file_name
logger.debug("Using configuration file: {}".format(file_name))
+ # We must run all migrations on the config before Cloud-init will modify it
+ # Otherwise, regardless of proper syntax for the current version, migrations will be re-run with unpredictable result
+ logger.debug("Running migrations for: {}".format(file_name))
+ run(['/usr/libexec/vyos/run-config-migration.py', file_name])
with open(file_name, 'r') as f:
config_file = f.read()
config = ConfigTree(config_file)