Releases: snapshotmanager/snapm
v0.7.0
Overview
This release introduces significant new features, fixes, and quality of life improvements. These include enhancements to the Difference Engine: support for multiple -s|--start-path arguments, cache fixes, better file type detection when not using --file-types, and improved move detection behaviour when multiple destinations exist, as well as support for plugin priorities in Manager and the in-tree plugins (for example, allowing the administrator to choose between lvm2-thin, and lvm2-cow snapshot providers where both can snapshot the same volume), better documentation for the Mount Manager in the User Guide, and a new, user-visible timeline categorization ("yearly", "monthly", "weekly", "daily", etc.) that is available for all snapshot sets. This release also includes a fix for the snapm / podman netns mount issue documented in earlier releases (#586) and stronger validation for schedule create name arguments (#906).
Users should upgrade to v0.7.0 as soon as possible to take advantage of these enhancements.
Notes
- It is now possible to specify the
-s|--startpath multiple times when invoking thesnapset diffandsnapset diffreportcommands. This allows the user to compare multiple independent subtrees in a singlediffoperation. - The path based file type detection has been improved to support more common file extensions, text and binary path locations, and categorisations.
- A new
BINARY_LOGfile type categorisation has been added to describe files such aswtmp, SAR logs, and the journal. - Plugins now support a
PluginPriorityconfiguration that specifies a positive integer priority level. The plugin with the greatest priority is chosen when multiple plugins can snapshot the same device. This allows the user to preferlvm2-cowsnapshots overlvm2-thinwhere both are possible and will in future allow support for file system level snapshots (for example, Btrfs). Refer tosnapm(8), andsnapm-plugins.d(5)for further information on configuring plugin priorities. - The Mount Manager is now described in the on-line and in-package User Guide.
- The Mount Manager now handles unmounting of duplicate
/run/netnsmounts via a targeted workaround. - The timeline classification algorithm used by the
Timelinegarbage collection policy has been generalised and is now available for all snapshot sets via the "Categories" snapshot set property and "categories" report field. - The static file type classifier now uses a broader set of rules for classifying likely text or binary content types.
- The
treeoutput format of thesnapset diffcommand now displays separate nodes for paths that have both been moved and modified (for example, a file that was backed up and then changed in-place).
Full Changelog: v0.6.0...v0.7.0
What's Changed
- doc: add new snapm logo to README.md by @bmr-cymru in #823
- doc: update README.md and user_guide.rst with mount manager and difference engine by @bmr-cymru in #830
- snapm: btrfs plugin pre-requisite features and fixes by @bmr-cymru in #843
- Fixes for progress log interleaving and text-like best-guess file type detection by @bmr-cymru in #851
- fsdiff: add
BINARY_LOGfile type category and fixTEXT_FILE_PATHSprefixing by @bmr-cymru in #855 - fsdiff: ctrl char glitches when diff -o tree --color=always | less -R by @bmr-cymru in #857
- fsdiff: tolerate missing
python-file-magicand work aroundMagic.close()bug by @bmr-cymru in #859 - fsdiff: make include_system_dirs more robust and disable in next release by @bmr-cymru in #871
- fsdiff: implement cheap sibbling proximity heuristic for moves by @bmr-cymru in #874
- fsdiff: support DiffOptions.from_path as list by @bmr-cymru in #875
- plugins: bump plugin versions for prio support by @bmr-cymru in #876
- tests: improve
snapm.fsdiffcoverage by @bmr-cymru in #881 - snapm: lift timeline classification logic up to
SnapshotSetby @bmr-cymru in #885 - snapm: don't alpha sort categories in reports by @bmr-cymru in #892
- mounts: container mount workarounds by @bmr-cymru in #900
- snapm: schedule name checks by @bmr-cymru in #910
- fsdiff: add
DiffOptions.no_mem_check/--no-mem-checkoption by @bmr-cymru in #912 - snapm: broaden file type heuristics for suffix paths and support multiple change records in tree rendering by @bmr-cymru in #913
Full Changelog: v0.6.0...v0.7.0
v0.5.3
Overview
This is a maintenance release for snapm-0.5-stable that includes two bug fixes.
Users of snapm-0.5.x who are unable to upgrade to a later y-stream release should update to v0.5.3 as soon as possible to take advantage of these fixes.
What's Changed
- Timeline index fix for v0.5.2 by @bmr-cymru in #609
- boot: hex escape literal ':' in values passed to systemd.{mount,swap}-extra by @bmr-cymru in #894
Full Changelog: v0.5.2...v0.5.3
v0.6.0
Overview
This release introduces significant new features and fixes, including the Mount Manager and the Difference Engine for efficiently computing changes between two snapshot sets, or the system root file system and a snapshot set. Fixes include Stratis plugin performance enhancements and bug fixes for lvm2 device callouts . Users should upgrade to v0.6.0 as soon as possible to take advantage of these enhancements.
Notes
- It is now possible to mount individual snapshot sets and interact with them using the
snapset {mount,umount},snapset exec, andsnapset shellcommands. Snapshot sets are mounted under/run/snapm/mounts. - Comprehensive file system comparison is now available with the
snapset diffandsnapset diffreportcommands. Seesnapm(8)and the user guide for more information. - The
snapm.fsdiffAPI is considered unstable and may be subject to change in a future release. - The
snapset diff--output-format=jsonJSON schema is also potentially subject to change and will be formalised in a future release. - The
snapset diff/snapset diffreportcommand syntax is stable but output and formatting may change in future releases. - Future releases may include new content differs for specific file types and more comprehensive file type detection when libmagic is disabled.
- Generating content diffs of large file system trees with many content changes may consume large amounts of memory:
snapmwill refuse to diff trees ifVmRSSexceeds 33% of system memory after walking the filesystem. Caching is disabled ifVmRSSexceeds 60% of system memory after computing diffs.
What's Changed
- lvm2: Fix "no device" case for _is_lvm_device() and avoid no provider test if /boot is not a mount point by @bmr-cymru in #589
- Add mount manager by @bmr-cymru in #541
- snapm: fix renaming of snapshot sets with boot entries by @bmr-cymru in #591
- schedule: fix timeline garbage collection by @bmr-cymru in #596
- schedule: fix TIMELINE policy retention indexing when
keep_x > len(x)by @bmr-cymru in
#607 - stratis: re-use initial DBus query for StratisSnapshot cache by @bmr-cymru in #615
- container_tests: fix GcPolicyParamsTimeline.evaluate() tests edge case by @bmr-cymru in
#628 - Clean up and enhance progress implementation by @bmr-cymru in #646
- doc: add missing snapm.manager._mounts to Sphinx docs by @bmr-cymru in #661
- Fix progress message overflow, bar width, and BrokenPipeError handling by @bmr-cymru in
#662 - progress: clean up Progress and add Throbber classes by @bmr-cymru in #675
- progress: Fix
Throbberno_clearbug and add styles by @bmr-cymru in #679 - mounts: fix incorrect SnapshotSet instead of name in name_map by @bmr-cymru in #684
- snapm: add fsdiff snapshot set comparison facility by @bmr-cymru in #620
- progress: cleanups and log integration by @bmr-cymru in #698
- snapm: implement snapshot set comparison UI (snapm snapset diff) by @bmr-cymru in
#707 - snapm: address v0.6.0 feature/fix release blockers by @bmr-cymru in #759
- snapm: fix "Computing diffs" progress bar flicker and at move detector progress by @bmr-cymru in #775
- doc: add missing links, summary format and clarify defaults for output formats by @bmr-cymru in #779
- fsdiff: catch EOFError on truncated cache file by @bmr-cymru in #782
- fsdiff: move detector may mis-detect identical files as moves by @bmr-cymru in
#784 - fsdiff: optimize cache writing and add progress reporting by @bmr-cymru in #791
- fsdiff: implement best-effort file type detection and "always exclude" paths by @bmr-cymru in
#810
Known issues
There is one known issue for this release. Please see the wiki pages for more details, status, and workarounds:
This will be addressed in a future release.
Full Changelog: v0.5.2...v0.6.0
v0.5.2
This is a bug fix release for two important bugs found in v0.5.0 and v0.5.1. Users of these versions should update to v0.5.2 as soon as possible.
This release also includes minor usability enhancements and fixes (original issues: #593, #594, #595, #597, #598, #600).
What's Changed
- snapm: rename and schedule fixes for v0.5.1 by @bmr-cymru in #601
Full package changelog:
- Sun Nov 16 2025 Bryn M. Reeves bmr@redhat.com - 0.5.2-1
- schedule: Fix COUNT policy off-by-many when keep_count > len(sets)
- snapm: make -c|--config mandatory for create-scheduled/gc
- snapm: report garbage collected snapshot set names
- schedule: fix timeline classification to allow multiple categories
- schedule: add gc decision debug logging
- snapm: add new snapm.schedule debug subsystem
- snapm: fix renaming of snapshot sets with boot entries
Full Changelog: v0.5.1...v0.5.2
v0.5.1
What's Changed
- snapm: fix masked debug logging to be independent of module load order by @bmr-cymru in #524
- Re-locate runtime state to
/run/snapmby @bmr-cymru in #529 - snapm: fix formatting glitches in snapm.manager by @bmr-cymru in #531
- boot: handle swap entries in
/etc/fstabby @bmr-cymru in #537 - snapm: minor typos and typing fixes by @bmr-cymru in #576
- snapm: minor boot fixes by @bmr-cymru in #581
- Add ability to edit existing schedules and prevent modification via create by @bmr-cymru in #583
- snapm: bump release to 0.5.1 by @bmr-cymru in #585
Full package changelog:
- Mon Nov 03 2025 Bryn M. Reeves bmr@redhat.com - 0.5.1-1
- dist: don't recursively set SELinux contexts for /run/snapm
- tests: coverage for Scheduler.edit()
- snapm: implement schedule edit command
- scheduler: add Scheduler.edit() method
- scheduler: add GcPolicy.has_params property
- scheduler: remove schedule from lists/dicts on Scheduler.delete()
- boot: use maxsplit=1 in BootEntryCache._parse_entry()
- boot: Replace asserts with explicit exceptions
- boot: Type the machine-id helper as Optional and align docstring
- command: Fix typo in print_schedules doc - 'separateed' → 'separated'
- command: Fix typo in create_schedule doc - 'autoinxed' → 'autoindex'
- command: Fix _revert_cmd docstring - 'Delete' instead of 'Revert'
- boot: drop
lvm_root_lvdocstring from _create_boom_boot_entry() - boot: handle swap entries explicitly in create_snapset_boot_entry()
- boot: don't include swap entries in the snapset mount list
- snapm: fix formatting glitches in snapm.manager
- dist: add /run/snapm/lock to systemd/tmpfiles.d/snapm.conf
- manager: re-locate lock files to /run/snapm/lock
- dist: add tmpfiles.d drop-in for /run/snapm to snapm.spec
- snapm: add systemd/tmpfiles.d/snapm.conf
- snapm: add constants for runtime and mount dirs
- snapm: wire up new debug log filttering in snapm.command.setup_logging()
- snapm: convert modules to new log filtering interface
- snapm: replace SnapmLogger Logging class with SubsystemFilter Filter class
- snapm: use "snapm" rather than name (snapm._snapm) for getLogger()
- snapm: add string constants for new name-based subsystem log filtering
Full Changelog: v0.5.0...v0.5.1
v0.5.0
What's Changed
- dist: move python3-boom dep to python3-snapm and require >= 1.6.4 by @bmr-cymru in #94
- tests: temporarily exclude CentOS from test_boot.is_redhat() check by @bmr-cymru in #95
- tests: enable workflow on pull_request by @bmr-cymru in #97
- jenkins: add test dependency file to support Jenkins CI by @trgill in #99
- dist: use %{name} instead of hardcoding snapm in URL and autosetup by @bmr-cymru in #100
- Test suite logging fixes by @bmr-cymru in #101
- Improve KeyboardInterrupt handling by @bmr-cymru in #104
- Refactor Manager methods and move logic to SnapshotSet by @bmr-cymru in #105
- [dist] update GPL license text and headers by @bmr-cymru in #107
- lvm2: reporting format fixes by @bmr-cymru in #111
- tests: switch GitHub workflows over to Stratis 3.8.0 by @bmr-cymru in #115
- snapm: raise SnapmNotFoundError if source path does not exist by @bmr-cymru in #119
- snapm: add snapm.manager.calendar and CalendarSpec class by @bmr-cymru in #139
- tests: add CalendarSpec unit tests by @bmr-cymru in #141
- Add template systemd units for scheduler by @bmr-cymru in #138
- tests: add python3-pytest-subtests to Ubuntu dependencies by @bmr-cymru in #143
- dist: replace license classifier with SPDX expression in pyproject.toml by @bmr-cymru in #144
- Fix setting autoactivation during bootable snapshot set creation by @bmr-cymru in #154
- snapm: boot cache fixes by @bmr-cymru in #157
- Support iterations of a snapshot set with a common base name by @bmr-cymru in #165
- Add support for snapshot set 'split' and 'prune' operations by @bmr-cymru in #178
- snapm: fix Manager.split_snapshot_sets() with empty sources by @bmr-cymru in #180
- snapm: unify filtering for valid characters in names by @bmr-cymru in #182
- dist: avoid Python packaging warnings by @bmr-cymru in #185
- Rewrite plugin loader and move
Plugintosnapm.manager.pluginsby @bmr-cymru in #195 - Fix class variable misuse in
snapm.reportby @bmr-cymru in #204 - dist: change snapm license from GPL-2.0-only AND Apache-2.0 to Apache-2.0 by @bmr-cymru in #206
- dist: fix spec file issues by @bmr-cymru in #190
- dist: drop unnecessary
snapm/manager/pliugins/stratislib/LICENSEby @bmr-cymru in #209 - dist: consolidate dependencies in
requirements.txtand enable dynamic dependencies inpyproject.tomlby @bmr-cymru in #211 - dist: fix mixed tabs-and-spaces in snapm.spec by @bmr-cymru in #213
- dist: pass test suite directory as positional arg to pytest macro by @bmr-cymru in #217
- boot: tolerate missing boom.command.create_config() by @bmr-cymru in #222
- Packaging fixes by @bmr-cymru in #224
- FIx install dependencies by @bmr-cymru in #231
- Fix packaging inconsistencies by @bmr-cymru in #235
- Plugin: fix method docstring formatting by @bmr-cymru in #239
- manager: Make manager modules private by @bmr-cymru in #243
- dist: fix mixed-tabs-and-spaces in snapm.spec by @bmr-cymru in #244
- CalendarSpec fixes by @bmr-cymru in #253
- tests: fix CommandTests.test_main_* problems by @bmr-cymru in #261
- manager: add debug logging to create_snapshot_set() by @bmr-cymru in #263
- Add timer infrastructure by @bmr-cymru in #254
- fix constants in docstring descriptions and add to docs by @bmr-cymru in #275
- dist: fix readthedocs.org builds (restore requirements.txt) by @bmr-cymru in #280
- docs: multiple small issues by @bmr-cymru in #289
- Fix lvm2 environment variable filtering by @bmr-cymru in #294
- Fix lvm callout issues by @bmr-cymru in #297
- snapm: implement plugin configuration and snapshot limits by @bmr-cymru in #324
- snapm: implement scheduling and garbage collection by @bmr-cymru in #309
- boot: drop explicit setting of
lvm_root_lvwhen calling boom by @bmr-cymru in #376 - Do not require wheel for building by @hroncok in #377
- update to allow bootable snapshot sets without root device by @trgill in #358
- doc: add CONTRIBUTING.md by @bmr-cymru in #381
- snapm: support --json with {snapset,schedule} create commands by @bmr-cymru in #386
- tests: make cleanup.sh more robust for Stratis pools by @bmr-cymru in #388
- doc: man page fixes & updates by @bmr-cymru in #400
- doc: improve
man2htmlcompatibility insnapm.8by @bmr-cymru in #434 - doc: add DeepWiki badge to README.md by @bmr-cymru in #437
- Add virt_tests end-to-end testing wokflow by @bmr-cymru in #383
- dist: add missing timer and service units to snapm.spec by @bmr-cymru in #445
- snapm: fix swapped _log_info() args in 'snapm snapset prune' output by @bmr-cymru in #447
- snapm: fix report field definition for snapshot_origin by @bmr-cymru in #449
- tests: re-order python-basic-tests to run cheap tests first by @bmr-cymru in #453
- snapm: make --yes/--no required and mutually exclusive for autoactivate by @bmr-cymru in #461
- snapm: require -p/--policy-type for 'snapm schedule create' by @bmr-cymru in #462
- snapm: fix typos in source and documentation by @bmr-cymru in #470
- doc: don't drop PYTHONPATH entries - concatenate them like PATH by @bmr-cymru in #473
- lvm2: fix confusing error message when probing non-dm devices by @bmr-cymru in #478
- snapm: snapshot set resize fixes by @bmr-cymru in #490
- schedule: write_config(): do not reference tmp_path when it is undefined by @bmr-cymru in #493
- snapm: add Manager level locking by @bmr-cymru in #515
- snapm: reject duplicates in
Scheduler.create()sources argument by @bmr-cymru in #518
Full package changelog:
- Mon Oct 06 2025 Bryn M. Reeves bmr@redhat.com - 0.5.0-1
- snapm: bump release to 0.5.0
- snapm: reject duplicates in Scheduler.create() sources argument
- snapm: introduce Manager-level locking
- snapm: add Manager.{activate,deactivate}_snapshot_set()
- snapm: require root priveleges for snapm commands
- schedule: write_config(): do not reference tmp_path when it is undefined
- tests: make git clones with --depth 1
- tests: update stratisd to stratisd-v3.8.5 and pin rust toolchain
- doc: note that lvm2cow does not support shrinking snapshots in snapm.8
- lvm2: add debug logging to size policy calculations
- lvm2: skip no-ops and use relative size in Lvm2Cow.resize_snapshot()
- lvm2: Detect and reject attempts to shrink CoW snapshots
- lvm2: round up SizePolicy.size byte values to lvm2 extent boundaries
- snapm: add size policy debug logging to create and resize
- lvm2: extend _Lvm2.vg_free_space() to return extent size
- lvm2: add lvm2._round_up_extents() to round sizes to extent boundaries
- lvm2: Check path args to _is_lv_device() for existence and major nr match
- lvm2: check for device-mapper major number before calling dmsetup
- tests: fix test_create_snapshot_set_no_provider to f...
v0.4.3
What's Changed
- boot: tolerate missing boom.command.create_config() by @bmr-cymru #222
- Packaging fixes by @bmr-cymru #224
- FIx install dependencies by @bmr-cymru https://github.com/snapshotmanager/snapm/231
- Fix packaging inconsistencies by @bmr-cymru https://github.com/snapshotmanager/snapm/235
- snapm: bump release to 0.4.3 by @bmr-cymru in #236
Full package changelog:
- Thu Apr 17 2025 Bryn M. Reeves bmr@redhat.com - 0.4.3-1
- dist: sync classifiers between pyproject.toml and setup.cfg
- dist: drop quotes around license value
- dist: drop obsolete python macro use
- dist: revise dependency versions
- dist: drop requirements.txt
- dist: restore install_requires
- dist: re-order BuildRequires and separate python and non-python deps
- dist: clean up Sphinx doc build and make unconditional
- dist: use install -p/--preserve-timestamps
- boot: tolerate missing boom.command.create_config()
Full Changelog: v0.4.2...v0.4.3
v0.4.2
LICENSE
The snapm project is now licensed under the Apache-2.0 license.
What's Changed
- Rewrite plugin loader and move Plugin to snapm.manager.plugins @bmr-cymru in #195
- Fix class variable misuse in snapm.report @bmr-cymru in #204
- dist: change snapm license from GPL-2.0-only AND Apache-2.0 to Apache-2.0 @bmr-cymru in #206
- dist: fix spec file issues @bmr-cymru in #190
- dist: drop unnecessary snapm/manager/pliugins/stratislib/LICENSE @bmr-cymru in #209
- dist: consolidate dependencies in requirements.txt @bmr-cymru in #211
- dist: fix mixed tabs-and-spaces in snapm.spec @bmr-cymru in #213
- dist: pass test suite directory as positional arg to pytest macro @bmr-cymru in #217
- snapm: bump release to 0.4.2 by @bmr-cymru in #218
Full package changelog:
- Tue Apr 15 2025 Bryn M. Reeves bmr@redhat.com - 0.4.2-1
- snapm: bump release to 0.4.2
- dist: pass test suite directory as positional arg to pytest macro
- dist: fix mixed tabs-and-spaces in snapm.spec
- dist: make version dynamic in pyproject.toml
- dist: consolidate dependencies in requirements.txt
- dist: drop unnecessary snapm/manager/pliugins/stratislib/LICENSE
- dist: add pytest to build requirements
- tests: use pytest macro instead of directly calling pytest-3
- dist: drop centos/rhel special casing for python build/install
- dist: change snapm license from GPL-2.0-only AND Apache-2.0 to Apache-2.0
- report: Row - stop misusing class vars
- report: Report - stop misusing class vars
- report: Field - stop misusing class vars
- report: FieldType - stop misusing class vars
- report: ReportOpts - stop misusing class vars
- report: ReportObjType - stop misusing class vars
- report: FieldProperties - stop misusing class vars and add initialiser
- snapm: move Plugin into snapm.manager.plugins
- snapm: drop PluginRegistry metaclass
- snapm: refactor plugin loader and move to snapm.manager._loader
Full Changelog: v0.4.1...v0.4.2
v0.4.1
What's Changed
- dist: move python3-boom dep to python3-snapm and require >= 1.6.4 by @bmr-cymru in #94
- tests: temporarily exclude CentOS from test_boot.is_redhat() check by @bmr-cymru in #95
- tests: enable workflow on pull_request by @bmr-cymru in #97
- jenkins: add test dependency file to support Jenkins CI by @trgill in #99
- dist: use %{name} instead of hardcoding snapm in URL and autosetup by @bmr-cymru in #100
- Test suite logging fixes by @bmr-cymru in #101
- Improve KeyboardInterrupt handling by @bmr-cymru in #104
- Refactor Manager methods and move logic to SnapshotSet by @bmr-cymru in #105
- [dist] update GPL license text and headers by @bmr-cymru in #107
- lvm2: reporting format fixes by @bmr-cymru in #111
- tests: switch GitHub workflows over to Stratis 3.8.0 by @bmr-cymru in #115
- snapm: raise SnapmNotFoundError if source path does not exist by @bmr-cymru in #119
- dist: replace license classifier with SPDX expression in pyproject.toml by @bmr-cymru in #144
- snapm: boot cache fixes by @bmr-cymru in #157
- Add support for snapshot set 'split' and 'prune' operations by @bmr-cymru in #178
- snapm: fix Manager.split_snapshot_sets() with empty sources by @bmr-cymru in #180
- snapm: unify filtering for valid characters in names by @bmr-cymru in #182
- Update python packaging license specification by @bmr-cymru in #185
- snapm: bump release to 0.4.1 by @bmr-cymru in #183
Full package changelog:
- Wed Apr 02 2025 Bryn M. Reeves bmr@redhat.com - 0.4.1-1
- snapm: fix Manager.split_snapshot_sets() with empty sources
- command: add new 'snapm snapset prune' command
- command: add new 'snapm snapset split' command
- tests: add Manager.split_snapshot_set() tests
- snapm: add Manager.split_snapshot_set()
- snapm: include state string in exception raised from _check_snapset_status()
- snapm: add snapm.SnapmArgumentError exception class
- tests: add missing '[cache]' section to test boom.conf
- snapm: refresh boot cache after creating entries in create_snapshot_set()
- snapm: improve SnapshotSet action method logging
- snapm: use Manager._set_autoactivate() in create_snapshot_set()
- Manager: use common snapm.bool_to_yes_no() in Manager.set_autoactivate()
- Manager: factor out common code from Manager.set_autoactivate()
- snapm: move _bool_to_yes_no() from snapm.command to snapm
- Plugins: add generic Plugin.autoactivate setter and drop set_autoactivate()
- Manager: fix autoactivate setting during snapshot set creation
- snapm: move snapshot -> snapset linkage into SnapshotSet()
- dist: replace license classifier with SPDX expressions
- snapm: raise SnapmNotFoundError if source path does not exist
- tests: switch GitHub workflows over to Stratis 3.8.0
- tests: install stratis-cli from git and pin version to 3.7.0
- lvm2: filter out LVM2 environment variables when calling lvm commands
- lvm2: make vg_lv_from_device_path a method of Lvm2Cow and Lvm2Thin
- lvm2: ensure vg_lv_from_device_path() gets the expected report format
- lvm2: determine LVM2 JSON format argument based on installed version
- lvm2: refactor helper functions as Lvm2 plugin methods
- tests: allow mock vgs/lvs to accept --reportformat json or json_std
- dist: clean up copyright statements and convert to SPDX license headers
- dist: update GPLv2 text in COPYING
- snapm: factor out common code for snapshot origin and mount point links
- snapm: move rename logic from Manager to SnapshotSet.rename()
- snapm: move resize logic from Manager to SnapshotSet.resize()
- snapm: move {de,}activate logic from Manager to SnapshotSet.{de,}activate()
- snapm: move revert logic from Manager into SnapshotSet.revert()
- snapm: move boot entry creation inside Manager.create_snapshot_set()
- manager: replace open-coded snapset delete with snapset.delete()
- snapm: implement SnapshotSet.delete()
- snapm: catch KeyboardInterrupt in snapm.command.main()
- snapm: decorate state-changing Manager methods with @suspend_signals
- snapm: add @suspend_signals decorator to block SIGINT, SIGTERM
- report: strip trailing whitespace from report output
- tests: bracket test cases with log messages
- tests: add explicit log formatter to file and console handlers
- tests: capture tool output and log command execution
- tests: add console handler to test suite logger
- snapm: avoid duplicating log handlers when main() is called repeatedly
- tests: fix duplicate log handlers in test suite
- dist: use {name} instead of hardcoding snapm in URL and autosetup
- jenkins: add file to list dependencies of python test suite
- tests: enable workflow on pull_request
- tests: temporarily exclude CentOS from test_boot.is_redhat() check
- dist: move python3-boom dep to python3-snapm and require >= 1.6.4
New Contributors
Full Changelog: v0.4.0...v0.4.1
v0.4.0
What's Changed
- Implement plugin init and revert checks by @bmr-cymru in #76
- Fixes for handling mounted/unmounted snapshot sets by @bmr-cymru in #79
- lvm2: fix Snapshot initialisation after Lvm2Plugin.rename_snapshot() by @bmr-cymru in #80
- snapm: validate UUIDs during argument parsing by @bmr-cymru in #81
- lvm2: add support to display in-progress revert operations by @bmr-cymru in #84
- Minor revert fixes by @bmr-cymru in #85
- lvm2: check for INVALID status before REVERTING by @bmr-cymru in #86
- Snapshot resize support by @bmr-cymru in #87
- Implement a plugin for Stratis by @bmr-cymru in #72
- snapm: fix license header typo by @bmr-cymru in #90
- Block device support fixes by @bmr-cymru in #89
- Pre-release fixes by @bmr-cymru in #91
- snapm: bump release to 0.4.0 by @bmr-cymru in #92
Full Changelog: v0.3.1...v0.4.0