fccaf8db0f
- proxmox-scheduler.service.ts: ein Cron-Auftrag je aktivem Mandant (proxmox-poll:<tenantId>), onApplicationBootstrap (nicht onModuleInit, Tender-Muster), Abfrageintervall = kleinstes pollIntervalMin der aktiven Server, ein fehlgeschlagener Server bricht die Tick-Schleife nicht ab, refreshTenant() zieht nach jedem Speichern sofort nach - proxmox.service.ts: loadActiveServersForScheduler() als einziger forSystem()-Aufruf des Moduls (Erlaubnisliste in rls-access-inventory.spec.ts), testConnection() schreibt nicht ins Zwischenlager, pollServer() bekommt eine Zehn-Sekunden-Sperre (T-DHH-06) - proxmox.controller.ts: POST servers/:id/test, create() zieht den Planer nach dem Anlegen sofort nach - Zugriffsklassifikation: proxmoxServer wechselt auf system-gebunden (Startpfad des Planers), proxmoxServerStatus bleibt gebunden Tore: api 1306/1306 (>=1240), type-check 4/4, rls-access-inventory und rls-coverage gruen. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
35 lines
1.3 KiB
TypeScript
35 lines
1.3 KiB
TypeScript
import { Logger, Module, OnModuleInit } from '@nestjs/common';
|
|
import { ModuleRegistryModule } from '../module-registry/module-registry.module';
|
|
import { ModuleRegistryService } from '../module-registry/module-registry.service';
|
|
import { ProxmoxController } from './proxmox.controller';
|
|
import { ProxmoxSchedulerService } from './proxmox-scheduler.service';
|
|
import { seedProxmoxModule } from './proxmox.seed';
|
|
import { ProxmoxService } from './proxmox.service';
|
|
|
|
/**
|
|
* NestJS module for the Proxmox feature (260923-dhh). Vorbild
|
|
* `DomaincheckModule`: seeds itself into the module registry on startup.
|
|
* `ScheduleModule` ist bereits global in `app.module.ts` registriert — der
|
|
* Planer (Aufgabe 4) braucht hier nichts zusaetzlich, nur die Aufnahme in
|
|
* `providers`.
|
|
*/
|
|
@Module({
|
|
imports: [ModuleRegistryModule],
|
|
controllers: [ProxmoxController],
|
|
providers: [ProxmoxService, ProxmoxSchedulerService],
|
|
})
|
|
export class ProxmoxModule implements OnModuleInit {
|
|
private readonly logger = new Logger(ProxmoxModule.name);
|
|
|
|
constructor(private readonly moduleRegistryService: ModuleRegistryService) {}
|
|
|
|
async onModuleInit(): Promise<void> {
|
|
try {
|
|
await seedProxmoxModule(this.moduleRegistryService);
|
|
this.logger.log('Proxmox module seeded in registry');
|
|
} catch (error) {
|
|
this.logger.error('Failed to seed proxmox module', error);
|
|
}
|
|
}
|
|
}
|