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

Open Beginner friendly
#831 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
74/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Quiet
Tech stack
python
Domain
backend

Research direction

Start in splunklib/ai/tools.py at _splunk_home(), then trace locate_app() and other callers that depend on it. Verify the absolute-path behavior for Windows drive-letter and UNC paths as well as POSIX paths, and confirm that valid Windows SPLUNK_HOME values no longer raise while invalid values still do.

Written by the indexing model from the issue text.

Description

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.
Dominant language
Python
Stars
743
Forks
387
Avg merge
42m
Merged PRs (30d)
4

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from splunk/splunk-sdk-python

All issues in splunk/splunk-sdk-python

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.