#!/usr/bin/env python3 """ Safe test script for backup_script.py functionality This script will NOT create real snapshots to avoid affecting production data """ import os import sys import logging from unittest.mock import Mock, patch from backup_script import PVCBackupManager logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) class SafePVCBackupManager(PVCBackupManager): """Safe version that doesn't create real snapshots""" def __init__(self, test_mode=True): super().__init__() self.test_mode = test_mode if test_mode: logger.info("Running in TEST MODE - no real snapshots will be created") def generate_snapshot_name(self, pvc_name, timestamp): """Add TEST prefix to avoid conflicts""" if self.test_mode: return f"TEST-{pvc_name}-snapshot-{timestamp}" return super().generate_snapshot_name(pvc_name, timestamp) def apply_snapshot(self, snapshot_yaml): """Mock snapshot creation in test mode""" if self.test_mode: logger.info(f"[TEST MODE] Would create snapshot: {snapshot_yaml['metadata']['name']}") return {"metadata": {"name": snapshot_yaml['metadata']['name']}} return super().apply_snapshot(snapshot_yaml) def test_dry_run(): """Show what would be done without making changes""" print("=== Dry Run Test ===") backup_manager = SafePVCBackupManager(test_mode=True) print("Configuration:") print(f" Namespace: {backup_manager.namespace}") print(f" PVCs: {backup_manager.pvcs_to_backup}") print(f" Snapshot class: {backup_manager.snapshot_class}") print("\nWould create snapshots:") for pvc in backup_manager.pvcs_to_backup: timestamp = backup_manager.get_pst_date() snapshot_name = backup_manager.generate_snapshot_name(pvc, timestamp) print(f" {snapshot_name}") def test_yaml_generation(): """Test YAML generation without applying""" print("=== YAML Generation Test ===") backup_manager = SafePVCBackupManager(test_mode=True) for pvc in backup_manager.pvcs_to_backup: timestamp = backup_manager.get_pst_date() snapshot_name = backup_manager.generate_snapshot_name(pvc, timestamp) snapshot_yaml = backup_manager.create_snapshot_yaml(pvc, snapshot_name) print(f"\nYAML for {pvc}:") import yaml print(yaml.dump(snapshot_yaml, default_flow_style=False)) def main(): """Run safe tests""" print("Starting SAFE backup tests...") print("No real snapshots will be created") test_dry_run() test_yaml_generation() print("\n=== Safe tests completed ===") if __name__ == "__main__": main()