splunk / splunk/splunk-sdk-python
`SPLUNK_HOME` absolute-path check in `splunklib.ai.tools` fails on Windows
まだ誰も着手していません。
- 主要言語
- Python
- スター
- 743
- フォーク
- 387
- 平均マージ
- 42分
- マージ済み PR(30日)
- 4
説明
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.
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
splunklib/ai/tools.py の _splunk_home() から始め、続いて locate_app() と、それに依存する他の呼び出し元をたどってください。Windows のドライブ文字を含むパスおよび UNC パス、ならびに POSIX パスに対する絶対パスの動作を検証し、有効な Windows SPLUNK_HOME 値ではエラーが発生しなくなり、無効な値では引き続きエラーが発生することを確認してください。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- python
- 領域
- backend
- issue の種類
- バグ
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 活発さ
- 静か
- 明瞭さ
- 明確に書かれている
- 初心者へのやさしさ
- 74/100