now supports multi machine monitoring
This commit is contained in:
@@ -10,9 +10,14 @@ import type {
|
||||
UserMessageResponse,
|
||||
UserMessageQueueStatus,
|
||||
NowPlayingSession,
|
||||
MonitoringPollerStatus,
|
||||
MonitoringOverviewResponse,
|
||||
MonitoringStatus,
|
||||
MonitoringMetrics,
|
||||
DiskSpace,
|
||||
MonitoringMachine,
|
||||
MonitoringMachineInput,
|
||||
MonitoringMachineAction,
|
||||
MediaIndexStatus,
|
||||
MediaIndexActionResponse,
|
||||
MediaQueryResponse,
|
||||
@@ -109,6 +114,17 @@ async function postForm<T>(path: string, body: FormData): Promise<T> {
|
||||
return response.json();
|
||||
}
|
||||
|
||||
async function del<T>(path: string): Promise<T> {
|
||||
const response = await fetch(buildUrl(path), {
|
||||
method: "DELETE",
|
||||
headers: buildHeaders(false),
|
||||
});
|
||||
if (!response.ok) {
|
||||
throw new Error(`${response.status}: ${await readErrorDetail(response)}`);
|
||||
}
|
||||
return response.json();
|
||||
}
|
||||
|
||||
// Dashboard
|
||||
export const fetchCounts = () => get<MediaCounts>("/api/dashboard/counts");
|
||||
export const fetchLibraries = () =>
|
||||
@@ -121,23 +137,80 @@ export const fetchUsers = () => get<UserDirectoryResponse>("/api/users");
|
||||
export const fetchNowPlaying = fetchActivity;
|
||||
|
||||
// Monitoring
|
||||
export const fetchMonitoringStatus = () =>
|
||||
get<MonitoringStatus>("/api/monitoring/status");
|
||||
export const fetchMonitoringMachines = () =>
|
||||
get<MonitoringMachine[]>("/api/monitoring/machines");
|
||||
export const fetchMonitoringPoller = () =>
|
||||
get<MonitoringPollerStatus>("/api/monitoring/poller");
|
||||
export const fetchMonitoringOverview = () =>
|
||||
get<MonitoringOverviewResponse>("/api/dashboard/monitoring");
|
||||
export const fetchMonitoringStatus = (machineId?: string) =>
|
||||
get<MonitoringStatus>(
|
||||
"/api/monitoring/status",
|
||||
machineId ? { machine_id: machineId } : undefined,
|
||||
);
|
||||
export const fetchMonitoringMetrics = (
|
||||
lastSeconds?: number | null,
|
||||
maxLines = 70_000,
|
||||
machineId?: string,
|
||||
) =>
|
||||
get<MonitoringMetrics>("/api/monitoring/metrics", {
|
||||
...(lastSeconds == null ? {} : { last_seconds: String(lastSeconds) }),
|
||||
max_lines: String(maxLines),
|
||||
...(machineId ? { machine_id: machineId } : {}),
|
||||
});
|
||||
export const fetchDiskSpace = () => get<DiskSpace>("/api/monitoring/disk");
|
||||
export const startCollector = () =>
|
||||
post<{ message: string }>("/api/monitoring/start");
|
||||
export const stopCollector = () =>
|
||||
post<{ message: string }>("/api/monitoring/stop");
|
||||
export const restartCollector = () =>
|
||||
post<{ message: string }>("/api/monitoring/restart");
|
||||
export const fetchDiskSpace = (machineId?: string) =>
|
||||
get<DiskSpace>(
|
||||
"/api/monitoring/disk",
|
||||
machineId ? { machine_id: machineId } : undefined,
|
||||
);
|
||||
export const startCollector = (machineId?: string) =>
|
||||
post<{ message: string }>(
|
||||
machineId
|
||||
? `/api/monitoring/start?machine_id=${encodeURIComponent(machineId)}`
|
||||
: "/api/monitoring/start",
|
||||
);
|
||||
export const stopCollector = (machineId?: string) =>
|
||||
post<{ message: string }>(
|
||||
machineId
|
||||
? `/api/monitoring/stop?machine_id=${encodeURIComponent(machineId)}`
|
||||
: "/api/monitoring/stop",
|
||||
);
|
||||
export const restartCollector = (machineId?: string) =>
|
||||
post<{ message: string }>(
|
||||
machineId
|
||||
? `/api/monitoring/restart?machine_id=${encodeURIComponent(machineId)}`
|
||||
: "/api/monitoring/restart",
|
||||
);
|
||||
|
||||
export const fetchMonitoringSettings = () =>
|
||||
get<MonitoringMachine[]>("/api/settings/machines");
|
||||
export const fetchMonitoringMachineActions = (machineId: string, limit = 10) =>
|
||||
get<{ items: MonitoringMachineAction[]; total: number }>(
|
||||
`/api/monitoring/machines/${encodeURIComponent(machineId)}/actions`,
|
||||
{ limit: String(limit) },
|
||||
);
|
||||
export const saveMonitoringMachine = (machine: MonitoringMachineInput) =>
|
||||
fetch(
|
||||
buildUrl(
|
||||
machine.id
|
||||
? `/api/settings/machines/${encodeURIComponent(machine.id)}`
|
||||
: "/api/settings/machines",
|
||||
),
|
||||
{
|
||||
method: machine.id ? "PUT" : "POST",
|
||||
headers: buildHeaders(true),
|
||||
body: JSON.stringify(machine),
|
||||
},
|
||||
).then(async (response) => {
|
||||
if (!response.ok) {
|
||||
throw new Error(`${response.status}: ${await readErrorDetail(response)}`);
|
||||
}
|
||||
return response.json() as Promise<MonitoringMachine>;
|
||||
});
|
||||
export const deleteMonitoringMachine = (machineId: string) =>
|
||||
del<{ status: string }>(
|
||||
`/api/settings/machines/${encodeURIComponent(machineId)}`,
|
||||
);
|
||||
|
||||
// Media
|
||||
export const fetchMediaStatus = () =>
|
||||
|
||||
Reference in New Issue
Block a user