chore: remove dead machine-level Jellyfin/Jellyseerr fields
Follow-up #1 to the service-registry change. Jellyfin/Jellyseerr now resolve from the service registry, so the machine-level app fields are dead config. - dependencies.py: drop dead _jellyseerr_client_for; simplify _resolve_machine to SSH-only. - settings_store.py + routers/settings.py: remove jellyfin_*/jellyseerr_* from machine default config, get_machine_config, normalization, row mappers, and MachineInput. - frontend types + Settings.tsx: drop the fields and the Jellyfin/Jellyseerr form sections + service options. - Update frontend test fixtures. Existing DB rows may still carry these keys in config_json; they are inert and drop on the next machine save. Verification: backend ruff clean, pytest 222; frontend lint 0 errors, build success, 70 tests.
This commit is contained in:
@@ -54,3 +54,13 @@ All notable changes to Manage. Breaking changes are marked with **BREAKING**.
|
|||||||
- Machine-level Jellyfin/Jellyseerr app config still powers the Media/Users/Files
|
- Machine-level Jellyfin/Jellyseerr app config still powers the Media/Users/Files
|
||||||
pages. Migrating those onto the service registry is a separate follow-up change
|
pages. Migrating those onto the service registry is a separate follow-up change
|
||||||
(see `openspec/changes/service-registry/design.md` §12.5).
|
(see `openspec/changes/service-registry/design.md` §12.5).
|
||||||
|
|
||||||
|
## Follow-up #1 — remove dead machine Jellyfin/Jellyseerr fields
|
||||||
|
|
||||||
|
With Jellyfin/Jellyseerr now resolved from the service registry, the machine-level
|
||||||
|
Jellyfin/Jellyseerr fields are dead config. Removed from `dependencies.py` (dead
|
||||||
|
`_jellyseerr_client_for`; `_resolve_machine` simplified to SSH-only),
|
||||||
|
`services/settings_store.py`, `routers/settings.py` (`MachineInput`), frontend
|
||||||
|
types, the `Settings.tsx` form, and frontend test fixtures. Existing DB rows may
|
||||||
|
still carry these keys in `config_json`; they are inert and get dropped on the
|
||||||
|
next machine save. No data migration required.
|
||||||
|
|||||||
@@ -81,21 +81,6 @@ def _jellyfin_client_for(cache_key: tuple[str, str, str]) -> JellyfinClient:
|
|||||||
return JellyfinClient(url, api_key)
|
return JellyfinClient(url, api_key)
|
||||||
|
|
||||||
|
|
||||||
@lru_cache(maxsize=32)
|
|
||||||
def _jellyseerr_client_for(cache_key: tuple[str, str]) -> JellyseerrClient | None:
|
|
||||||
machine_id, url = cache_key
|
|
||||||
if not url:
|
|
||||||
return None
|
|
||||||
settings = get_settings_store().get_machine_config(machine_id) if machine_id else None
|
|
||||||
api_key = (settings or {}).get("jellyseerr_api_key") if settings else ""
|
|
||||||
if not api_key:
|
|
||||||
return None
|
|
||||||
logger.info(
|
|
||||||
"Creating Jellyseerr client machine_id=%s url=%s", machine_id or "<default>", url.rstrip("/") or "<unset>"
|
|
||||||
)
|
|
||||||
return JellyseerrClient(url, api_key)
|
|
||||||
|
|
||||||
|
|
||||||
@lru_cache(maxsize=32)
|
@lru_cache(maxsize=32)
|
||||||
def _ssh_client_for(
|
def _ssh_client_for(
|
||||||
cache_key: tuple[str, str, str, int, str, str | None, str | None, str | None, str | None],
|
cache_key: tuple[str, str, str, int, str, str | None, str | None, str | None, str | None],
|
||||||
@@ -154,6 +139,10 @@ def _ssh_client_for(
|
|||||||
|
|
||||||
|
|
||||||
def _resolve_machine(service: str, request: Request | None = None) -> dict[str, Any] | None:
|
def _resolve_machine(service: str, request: Request | None = None) -> dict[str, Any] | None:
|
||||||
|
"""Resolve an SSH/Files machine for the given transport service.
|
||||||
|
|
||||||
|
Jellyfin/Jellyseerr are resolved against the service registry, not here.
|
||||||
|
"""
|
||||||
store = get_settings_store()
|
store = get_settings_store()
|
||||||
machine_id = _request_machine_id(request)
|
machine_id = _request_machine_id(request)
|
||||||
if machine_id:
|
if machine_id:
|
||||||
@@ -161,11 +150,7 @@ def _resolve_machine(service: str, request: Request | None = None) -> dict[str,
|
|||||||
if machine and (service in machine.get("services", []) or service == "ssh"):
|
if machine and (service in machine.get("services", []) or service == "ssh"):
|
||||||
return machine
|
return machine
|
||||||
return machine
|
return machine
|
||||||
if service == "jellyfin":
|
if service == "ssh":
|
||||||
machines = store.list_machines_for_service("jellyfin")
|
|
||||||
elif service == "jellyseerr":
|
|
||||||
machines = [m for m in store.list_machines_for_service("jellyfin") if m.get("jellyseerr_url")]
|
|
||||||
elif service == "ssh":
|
|
||||||
machines = store.list_machines_for_service("files") or store.list_machines_for_service("monitoring")
|
machines = store.list_machines_for_service("files") or store.list_machines_for_service("monitoring")
|
||||||
else:
|
else:
|
||||||
machines = store.list_machines_for_service(service)
|
machines = store.list_machines_for_service(service)
|
||||||
|
|||||||
@@ -43,11 +43,6 @@ class MonitoringMachineInput(BaseModel):
|
|||||||
password: str = ""
|
password: str = ""
|
||||||
media_root: str = ""
|
media_root: str = ""
|
||||||
path_prefix: str = ""
|
path_prefix: str = ""
|
||||||
jellyfin_url: str = ""
|
|
||||||
jellyfin_user_id: str = ""
|
|
||||||
jellyfin_api_key: str = ""
|
|
||||||
jellyseerr_url: str = ""
|
|
||||||
jellyseerr_api_key: str = ""
|
|
||||||
notes: str = ""
|
notes: str = ""
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -44,11 +44,6 @@ def _default_local_machine() -> dict[str, Any]:
|
|||||||
"password": "",
|
"password": "",
|
||||||
"media_root": settings.media_root,
|
"media_root": settings.media_root,
|
||||||
"path_prefix": settings.path_prefix,
|
"path_prefix": settings.path_prefix,
|
||||||
"jellyfin_url": "",
|
|
||||||
"jellyfin_user_id": "",
|
|
||||||
"jellyfin_api_key": "",
|
|
||||||
"jellyseerr_url": "",
|
|
||||||
"jellyseerr_api_key": "",
|
|
||||||
"node_exporter_enabled": False,
|
"node_exporter_enabled": False,
|
||||||
"node_exporter_port": 9100,
|
"node_exporter_port": 9100,
|
||||||
"node_exporter_scrape_host": "",
|
"node_exporter_scrape_host": "",
|
||||||
@@ -306,11 +301,6 @@ class SettingsStore:
|
|||||||
"password_set": bool(data.get("password")),
|
"password_set": bool(data.get("password")),
|
||||||
"media_root": data.get("media_root", ""),
|
"media_root": data.get("media_root", ""),
|
||||||
"path_prefix": data.get("path_prefix", ""),
|
"path_prefix": data.get("path_prefix", ""),
|
||||||
"jellyfin_url": data.get("jellyfin_url", ""),
|
|
||||||
"jellyfin_user_id": data.get("jellyfin_user_id", ""),
|
|
||||||
"jellyfin_api_key_set": bool(data.get("jellyfin_api_key")),
|
|
||||||
"jellyseerr_url": data.get("jellyseerr_url", ""),
|
|
||||||
"jellyseerr_api_key_set": bool(data.get("jellyseerr_api_key")),
|
|
||||||
"node_exporter_enabled": bool(data.get("node_exporter_enabled", False)),
|
"node_exporter_enabled": bool(data.get("node_exporter_enabled", False)),
|
||||||
"node_exporter_port": int(data.get("node_exporter_port", 9100) or 9100),
|
"node_exporter_port": int(data.get("node_exporter_port", 9100) or 9100),
|
||||||
"node_exporter_scrape_host": data.get("node_exporter_scrape_host", ""),
|
"node_exporter_scrape_host": data.get("node_exporter_scrape_host", ""),
|
||||||
@@ -360,17 +350,6 @@ class SettingsStore:
|
|||||||
password = str(password or "")
|
password = str(password or "")
|
||||||
media_root = _current_str("media_root")
|
media_root = _current_str("media_root")
|
||||||
path_prefix = _current_str("path_prefix")
|
path_prefix = _current_str("path_prefix")
|
||||||
jellyfin_url = _current_str("jellyfin_url")
|
|
||||||
jellyfin_user_id = _current_str("jellyfin_user_id")
|
|
||||||
jellyfin_api_key = payload.get("jellyfin_api_key")
|
|
||||||
if jellyfin_api_key in (None, ""):
|
|
||||||
jellyfin_api_key = (current or {}).get("jellyfin_api_key", "")
|
|
||||||
jellyfin_api_key = str(jellyfin_api_key or "")
|
|
||||||
jellyseerr_url = _current_str("jellyseerr_url")
|
|
||||||
jellyseerr_api_key = payload.get("jellyseerr_api_key")
|
|
||||||
if jellyseerr_api_key in (None, ""):
|
|
||||||
jellyseerr_api_key = (current or {}).get("jellyseerr_api_key", "")
|
|
||||||
jellyseerr_api_key = str(jellyseerr_api_key or "")
|
|
||||||
node_exporter_enabled = bool(
|
node_exporter_enabled = bool(
|
||||||
payload.get("node_exporter_enabled")
|
payload.get("node_exporter_enabled")
|
||||||
if payload.get("node_exporter_enabled") is not None
|
if payload.get("node_exporter_enabled") is not None
|
||||||
@@ -402,11 +381,6 @@ class SettingsStore:
|
|||||||
"password": password,
|
"password": password,
|
||||||
"media_root": media_root,
|
"media_root": media_root,
|
||||||
"path_prefix": path_prefix,
|
"path_prefix": path_prefix,
|
||||||
"jellyfin_url": jellyfin_url,
|
|
||||||
"jellyfin_user_id": jellyfin_user_id,
|
|
||||||
"jellyfin_api_key": jellyfin_api_key,
|
|
||||||
"jellyseerr_url": jellyseerr_url,
|
|
||||||
"jellyseerr_api_key": jellyseerr_api_key,
|
|
||||||
"node_exporter_enabled": node_exporter_enabled,
|
"node_exporter_enabled": node_exporter_enabled,
|
||||||
"node_exporter_port": node_exporter_port,
|
"node_exporter_port": node_exporter_port,
|
||||||
"node_exporter_scrape_host": node_exporter_scrape_host,
|
"node_exporter_scrape_host": node_exporter_scrape_host,
|
||||||
@@ -430,11 +404,6 @@ class SettingsStore:
|
|||||||
"password": "",
|
"password": "",
|
||||||
"media_root": machine["media_root"],
|
"media_root": machine["media_root"],
|
||||||
"path_prefix": machine["path_prefix"],
|
"path_prefix": machine["path_prefix"],
|
||||||
"jellyfin_url": machine["jellyfin_url"],
|
|
||||||
"jellyfin_user_id": machine["jellyfin_user_id"],
|
|
||||||
"jellyfin_api_key": machine["jellyfin_api_key"],
|
|
||||||
"jellyseerr_url": machine["jellyseerr_url"],
|
|
||||||
"jellyseerr_api_key": machine["jellyseerr_api_key"],
|
|
||||||
"node_exporter_enabled": machine["node_exporter_enabled"],
|
"node_exporter_enabled": machine["node_exporter_enabled"],
|
||||||
"node_exporter_port": machine["node_exporter_port"],
|
"node_exporter_port": machine["node_exporter_port"],
|
||||||
"node_exporter_scrape_host": machine["node_exporter_scrape_host"],
|
"node_exporter_scrape_host": machine["node_exporter_scrape_host"],
|
||||||
@@ -520,11 +489,6 @@ class SettingsStore:
|
|||||||
"password": data.get("password", ""),
|
"password": data.get("password", ""),
|
||||||
"media_root": data.get("media_root", ""),
|
"media_root": data.get("media_root", ""),
|
||||||
"path_prefix": data.get("path_prefix", ""),
|
"path_prefix": data.get("path_prefix", ""),
|
||||||
"jellyfin_url": data.get("jellyfin_url", ""),
|
|
||||||
"jellyfin_user_id": data.get("jellyfin_user_id", ""),
|
|
||||||
"jellyfin_api_key": data.get("jellyfin_api_key", ""),
|
|
||||||
"jellyseerr_url": data.get("jellyseerr_url", ""),
|
|
||||||
"jellyseerr_api_key": data.get("jellyseerr_api_key", ""),
|
|
||||||
"node_exporter_enabled": bool(data.get("node_exporter_enabled", False)),
|
"node_exporter_enabled": bool(data.get("node_exporter_enabled", False)),
|
||||||
"node_exporter_port": int(data.get("node_exporter_port", 9100) or 9100),
|
"node_exporter_port": int(data.get("node_exporter_port", 9100) or 9100),
|
||||||
"node_exporter_scrape_host": data.get("node_exporter_scrape_host", ""),
|
"node_exporter_scrape_host": data.get("node_exporter_scrape_host", ""),
|
||||||
@@ -564,11 +528,6 @@ class SettingsStore:
|
|||||||
"password": machine["password"],
|
"password": machine["password"],
|
||||||
"media_root": machine["media_root"],
|
"media_root": machine["media_root"],
|
||||||
"path_prefix": machine["path_prefix"],
|
"path_prefix": machine["path_prefix"],
|
||||||
"jellyfin_url": machine["jellyfin_url"],
|
|
||||||
"jellyfin_user_id": machine["jellyfin_user_id"],
|
|
||||||
"jellyfin_api_key": machine["jellyfin_api_key"],
|
|
||||||
"jellyseerr_url": machine["jellyseerr_url"],
|
|
||||||
"jellyseerr_api_key": machine["jellyseerr_api_key"],
|
|
||||||
"node_exporter_enabled": machine["node_exporter_enabled"],
|
"node_exporter_enabled": machine["node_exporter_enabled"],
|
||||||
"node_exporter_port": machine["node_exporter_port"],
|
"node_exporter_port": machine["node_exporter_port"],
|
||||||
"node_exporter_scrape_host": machine["node_exporter_scrape_host"],
|
"node_exporter_scrape_host": machine["node_exporter_scrape_host"],
|
||||||
|
|||||||
@@ -52,8 +52,6 @@ import { Textarea } from "@/components/ui/textarea";
|
|||||||
const SERVICE_OPTIONS = [
|
const SERVICE_OPTIONS = [
|
||||||
{ value: "monitoring", label: "Monitoring" },
|
{ value: "monitoring", label: "Monitoring" },
|
||||||
{ value: "files", label: "Files" },
|
{ value: "files", label: "Files" },
|
||||||
{ value: "jellyfin", label: "Jellyfin" },
|
|
||||||
{ value: "jellyseerr", label: "Jellyseerr" },
|
|
||||||
{ value: "nextcloud", label: "Nextcloud" },
|
{ value: "nextcloud", label: "Nextcloud" },
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -114,7 +112,7 @@ function emptyMachine(
|
|||||||
name: mode === "local" ? "This machine" : "",
|
name: mode === "local" ? "This machine" : "",
|
||||||
mode,
|
mode,
|
||||||
enabled: true,
|
enabled: true,
|
||||||
services: mode === "local" ? ["monitoring", "files", "jellyfin"] : [],
|
services: mode === "local" ? ["monitoring", "files"] : [],
|
||||||
host: "",
|
host: "",
|
||||||
port: 22,
|
port: 22,
|
||||||
username: "",
|
username: "",
|
||||||
@@ -126,11 +124,6 @@ function emptyMachine(
|
|||||||
password: "",
|
password: "",
|
||||||
media_root: "",
|
media_root: "",
|
||||||
path_prefix: "",
|
path_prefix: "",
|
||||||
jellyfin_url: "",
|
|
||||||
jellyfin_user_id: "",
|
|
||||||
jellyfin_api_key: "",
|
|
||||||
jellyseerr_url: "",
|
|
||||||
jellyseerr_api_key: "",
|
|
||||||
notes: "",
|
notes: "",
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -169,8 +162,6 @@ function MachineEditor({
|
|||||||
const isLocal = draft.mode === "local";
|
const isLocal = draft.mode === "local";
|
||||||
const selectedSSHKey = sshKeys.find((key) => key.id === draft.ssh_key_id);
|
const selectedSSHKey = sshKeys.find((key) => key.id === draft.ssh_key_id);
|
||||||
const enabledServices = draft.services.length;
|
const enabledServices = draft.services.length;
|
||||||
const hasJellyfin = draft.services.includes("jellyfin");
|
|
||||||
const hasJellyseerr = draft.services.includes("jellyseerr");
|
|
||||||
const placeholderIfSet = (isSet: boolean | undefined) =>
|
const placeholderIfSet = (isSet: boolean | undefined) =>
|
||||||
isSet ? "Set, not shown" : undefined;
|
isSet ? "Set, not shown" : undefined;
|
||||||
return (
|
return (
|
||||||
@@ -398,99 +389,6 @@ function MachineEditor({
|
|||||||
/>
|
/>
|
||||||
</FormField>
|
</FormField>
|
||||||
</div>
|
</div>
|
||||||
{hasJellyfin && (
|
|
||||||
<>
|
|
||||||
<div className="col-span-12">
|
|
||||||
<SectionLabel
|
|
||||||
title="Jellyfin"
|
|
||||||
description="Library host and user selection for media browsing."
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div className="col-span-12 md:col-span-6">
|
|
||||||
<FormField label="Jellyfin URL">
|
|
||||||
<Input
|
|
||||||
value={draft.jellyfin_url}
|
|
||||||
onChange={(e) =>
|
|
||||||
setDraft((current) => ({
|
|
||||||
...current,
|
|
||||||
jellyfin_url: e.target.value,
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
</FormField>
|
|
||||||
</div>
|
|
||||||
<div className="col-span-12 md:col-span-6">
|
|
||||||
<FormField label="Jellyfin user ID">
|
|
||||||
<Input
|
|
||||||
value={draft.jellyfin_user_id}
|
|
||||||
onChange={(e) =>
|
|
||||||
setDraft((current) => ({
|
|
||||||
...current,
|
|
||||||
jellyfin_user_id: e.target.value,
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
</FormField>
|
|
||||||
</div>
|
|
||||||
<div className="col-span-12 md:col-span-6">
|
|
||||||
<FormField label="Jellyfin API key">
|
|
||||||
<Input
|
|
||||||
type="password"
|
|
||||||
placeholder={placeholderIfSet(
|
|
||||||
editingMachine?.jellyfin_api_key_set,
|
|
||||||
)}
|
|
||||||
value={draft.jellyfin_api_key}
|
|
||||||
onChange={(e) =>
|
|
||||||
setDraft((current) => ({
|
|
||||||
...current,
|
|
||||||
jellyfin_api_key: e.target.value,
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
</FormField>
|
|
||||||
</div>
|
|
||||||
</>
|
|
||||||
)}
|
|
||||||
{hasJellyseerr && (
|
|
||||||
<>
|
|
||||||
<div className="col-span-12">
|
|
||||||
<SectionLabel
|
|
||||||
title="Jellyseerr"
|
|
||||||
description="Optional request-manager enrichment for users and requests."
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div className="col-span-12 md:col-span-6">
|
|
||||||
<FormField label="Jellyseerr URL">
|
|
||||||
<Input
|
|
||||||
value={draft.jellyseerr_url}
|
|
||||||
onChange={(e) =>
|
|
||||||
setDraft((current) => ({
|
|
||||||
...current,
|
|
||||||
jellyseerr_url: e.target.value,
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
</FormField>
|
|
||||||
</div>
|
|
||||||
<div className="col-span-12 md:col-span-6">
|
|
||||||
<FormField label="Jellyseerr API key">
|
|
||||||
<Input
|
|
||||||
type="password"
|
|
||||||
placeholder={placeholderIfSet(
|
|
||||||
editingMachine?.jellyseerr_api_key_set,
|
|
||||||
)}
|
|
||||||
value={draft.jellyseerr_api_key}
|
|
||||||
onChange={(e) =>
|
|
||||||
setDraft((current) => ({
|
|
||||||
...current,
|
|
||||||
jellyseerr_api_key: e.target.value,
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
</FormField>
|
|
||||||
</div>
|
|
||||||
</>
|
|
||||||
)}
|
|
||||||
{isLocal && (
|
{isLocal && (
|
||||||
<div className="col-span-12 md:col-span-6">
|
<div className="col-span-12 md:col-span-6">
|
||||||
<FormField label="Local hint">
|
<FormField label="Local hint">
|
||||||
@@ -538,7 +436,7 @@ function MachineEditor({
|
|||||||
</AlertDescription>
|
</AlertDescription>
|
||||||
</Alert>
|
</Alert>
|
||||||
) : null}
|
) : null}
|
||||||
{!isLocal && !hasJellyfin && (
|
{!isLocal && enabledServices === 0 && (
|
||||||
<Alert>
|
<Alert>
|
||||||
<AlertDescription>
|
<AlertDescription>
|
||||||
SSH machines usually need monitoring or files enabled.
|
SSH machines usually need monitoring or files enabled.
|
||||||
@@ -584,13 +482,6 @@ function MachineEditor({
|
|||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
{hasJellyseerr && !draft.jellyseerr_url && (
|
|
||||||
<Alert>
|
|
||||||
<AlertDescription>
|
|
||||||
Jellyseerr is enabled, but no URL is configured yet.
|
|
||||||
</AlertDescription>
|
|
||||||
</Alert>
|
|
||||||
)}
|
|
||||||
</CardContent>
|
</CardContent>
|
||||||
</Card>
|
</Card>
|
||||||
);
|
);
|
||||||
@@ -1146,11 +1037,6 @@ export function Settings() {
|
|||||||
ssh_private_key_passphrase: "",
|
ssh_private_key_passphrase: "",
|
||||||
password: "",
|
password: "",
|
||||||
media_root: machine.media_root,
|
media_root: machine.media_root,
|
||||||
jellyfin_url: machine.jellyfin_url,
|
|
||||||
jellyfin_user_id: machine.jellyfin_user_id,
|
|
||||||
jellyfin_api_key: "",
|
|
||||||
jellyseerr_url: machine.jellyseerr_url,
|
|
||||||
jellyseerr_api_key: "",
|
|
||||||
notes: machine.notes,
|
notes: machine.notes,
|
||||||
},
|
},
|
||||||
machine,
|
machine,
|
||||||
@@ -1237,12 +1123,6 @@ export function Settings() {
|
|||||||
ssh_private_key_passphrase: "",
|
ssh_private_key_passphrase: "",
|
||||||
password: "",
|
password: "",
|
||||||
media_root: selectedMachine.media_root,
|
media_root: selectedMachine.media_root,
|
||||||
jellyfin_url: selectedMachine.jellyfin_url,
|
|
||||||
jellyfin_user_id:
|
|
||||||
selectedMachine.jellyfin_user_id,
|
|
||||||
jellyfin_api_key: "",
|
|
||||||
jellyseerr_url: selectedMachine.jellyseerr_url,
|
|
||||||
jellyseerr_api_key: "",
|
|
||||||
notes: selectedMachine.notes,
|
notes: selectedMachine.notes,
|
||||||
},
|
},
|
||||||
selectedMachine,
|
selectedMachine,
|
||||||
|
|||||||
@@ -48,11 +48,6 @@ function machine(
|
|||||||
password_set: false,
|
password_set: false,
|
||||||
media_root: "",
|
media_root: "",
|
||||||
path_prefix: "",
|
path_prefix: "",
|
||||||
jellyfin_url: "",
|
|
||||||
jellyfin_user_id: "",
|
|
||||||
jellyfin_api_key_set: false,
|
|
||||||
jellyseerr_url: "",
|
|
||||||
jellyseerr_api_key_set: false,
|
|
||||||
notes: "",
|
notes: "",
|
||||||
...overrides,
|
...overrides,
|
||||||
} as MonitoringMachine;
|
} as MonitoringMachine;
|
||||||
|
|||||||
@@ -30,11 +30,6 @@ function machineFixture(
|
|||||||
password_set: false,
|
password_set: false,
|
||||||
media_root: "",
|
media_root: "",
|
||||||
path_prefix: "",
|
path_prefix: "",
|
||||||
jellyfin_url: "",
|
|
||||||
jellyfin_user_id: "",
|
|
||||||
jellyfin_api_key_set: false,
|
|
||||||
jellyseerr_url: "",
|
|
||||||
jellyseerr_api_key_set: false,
|
|
||||||
notes: "",
|
notes: "",
|
||||||
...overrides,
|
...overrides,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -34,11 +34,6 @@ function machineFixture(
|
|||||||
password_set: false,
|
password_set: false,
|
||||||
media_root: "",
|
media_root: "",
|
||||||
path_prefix: "",
|
path_prefix: "",
|
||||||
jellyfin_url: "",
|
|
||||||
jellyfin_user_id: "",
|
|
||||||
jellyfin_api_key_set: false,
|
|
||||||
jellyseerr_url: "",
|
|
||||||
jellyseerr_api_key_set: false,
|
|
||||||
notes: "",
|
notes: "",
|
||||||
...overrides,
|
...overrides,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -53,11 +53,6 @@ function localMachine(
|
|||||||
password_set: false,
|
password_set: false,
|
||||||
media_root: "/mnt/media",
|
media_root: "/mnt/media",
|
||||||
path_prefix: "",
|
path_prefix: "",
|
||||||
jellyfin_url: "",
|
|
||||||
jellyfin_user_id: "",
|
|
||||||
jellyfin_api_key_set: false,
|
|
||||||
jellyseerr_url: "",
|
|
||||||
jellyseerr_api_key_set: false,
|
|
||||||
notes: "Primary node",
|
notes: "Primary node",
|
||||||
...overrides,
|
...overrides,
|
||||||
} as MonitoringMachine;
|
} as MonitoringMachine;
|
||||||
|
|||||||
@@ -175,11 +175,6 @@ export interface MonitoringMachine {
|
|||||||
password_set: boolean;
|
password_set: boolean;
|
||||||
media_root: string;
|
media_root: string;
|
||||||
path_prefix: string;
|
path_prefix: string;
|
||||||
jellyfin_url: string;
|
|
||||||
jellyfin_user_id: string;
|
|
||||||
jellyfin_api_key_set: boolean;
|
|
||||||
jellyseerr_url: string;
|
|
||||||
jellyseerr_api_key_set: boolean;
|
|
||||||
notes: string;
|
notes: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -200,11 +195,6 @@ export interface MonitoringMachineInput {
|
|||||||
password: string;
|
password: string;
|
||||||
media_root: string;
|
media_root: string;
|
||||||
path_prefix: string;
|
path_prefix: string;
|
||||||
jellyfin_url: string;
|
|
||||||
jellyfin_user_id: string;
|
|
||||||
jellyfin_api_key: string;
|
|
||||||
jellyseerr_url: string;
|
|
||||||
jellyseerr_api_key: string;
|
|
||||||
notes: string;
|
notes: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user