Task T4295 proposes to replace the use of the legacy vyatta backend loadFile command within the vyos-load-config.py script. The approach is as follows: we separate the concerns of two legacy subsystems, the vyatta config diff algorithm, and the vyatta set/delete command subsystem. We replace the former diff algorithm with a revised algorithm operating on the config_tree date structure (T4235); the resulting diff is then fed into the set/delete command subsystem within the CLI. Note that we remain tied to the latter subsystem under the current CLI.
This however exposes existing errors in migration scripts, as the modern validation system for set/delete commands is strict, as compared to the legacy loadFile operation which will print errors, but treat them as non-fatal, allowing a subsequent commit to succeed while suppressing any offending paths.
A simple example is seen in the smoketest configtest config 'bgp-azure-ipsec-gateway':
The ipsec migration script 5-to-6 will move 'vpn ipsec ipec-interfaces inteface', but leave the (now empty) path 'vpn ipsec ipsec-interfaces'. For the legacy loadFile, this is reported, non-fatal, and the path is ignored; as migrated set/delete commands, it is fatal.
The planned and required revisions are desirable: (1) replace the legacy algortihm in config loading, which allows for future development (2) resolve missing details in migration scripts, since strict validation will be the standard going forward.