Files
dbis_core/src/infrastructure/compute/gpu-edge/gpu-edge-node.service.ts
2026-03-02 12:14:07 -08:00

110 lines
2.6 KiB
TypeScript

// GPU Edge Node Service
// GPU edge node management (MGN, QGN, ZKN, SAN types)
import prisma from '@/shared/database/prisma';
import { v4 as uuidv4 } from 'uuid';
import { logger } from '@/infrastructure/monitoring/logger';
export interface GpuEdgeNodeRequest {
nodeType: 'MGN' | 'QGN' | 'ZKN' | 'SAN'; // Metaverse GPU Node, Quantum Gateway Node, ZK Validation Node, Sovereign AI Node
regionId: string;
nodeName: string;
gpuCapacity: number; // GPU units
networkAddress: string;
quantumSafeTunnelingEnabled: boolean;
}
export interface GpuEdgeNodeResult {
nodeId: string;
nodeType: string;
regionId: string;
status: string;
}
export class GpuEdgeNodeService {
/**
* Create GPU edge node
* Node types:
* - MGN: Metaverse GPU Node (metaverse rendering)
* - QGN: Quantum Gateway Node (quantum proxy operations)
* - ZKN: ZK Validation Node (ZK ledger validation)
* - SAN: Sovereign AI Node (AI behavioral engines)
*/
async createGpuEdgeNode(
request: GpuEdgeNodeRequest
): Promise<GpuEdgeNodeResult> {
logger.info('GPU Edge: Creating edge node', { request });
const nodeId = `GPU-EDGE-${uuidv4()}`;
const node = await prisma.gpu_edge_nodes.create({
data: {
nodeId,
nodeType: request.nodeType,
regionId: request.regionId,
nodeName: request.nodeName,
gpuCapacity: request.gpuCapacity,
networkAddress: request.networkAddress,
quantumSafeTunnelingEnabled: request.quantumSafeTunnelingEnabled,
status: 'active',
},
});
logger.info('GPU Edge: Node created', { nodeId });
return {
nodeId,
nodeType: node.nodeType,
regionId: node.regionId,
status: node.status,
};
}
/**
* Get node by ID
*/
async getNode(nodeId: string) {
return await prisma.gpu_edge_nodes.findUnique({
where: { nodeId },
include: {
region: true,
tasks: true,
},
});
}
/**
* Get nodes by type
*/
async getNodesByType(nodeType: string) {
return await prisma.gpu_edge_nodes.findMany({
where: { nodeType, status: 'active' },
orderBy: { createdAt: 'desc' },
});
}
/**
* Get nodes for region
*/
async getNodesForRegion(regionId: string) {
return await prisma.gpu_edge_nodes.findMany({
where: { regionId, status: 'active' },
orderBy: { createdAt: 'desc' },
});
}
/**
* Update node status
*/
async updateNodeStatus(nodeId: string, status: string) {
return await prisma.gpu_edge_nodes.update({
where: { nodeId },
data: { status },
});
}
}
export const gpuEdgeNodeService = new GpuEdgeNodeService();