UNPKG

n8n

Version:

n8n Workflow Automation Tool

57 lines 3.49 kB
"use strict"; const api_types_1 = require("@n8n/api-types"); const backend_common_1 = require("@n8n/backend-common"); const di_1 = require("@n8n/di"); const bad_request_error_1 = require("../../../../errors/response-errors/bad-request.error"); const conflict_error_1 = require("../../../../errors/response-errors/conflict.error"); const otel_lifecycle_handler_1 = require("../../../../modules/otel/otel-lifecycle-handler"); const otel_settings_service_1 = require("../../../../modules/otel/otel-settings.service"); const otel_service_1 = require("../../../../modules/otel/otel.service"); const publisher_service_1 = require("../../../../scaling/pubsub/publisher.service"); const otel_mapper_1 = require("./otel.mapper"); const global_middleware_1 = require("../../shared/middlewares/global.middleware"); const otelHandlers = { getOtelSettings: [ (0, global_middleware_1.apiKeyHasScopeWithGlobalScopeFallback)({ scope: 'otel:manage' }), async (_req, res) => { const settings = await di_1.Container.get(otel_settings_service_1.OtelSettingsService).loadSettings(); return res.json((0, otel_mapper_1.toOtelSettingsResponse)(settings)); }, ], updateOtelSettings: [ (0, global_middleware_1.apiKeyHasScopeWithGlobalScopeFallback)({ scope: 'otel:manage' }), async (req, res) => { const payload = api_types_1.UpdateOtelSettingsDto.safeParse(req.body); if (!payload.success) { throw new bad_request_error_1.BadRequestError(payload.error.errors[0]?.message ?? 'Invalid request body'); } const settingsService = di_1.Container.get(otel_settings_service_1.OtelSettingsService); await settingsService.loadSettings(); const current = settingsService.getSettings(); const conflicts = current.envManagedFields.filter((key) => payload.data[key] !== current[key]); if (conflicts.length > 0) { throw new conflict_error_1.ConflictError(`The following field(s) are managed by environment variables and cannot be changed through the API: ${conflicts.join(', ')}`); } await settingsService.saveSettings(payload.data); await di_1.Container.get(otel_lifecycle_handler_1.OtelLifecycleHandler).onReloadOtelConfig(); await di_1.Container.get(backend_common_1.ModuleRegistry).refreshModuleSettings('otel'); void di_1.Container.get(publisher_service_1.Publisher).publishCommand({ command: 'reload-otel-config' }); return res.json((0, otel_mapper_1.toOtelSettingsResponse)(settingsService.getSettings())); }, ], testOtelTrace: [ (0, global_middleware_1.apiKeyHasScopeWithGlobalScopeFallback)({ scope: 'otel:manage' }), async (req, res) => { const payload = api_types_1.TestOtelTraceDto.safeParse(req.body); if (!payload.success) { throw new bad_request_error_1.BadRequestError(payload.error.errors[0]?.message ?? 'Invalid request body'); } const settingsService = di_1.Container.get(otel_settings_service_1.OtelSettingsService); const connection = settingsService.resolveTestConnection(payload.data); const result = await di_1.Container.get(otel_service_1.OtelService).sendTestTrace(connection); return res.json(result); }, ], }; module.exports = otelHandlers; //# sourceMappingURL=otel.handler.js.map