This is a pretty big release in term of refactoring/cleanup, and will allow to add more features in the future, and make some testing way easier!
Required changes in the configuration
As packagers were introduced (see the changelog for details), modifications should be done in the configuration file. Any current configuration file should continue to work, but a warning will be print to advice the changes to be applied.
Change any usage of `compress` and `compress_lvl` to `packager` and `packager_opts`: https://github.com/aruhier/virt-backup/blob/9fac0813433cacb560a52224c695ef85e8548494/example/config.yml#L51
Changelog
**Features:**
* zstd backup compression. It requires the python package `zstandard` to be installed in order to use it.
* Add a compatibility layers for configuration, backups definition and pending info (json used to store temp data when a backup is in progress). If a new version of virt-backups brings any modification in the structure of these files, it will be handled by these layers to be able to read an old version.
For the configuration, the conversion never writes the result on disk, it will only print a warning (telling also what to change). The user has to apply these changes manually to not see these warnings again.
**Bug fixing:**
* Fix uncleaned backups if a period is not set in the configuration (27): before, the default value to every cleaning period in the configuration was `0`, meaning that the backups would be kept indefinitely. This behavior was wanted, but is actually not intuitive. Now default to `5` kept backups for every period, if not set.
**Refactoring/Cleanup:**
* Add packagers: packagers all implement the same abstract class to allow storing a backup, listing files or extract a backup. Each one handle a different format: directory (just copy files somewhere), zstd or tar. It allows for the backups algorithm to not handle how the files are stored, and make it more testable.
* Compatibility layers: compatibility layers allows virt-backup to target the last possible versions of each file (configuration, definition, pending_info), and handle the conversion of an old file in a succession of layers. It removes some condition checking/branches that could easily be forgotten.