feat: Added GPU support feature for Remote Server with setup and status checks, including API endpoints and utility functions

This commit is contained in:
vishalkadam47
2024-11-02 15:15:58 +05:30
parent 3e467959c9
commit 1b6d8d803b
8 changed files with 361 additions and 46 deletions

View File

@@ -52,6 +52,10 @@ import {
writeMainConfig,
writeTraefikConfigInPath,
} from "@dokploy/server";
import {
checkGPUStatus,
setupGPUSupport,
} from "@dokploy/server/src/utils/gpu-setup";
import { generateOpenApiDocument } from "@dokploy/trpc-openapi";
import { TRPCError } from "@trpc/server";
import { sql } from "drizzle-orm";
@@ -650,6 +654,62 @@ export const settingsRouter = createTRPCRouter({
}
return { status: "not_cloud" };
}),
setupGPU: adminProcedure
.input(
z.object({
serverId: z.string(),
}),
)
.mutation(async ({ input }) => {
try {
if (IS_CLOUD) {
return { success: true };
}
if (!input.serverId) {
throw new TRPCError({
code: "BAD_REQUEST",
message: "Server ID is required",
});
}
await setupGPUSupport(input.serverId);
return { success: true };
} catch (error) {
throw new TRPCError({
code: "INTERNAL_SERVER_ERROR",
message:
error instanceof Error
? error.message
: "Failed to enable GPU support",
cause: error,
});
}
}),
checkGPUStatus: adminProcedure
.input(
z.object({
serverId: z.string().optional(),
}),
)
.query(async ({ input }) => {
if (IS_CLOUD) {
return {
driverInstalled: false,
driverVersion: undefined,
gpuModel: undefined,
runtimeInstalled: false,
runtimeConfigured: false,
cudaSupport: undefined,
cudaVersion: undefined,
memoryInfo: undefined,
availableGPUs: 0,
swarmEnabled: false,
gpuResources: 0,
};
}
return await checkGPUStatus(input.serverId);
}),
});
// {
// "Parallelism": 1,

View File

@@ -21,8 +21,6 @@ import {
import type { Session, User } from "lucia";
import superjson from "superjson";
import { ZodError } from "zod";
import { setupGPUSupport } from '@dokploy/server/src/utils/gpu-setup';
/**
* 1. CONTEXT
*
@@ -209,10 +207,3 @@ export const adminProcedure = t.procedure.use(({ ctx, next }) => {
},
});
});
const appRouter = t.router({
setupGPU: t.procedure.mutation(async () => {
await setupGPUSupport();
return { success: true };
}),
});