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:
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)
- 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.
Describe the bug
_splunk_home()insplunklib/ai/tools.pyvalidates thatSPLUNK_HOMEis an absolute path viasplunk_home.startswith("/"). This check is POSIX-only. On Windows,SPLUNK_HOMEis 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 aslocate_app()— unconditionally raisesRuntimeError("SPLUNK_HOME is not absolute")on Windows, regardless of the actual value ofSPLUNK_HOME. This makes thesplunklib.ai.toolsmodule entirely unusable on Windows.To Reproduce
SPLUNK_HOME, e.g.:_splunk_home()directly, or invoke anything in the SDK that depends on it, such as an app built withsplunklib.ai.tools)SPLUNK_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 usingos.path.isabs(splunk_home)instead ofsplunk_home.startswith("/"). Any SDK functionality depending onSPLUNK_HOMEshould work identically on Windows and POSIX systems given a correct value.Logs or Screenshots
Raised from:
Splunk (please complete the following information):
SDK (please complete the following information):
Additional context
"/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.splunklib.ai.toolsand is deployed on Windows — the failure is unconditional and unrelated to app configuration, credentials, orSPLUNK_HOME's actual correctness.