splunk / splunk/splunk-sdk-python
`SPLUNK_HOME` absolute-path check in `splunklib.ai.tools` fails on Windows
Nessuno ha ancora preso questa issue.
- Lingua principale
- Python
- Stelle
- 743
- Fork
- 387
- Merge medio
- 42m
- PR unite (30g)
- 4
Descrizione
Describe the bug
_splunk_home() in splunklib/ai/tools.py validates that SPLUNK_HOME is an absolute path via splunk_home.startswith("/"). This check is POSIX-only. On Windows, SPLUNK_HOME is a drive-letter path (e.g. C:\Program Files\Splunk), which never starts with / even though it is a valid absolute path. As a result, _splunk_home() — and anything built on it, such as locate_app() — unconditionally raises RuntimeError("SPLUNK_HOME is not absolute") on Windows, regardless of the actual value of SPLUNK_HOME. This makes the splunklib.ai.tools module entirely unusable on Windows.
To Reproduce
- On a Windows host, set a valid absolute
SPLUNK_HOME, e.g.:set SPLUNK_HOME=C:\Program Files\Splunk - Run:
(or callfrom splunklib.ai.tools import locate_app locate_app()_splunk_home()directly, or invoke anything in the SDK that depends on it, such as an app built withsplunklib.ai.tools) - Observe:
even thoughRuntimeError: SPLUNK_HOME is not absoluteSPLUNK_HOMEis a correctly-formed absolute Windows path.
Expected behavior
_splunk_home() should recognize Windows absolute paths (drive-letter paths, UNC paths) as valid — e.g. by using os.path.isabs(splunk_home) instead of splunk_home.startswith("/"). Any SDK functionality depending on SPLUNK_HOME should work identically on Windows and POSIX systems given a correct value.
Logs or Screenshots
RuntimeError: SPLUNK_HOME is not absolute
Raised from:
def _splunk_home() -> str:
splunk_home = os.environ.get("SPLUNK_HOME", "/opt/splunk")
if not splunk_home.startswith("/"):
raise RuntimeError("SPLUNK_HOME is not absolute")
return splunk_home
Splunk (please complete the following information):
- Version: 10.4.2
- OS: Windows Server 2022 (build 20348)
- Deployment: single-instance
SDK (please complete the following information):
- Version: 3.0.0
- Language Runtime Version: Python 3.13.11
- OS: Windows Server 2022 (build 20348)
Additional context
- The default fallback value (
"/opt/splunk"whenSPLUNK_HOMEis unset) is also POSIX-only and would need a Windows-aware equivalent, or the fallback should be removed in favor of requiring an explicit value. - This affects any app that vendors or depends on
splunklib.ai.toolsand is deployed on Windows — the failure is unconditional and unrelated to app configuration, credentials, orSPLUNK_HOME's actual correctness.
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia in splunklib/ai/tools.py, in _splunk_home(), quindi segui locate_app() e gli altri chiamanti che dipendono da esso. Verifica il comportamento dei percorsi assoluti per le lettere di unità Windows e i percorsi UNC, così come per i percorsi POSIX, e conferma che i valori Windows SPLUNK_HOME validi non generino più errori, mentre quelli non validi continuino a generarli.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- backend
- Tipo di issue
- Bug
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Stato di attività
- Tranquilla
- Chiarezza
- Specificata chiaramente
- Idoneità per principianti
- 74/100