aboutsummaryrefslogtreecommitdiffstats
path: root/molecule/delete
diff options
context:
space:
mode:
Diffstat (limited to 'molecule/delete')
-rw-r--r--molecule/delete/converge.yml8
-rw-r--r--molecule/delete/prepare.yml4
-rw-r--r--molecule/delete/tests/test_delete.py34
3 files changed, 35 insertions, 11 deletions
diff --git a/molecule/delete/converge.yml b/molecule/delete/converge.yml
index 00de93d..037e56a 100644
--- a/molecule/delete/converge.yml
+++ b/molecule/delete/converge.yml
@@ -35,6 +35,10 @@
borg_backup_argument: single-backup
borg_dangerously_delete_backups: true
borg_decryption_keys_yaml_path: "{{ playbook_dir }}/decryption_keys_delete.yml"
+ borg_prune_enabled: true
+ borg_prune_trigger: timer
+ borg_prune_keep_last: "2"
+ borg_prune_glob_archives: "{hostname}-*"
- name: Delete one repo from multi-instance (keep data)
hosts: borg-client-multi-delete
@@ -135,6 +139,10 @@
borg_ssh_key_type: "{{ 'ed25519' if inventory_hostname == 'borg-client-per-repo-delete' else 'rsa' }}"
borg_dangerously_delete_backups: >-
{{ inventory_hostname in ['borg-client-single-delete', 'borg-client-per-repo-delete'] }}
+ borg_prune_enabled: "{{ inventory_hostname == 'borg-client-single-delete' }}"
+ borg_prune_trigger: "{{ 'timer' if inventory_hostname == 'borg-client-single-delete' else 'after_backup' }}"
+ borg_prune_keep_last: "{{ '2' if inventory_hostname == 'borg-client-single-delete' else '' }}"
+ borg_prune_glob_archives: "{{ '{hostname}-*' if inventory_hostname == 'borg-client-single-delete' else '{hostname}-*' }}"
borg_decryption_keys_yaml_path: >-
{{
(playbook_dir ~ '/decryption_keys_empty_delete.yml')
diff --git a/molecule/delete/prepare.yml b/molecule/delete/prepare.yml
index 98a94a1..430387d 100644
--- a/molecule/delete/prepare.yml
+++ b/molecule/delete/prepare.yml
@@ -44,6 +44,10 @@
borg_included_dirs:
- /etc
borg_excluded_dirs: []
+ borg_prune_enabled: true
+ borg_prune_trigger: timer
+ borg_prune_keep_last: "2"
+ borg_prune_glob_archives: "{hostname}-*"
- name: Create multi-instance backup (shared key)
hosts: borg-client-multi-delete
diff --git a/molecule/delete/tests/test_delete.py b/molecule/delete/tests/test_delete.py
index 4c0d859..3fc3189 100644
--- a/molecule/delete/tests/test_delete.py
+++ b/molecule/delete/tests/test_delete.py
@@ -37,6 +37,16 @@ class TestSingleRepoDelete:
assert not timer.exists
assert not service.exists
+ def test_prune_systemd_units_removed(self, host):
+ hostname = host.backend.get_hostname()
+ if hostname != "borg-client-single-delete":
+ return
+
+ timer = host.file("/etc/systemd/system/borg_prune@single-backup.timer")
+ service = host.file("/etc/systemd/system/borg_prune@single-backup.service")
+ assert not timer.exists
+ assert not service.exists
+
def test_backup_scripts_removed(self, host):
hostname = host.backend.get_hostname()
if hostname != "borg-client-single-delete":
@@ -47,6 +57,16 @@ class TestSingleRepoDelete:
assert not repo_script.exists
assert not base_script.exists
+ def test_prune_scripts_removed(self, host):
+ hostname = host.backend.get_hostname()
+ if hostname != "borg-client-single-delete":
+ return
+
+ repo_script = host.file("/usr/local/bin/run_borg_prune@single-backup")
+ base_script = host.file("/usr/local/bin/run_borg_prune")
+ assert not repo_script.exists
+ assert not base_script.exists
+
def test_shared_ssh_key_kept(self, host):
hostname = host.backend.get_hostname()
if hostname != "borg-client-single-delete":
@@ -98,17 +118,12 @@ class TestMultiInstanceDelete:
assert service.exists
assert script.exists
- def test_base_script_keeps_only_remaining_block(self, host):
+ def test_aggregate_script_is_absent(self, host):
hostname = host.backend.get_hostname()
if hostname != "borg-client-multi-delete":
return
- base_script = host.file("/usr/local/bin/run_borg_backup")
- assert base_script.exists
- content = base_script.content_string
- assert "/opt/borg/multi-repo-b" in content
- assert "/opt/borg/multi-repo-a" not in content
- assert content.count("borg create") == 1
+ assert not host.file("/usr/local/bin/run_borg_backup").exists
def test_shared_ssh_key_kept(self, host):
hostname = host.backend.get_hostname()
@@ -168,13 +183,10 @@ class TestPerRepoKeyDelete:
timer = host.file("/etc/systemd/system/borg_backup@per-repo-b.timer")
service = host.file("/etc/systemd/system/borg_backup@per-repo-b.service")
script = host.file("/usr/local/bin/run_borg_backup@per-repo-b")
- base_script = host.file("/usr/local/bin/run_borg_backup")
assert timer.exists
assert service.exists
assert script.exists
- assert base_script.exists
- assert "/opt/borg/per-repo-b" in base_script.content_string
- assert "/opt/borg/per-repo-a" not in base_script.content_string
+ assert not host.file("/usr/local/bin/run_borg_backup").exists
def test_per_repo_ssh_key_removed(self, host):
hostname = host.backend.get_hostname()