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

1import os 

2from dataclasses import dataclass 

3from pathlib import Path 

4 

5 

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 

23 

24 

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" 

35 

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 )