33 lines
1.0 KiB
Python
33 lines
1.0 KiB
Python
|
|
import os
|
||
|
|
import configparser
|
||
|
|
from pathlib import Path
|
||
|
|
|
||
|
|
# Base directory for the component
|
||
|
|
BASE_DIR = Path(__file__).resolve().parent.parent
|
||
|
|
CONFIG_FILE = BASE_DIR / 'config.ini'
|
||
|
|
|
||
|
|
def get_config_value(section: str, key: str, fallback: str = None) -> str:
|
||
|
|
"""
|
||
|
|
Get a configuration value with priority:
|
||
|
|
1. Environment Variable (OVPMON_{SECTION}_{KEY})
|
||
|
|
2. config.ini in the component root
|
||
|
|
3. Fallback value
|
||
|
|
"""
|
||
|
|
# 1. Check Environment Variable
|
||
|
|
env_key = f"OVPMON_{section.upper()}_{key.upper()}".replace('-', '_').replace(' ', '_')
|
||
|
|
env_val = os.getenv(env_key)
|
||
|
|
if env_val is not None:
|
||
|
|
return env_val
|
||
|
|
|
||
|
|
# 2. Check config.ini
|
||
|
|
if CONFIG_FILE.exists():
|
||
|
|
try:
|
||
|
|
config = configparser.ConfigParser()
|
||
|
|
config.read(CONFIG_FILE)
|
||
|
|
if config.has_section(section) and config.has_option(section, key):
|
||
|
|
return config.get(section, key)
|
||
|
|
except Exception as e:
|
||
|
|
print(f"[CONFIG] Error reading {CONFIG_FILE}: {e}")
|
||
|
|
|
||
|
|
return fallback
|