splunk / splunk/splunk-sdk-python
`SPLUNK_HOME` absolute-path check in `splunklib.ai.tools` fails on Windows
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 743
- Forks
- 387
- Ø Merge
- 42 Min.
- Gemergte PRs (30 T.)
- 4
Beschreibung
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.
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne in splunklib/ai/tools.py bei _splunk_home(), und verfolge anschließend locate_app() sowie andere Aufrufer, die davon abhängen. Überprüfe das Verhalten bei absoluten Pfaden mit Windows-Laufwerksbuchstaben und UNC-Pfaden sowie bei POSIX-Pfaden, und bestätige, dass gültige Windows-SPLUNK_HOME-Werte keine Fehler mehr auslösen, während ungültige Werte dies weiterhin tun.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- backend
- Issue-Typ
- Bug
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Aktivitätsstatus
- Ruhig
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 74/100