Backup: change config format to toml

With support of multiple config values
This commit is contained in:
2025-12-20 17:13:35 +03:00
parent 439c239ac8
commit b686e4da4d
2 changed files with 49 additions and 11 deletions

View File

@@ -14,7 +14,7 @@ from dataclasses import dataclass
from pathlib import Path
from typing import List, Optional
import requests
import configparser
import tomllib
# Configure logging
@@ -28,17 +28,38 @@ logging.basicConfig(
)
logger = logging.getLogger(__name__)
config = configparser.ConfigParser()
config.read("/etc/backup/config.ini")
try:
with open("/etc/backup/config.toml", "rb") as config_file:
config = tomllib.load(config_file)
except OSError as e:
logger.error(f"Failed to read config file: {e}")
raise
RESTIC_REPOSITORY = config.get("restic", "RESTIC_REPOSITORY")
RESTIC_PASSWORD = config.get("restic", "RESTIC_PASSWORD")
AWS_ACCESS_KEY_ID = config.get("restic", "AWS_ACCESS_KEY_ID")
AWS_SECRET_ACCESS_KEY = config.get("restic", "AWS_SECRET_ACCESS_KEY")
AWS_DEFAULT_REGION = config.get("restic", "AWS_DEFAULT_REGION")
TELEGRAM_BOT_TOKEN = config.get("telegram", "TELEGRAM_BOT_TOKEN")
TELEGRAM_CHAT_ID = config.get("telegram", "TELEGRAM_CHAT_ID")
NOTIFICATIONS_NAME = config.get("telegram", "NOTIFICATIONS_NAME")
storage_cfg = config.get("storage", {}).get("yandex", {})
RESTIC_REPOSITORY = storage_cfg.get("restic_repository")
RESTIC_PASSWORD = storage_cfg.get("restic_password")
AWS_ACCESS_KEY_ID = storage_cfg.get("aws_access_key_id")
AWS_SECRET_ACCESS_KEY = storage_cfg.get("aws_secret_access_key")
AWS_DEFAULT_REGION = storage_cfg.get("aws_default_region")
notifications_cfg = config.get("notifications", {}).get("telegram", {})
TELEGRAM_BOT_TOKEN = notifications_cfg.get("telegram_bot_token")
TELEGRAM_CHAT_ID = notifications_cfg.get("telegram_chat_id")
NOTIFICATIONS_NAME = notifications_cfg.get("notifications_name")
if not all(
[
RESTIC_REPOSITORY,
RESTIC_PASSWORD,
AWS_ACCESS_KEY_ID,
AWS_SECRET_ACCESS_KEY,
AWS_DEFAULT_REGION,
TELEGRAM_BOT_TOKEN,
TELEGRAM_CHAT_ID,
NOTIFICATIONS_NAME,
]
):
raise ValueError("Missing required configuration values in config.toml")
# File name to store directories and files to back up
BACKUP_TARGETS_FILE = "backup-targets"