feat(api): complete NaxOS management daemon, GitOps engine, ZFS controller, and test suite
CI & Test NaxOS Management API / test (push) Failing after 2m49s

This commit is contained in:
Lukas Holzner
2026-09-03 23:56:02 +02:00
parent 2f42656c2d
commit a283feedbd
27 changed files with 4882 additions and 2 deletions
+80
View File
@@ -0,0 +1,80 @@
import Fastify from 'fastify';
import cors from '@fastify/cors';
import { config } from './config/index.js';
import { ZfsService } from './services/zfs.service.js';
import { GitOpsService } from './services/gitops.service.js';
import { RebuildService } from './services/rebuild.service.js';
import { AppsService } from './services/apps.service.js';
import { SharesService } from './services/shares.service.js';
import { UsersService } from './services/users.service.js';
import { LogsService } from './services/logs.service.js';
import { PersesService } from './services/perses.service.js';
import { registerStorageRoutes } from './routes/storage.routes.js';
import { registerGitOpsRoutes } from './routes/gitops.routes.js';
import { registerAppsRoutes } from './routes/apps.routes.js';
import { registerSharesRoutes } from './routes/shares.routes.js';
import { registerUsersRoutes } from './routes/users.routes.js';
import { registerLogsRoutes } from './routes/logs.routes.js';
import { registerSystemRoutes } from './routes/system.routes.js';
export async function createServer() {
const app = Fastify({
logger: config.isDev
? {
transport: {
target: 'pino-pretty',
options: { colorize: true },
},
}
: true,
});
await app.register(cors, {
origin: true,
methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'],
});
// Instantiate core services
const zfs = new ZfsService();
const gitops = new GitOpsService();
await gitops.init();
const rebuild = new RebuildService();
const apps = new AppsService(gitops);
const shares = new SharesService(gitops);
const users = new UsersService(gitops);
const logs = new LogsService();
const perses = new PersesService(zfs, gitops);
// Health check
app.get('/health', async () => {
return { status: 'healthy', version: '1.0.0', uptime: process.uptime() };
});
// Register routes
registerStorageRoutes(app, zfs);
registerGitOpsRoutes(app, gitops);
registerAppsRoutes(app, apps);
registerSharesRoutes(app, shares);
registerUsersRoutes(app, users);
registerLogsRoutes(app, logs);
registerSystemRoutes(app, perses, rebuild);
return app;
}
async function start() {
try {
const app = await createServer();
await app.listen({ port: config.port, host: config.host });
console.log(`NaxOS Management Daemon running on http://${config.host}:${config.port}`);
} catch (err) {
console.error('Fatal error starting NaxOS Management Daemon:', err);
process.exit(1);
}
}
if (process.argv[1] && process.argv[1].endsWith('server.js')) {
start();
}