Enhance SwarmUI integration and GPU environment verification
- Updated CLI documentation to reflect the new handling of `CIVITAI_API_TOKEN`, which is now automatically passed to SwarmUI user settings during startup. - Improved the `render_access_panel` function to include additional warnings for idle-killer failures and stack errors, enhancing user feedback. - Introduced a new function `seed_swarmui_api_keys` to manage API key injection into SwarmUI, ensuring seamless integration with the Model Downloader. - Enhanced GPU environment verification logic to include fail-fast checks for critical components like CUDA, improving error handling and user notifications. - Updated tests to validate the new API key handling and access panel behavior, ensuring robustness in the integration process.
This commit is contained in:
@@ -228,6 +228,50 @@ def _download_url(host: str, version_id: int, file_info: dict) -> str:
|
||||
return f"https://{host}/api/download/models/{version_id}"
|
||||
|
||||
|
||||
def seed_swarmui_api_keys(cfg: Config, host: str, log: Log) -> None:
|
||||
"""Write CIVITAI_API_TOKEN (and HF if set) into SwarmUI user keys via SetAPIKey.
|
||||
|
||||
Swarm stores them in Users.ldb GenericData — needed for Model Downloader in the UI.
|
||||
Call after SwarmUI HTTP is up (after wait_backend / verify).
|
||||
"""
|
||||
import os
|
||||
|
||||
keys: dict[str, str] = {}
|
||||
if cfg.civitai_api_token:
|
||||
keys["civitai_api"] = cfg.civitai_api_token
|
||||
hf = (
|
||||
os.environ.get("HF_TOKEN")
|
||||
or os.environ.get("HUGGING_FACE_HUB_TOKEN")
|
||||
or ""
|
||||
).strip()
|
||||
if hf:
|
||||
keys["huggingface_api"] = hf
|
||||
if not keys:
|
||||
log("SwarmUI API keys: нет CIVITAI_API_TOKEN / HF_TOKEN — skip")
|
||||
return
|
||||
put_text(
|
||||
cfg,
|
||||
host,
|
||||
"/tmp/gpu-rent-swarm-api-keys.json",
|
||||
json.dumps(keys) + "\n",
|
||||
mode=0o600,
|
||||
)
|
||||
names = ", ".join(keys)
|
||||
log(f"SwarmUI: прокидываю API keys ({names})")
|
||||
try:
|
||||
run_python(
|
||||
cfg,
|
||||
host,
|
||||
_pkg_text("swarmui_set_api_keys.py"),
|
||||
remote_path="/tmp/gpu-rent-swarmui_set_api_keys.py",
|
||||
timeout=180,
|
||||
log=log,
|
||||
)
|
||||
except CloudError as exc:
|
||||
log(f"⚠ SwarmUI API keys: {exc}")
|
||||
run_ssh(cfg, host, "rm -f /tmp/gpu-rent-swarm-api-keys.json", check=False)
|
||||
|
||||
|
||||
def seed_civitai(cfg: Config, host: str, log: Log) -> None:
|
||||
entries = parse_models(cfg.models_manifest)
|
||||
if not cfg.civitai_api_token:
|
||||
|
||||
Reference in New Issue
Block a user