Coverage for src/meshadmin/cli/config.py: 100%
29 statements
« prev ^ index » next coverage.py v7.6.12, created at 2025-04-04 14:54 +0200
« prev ^ index » next coverage.py v7.6.12, created at 2025-04-04 14:54 +0200
1import os
2from dataclasses import dataclass
3from pathlib import Path
6@dataclass
7class MeshConfig:
8 server_url: str
9 keycloak_base_url: str
10 keycloak_realm: str
11 keycloak_admin_client: str
12 keycloak_issuer: str
13 keycloak_device_auth_url: str
14 keycloak_token_url: str
15 api_endpoint: str
16 private_key: Path
17 private_net_key_file: Path
18 public_net_key_file: Path
19 config_path: Path
20 authentication_path: Path
21 systemd_service_path: Path
22 meshadmin_etc_path: Path
25def load_config():
26 SERVER_URL = os.getenv("MESH_SERVER_URL", "https://dmeshadmin.hydo.ch")
27 KEYCLOAK_BASE_URL = os.getenv(
28 "KEYCLOAK_BASE_URL", "https://auth.dmeshadmin.hydo.ch"
29 )
30 KEYCLOAK_REALM = os.getenv("KEYCLOAK_REALM", "meshadmin")
31 KEYCLOAK_ADMIN_CLIENT = os.getenv("KEYCLOAK_ADMIN_CLIENT", "admin-cli")
32 KEYCLOAK_ISSUER = f"{KEYCLOAK_BASE_URL}/realms/{KEYCLOAK_REALM}"
33 KEYCLOAK_DEVICE_AUTH_URL = f"{KEYCLOAK_ISSUER}/protocol/openid-connect/auth/device"
34 KEYCLOAK_TOKEN_URL = f"{KEYCLOAK_ISSUER}/protocol/openid-connect/token"
36 return MeshConfig(
37 server_url=SERVER_URL,
38 keycloak_base_url=KEYCLOAK_BASE_URL,
39 keycloak_realm=KEYCLOAK_REALM,
40 keycloak_admin_client=KEYCLOAK_ADMIN_CLIENT,
41 keycloak_issuer=KEYCLOAK_ISSUER,
42 keycloak_device_auth_url=KEYCLOAK_DEVICE_AUTH_URL,
43 keycloak_token_url=KEYCLOAK_TOKEN_URL,
44 api_endpoint=f"{SERVER_URL}/api/v1",
45 private_key=Path("auth.key"),
46 private_net_key_file=Path("host.key"),
47 public_net_key_file=Path("host.pub"),
48 config_path=Path("config.yaml"),
49 authentication_path=Path("auth.json"),
50 systemd_service_path=Path("/usr/lib/systemd/system/meshadmin.service"),
51 meshadmin_etc_path=Path("/etc/meshadmin"),
52 )