81 lines
2.7 KiB
Python
81 lines
2.7 KiB
Python
#!/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() |