Files
p5g-marvis/app/config.py
2026-04-24 12:33:52 -04:00

52 lines
2.5 KiB
Python

import os
def _env_bool(name: str, default: bool) -> bool:
value = os.getenv(name)
if value is None:
return default
return value.lower() in {"1", "true", "yes", "on"}
# Defaults assume the appliance-style deployment model where Marvis runs with
# host networking and talks to sibling services over host loopback.
PROMETHEUS_URL = os.getenv("MARVIS_PROMETHEUS_URL", "http://127.0.0.1:9090")
PROMETHEUS_PREFIX = os.getenv("MARVIS_PROMETHEUS_PREFIX", "/prometheus")
ALERTMANAGER_URL = os.getenv("MARVIS_ALERTMANAGER_URL", "http://127.0.0.1:9093")
# PLS discovery defaults assume the local appliance exposes PLS via Traefik.
PLS_BASE_URL = os.getenv("MARVIS_PLS_BASE_URL", "https://127.0.0.1/core/pls/api/1")
PLS_USERNAME = os.getenv("MARVIS_PLS_USERNAME", "")
PLS_PASSWORD = os.getenv("MARVIS_PLS_PASSWORD", "")
PLS_AUTH_BACKEND = os.getenv("MARVIS_PLS_AUTH_BACKEND", "local")
PLS_VERIFY_TLS = _env_bool("MARVIS_PLS_VERIFY_TLS", False)
# AI backend: "rule" | "openai" | "ollama"
AI_MODE = os.getenv("MARVIS_AI_MODE", "rule")
OPENAI_API_KEY = os.getenv("MARVIS_OPENAI_API_KEY", "")
OPENAI_MODEL = os.getenv("MARVIS_OPENAI_MODEL", "gpt-4o-mini")
# Override to use any OpenAI-compatible local LLM (llama.cpp, vLLM, LM Studio, etc.)
OPENAI_BASE_URL = os.getenv("MARVIS_OPENAI_BASE_URL", "https://api.openai.com")
OLLAMA_URL = os.getenv("MARVIS_OLLAMA_URL", "http://127.0.0.1:11434")
OLLAMA_MODEL = os.getenv("MARVIS_OLLAMA_MODEL", "llama3")
# Container/runtime integration
CONTAINER_RUNTIME = os.getenv("MARVIS_CONTAINER_RUNTIME", "docker")
CONTAINER_HOST = os.getenv("CONTAINER_HOST", "")
UERANSIM_IMAGE = os.getenv("MARVIS_UERANSIM_IMAGE", "p5g-marvis-ueransim")
UERANSIM_ENV_FILE = os.getenv("MARVIS_UERANSIM_ENV_FILE", "/app/config/ueransim.env")
UERANSIM_NETWORK_MODE = os.getenv("MARVIS_UERANSIM_NETWORK_MODE", "host")
UERANSIM_PRIVILEGED = os.getenv("MARVIS_UERANSIM_PRIVILEGED", "true").lower() in {"1", "true", "yes", "on"}
UERANSIM_CONTAINER_NAME = os.getenv("MARVIS_UERANSIM_CONTAINER_NAME", "marvis-ueransim-test")
# Maps Prometheus target_type label → display name
TARGET_TYPE_MAP = {
"amf": "AMF", "smf": "SMF", "upf": "UPF",
"udm": "UDM", "udr": "UDR", "nrf": "NRF",
"ausf": "AUSF", "pcf": "PCF", "mme": "MME",
"sgwc": "SGWC", "dra": "DRA", "dsm": "DSM",
"ncm": "NCM", "pls": "PLS",
}
ALL_NFS = ["AMF", "SMF", "UPF", "UDM", "UDR", "NRF", "AUSF", "PCF", "MME", "SGWC", "DRA", "DSM"]