Skip to content

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

Description

@jdawsonqmulos

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions