Coverage for volexport/config.py: 100%

19 statements  

« 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 

6 

7HomePath = Annotated[Path, AfterValidator(lambda v: v.expanduser())] 

8 

9 

10class Config(BaseSettings): 

11 """Configuration settings for the volexport application.""" 

12 

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") 

24 

25 

26config = Config() # type: ignore