splunk / splunk/splunk-sdk-python

`SPLUNK_HOME` absolute-path check in `splunklib.ai.tools` fails on Windows

Offen Anfängerfreundlich
#831 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

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

  1. On a Windows host, set a valid absolute SPLUNK_HOME, e.g.:
    set SPLUNK_HOME=C:\Program Files\Splunk
    
  2. Run:
    from splunklib.ai.tools import locate_app
    locate_app()
    
    (or call _splunk_home() directly, or invoke anything in the SDK that depends on it, such as an app built with splunklib.ai.tools)
  3. Observe:
    RuntimeError: SPLUNK_HOME is not absolute
    
    even though SPLUNK_HOME is 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" when SPLUNK_HOME is 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.tools and is deployed on Windows — the failure is unconditional and unrelated to app configuration, credentials, or SPLUNK_HOME's actual correctness.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Ö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

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.