Coverage for volexport/config.py: 100%
19 statements
« prev ^ index » next coverage.py v7.10.7, created at 2025-09-28 12:48 +0000
« prev ^ index » next coverage.py v7.10.7, created at 2025-09-28 12:48 +0000
1import os
2from pathlib import Path
3from typing_extensions import Annotated
4from pydantic import AfterValidator, Field
5from pydantic_settings import BaseSettings, SettingsConfigDict
7HomePath = Annotated[Path, AfterValidator(lambda v: v.expanduser())]
10class Config(BaseSettings):
11 """Configuration settings for the volexport application."""
13 model_config = SettingsConfigDict(env_prefix="VOLEXP_", env_file=os.getenv("VOLEXP_ENV_FILE"))
14 BECOME_METHOD: str = Field(default="sudo", description='Method to become root, e.g., "sudo" or "doas"')
15 TGTADM_BIN: str = Field(default="tgtadm", description="Path to tgtadm binary")
16 TGT_BSTYPE: str = Field(default="rdwr", description='Type of block storage, e.g., "rdwr" or "aio"')
17 TGT_BSOPTS: str | None = Field(default=None, description="Additional options for block storage")
18 TGT_BSOFLAGS: str | None = Field(default=None, description="Additional flags for block storage")
19 LVM_BIN: str | None = Field(default=None, description="Path to lvm binary")
20 LVM_THINPOOL: str | None = Field(default=None, description="LVM2 thinpool")
21 IQN_BASE: str = Field(default="iqn.2025-08.com.github.wtnb75", description="Base IQN for iSCSI targets")
22 CMD_TIMEOUT: float = Field(default=10.0, description="Timeout for commands in seconds")
23 BACKUP_DIR: str = Field(default="/tmp", description="backup directory")
26config = Config() # type: ignore