From 93eb507f7a0e89ec9897117af8ad1c8df100ad56 Mon Sep 17 00:00:00 2001 From: Ochenstarik Date: Tue, 18 Aug 2026 00:03:37 +0700 Subject: [PATCH] fix(control): implement IDisposable on NodeEnrollmentService and register event payload in SmmJsonContext --- .../NodeEnrollmentService.cs | 17 +++++++++-------- .../NodeEnrollmentModels.cs | 6 ++++++ src/ServerMonitorManager.Core/SmmJsonContext.cs | 1 + 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/ServerMonitorManager.Control/NodeEnrollmentService.cs b/src/ServerMonitorManager.Control/NodeEnrollmentService.cs index b96c2f3..a9701e4 100644 --- a/src/ServerMonitorManager.Control/NodeEnrollmentService.cs +++ b/src/ServerMonitorManager.Control/NodeEnrollmentService.cs @@ -6,7 +6,7 @@ using ServerMonitorManager.Core; namespace ServerMonitorManager.Control; -public sealed class NodeEnrollmentService +public sealed class NodeEnrollmentService : IDisposable { private readonly IOptions _options; private readonly ControlStore _store; @@ -59,13 +59,9 @@ public sealed class NodeEnrollmentService _broker.Publish( "agent.enrollment_code.issued", nodeId, - JsonSerializer.Serialize(new - { - node_id = nodeId, - actor, - node_address = nodeAddress, - expires_at = expiresAt - })); + JsonSerializer.Serialize( + new NodeEnrollmentCodeIssuedDetails(nodeId, actor, nodeAddress, expiresAt), + SmmJsonContext.Default.NodeEnrollmentCodeIssuedDetails)); var code = string.Join(".", "SMMNODE2", @@ -220,4 +216,9 @@ public sealed class NodeEnrollmentService .Replace('+', '-') .Replace('/', '_'); } + + public void Dispose() + { + _meshLock.Dispose(); + } } diff --git a/src/ServerMonitorManager.Core/NodeEnrollmentModels.cs b/src/ServerMonitorManager.Core/NodeEnrollmentModels.cs index ab8a344..00415ab 100644 --- a/src/ServerMonitorManager.Core/NodeEnrollmentModels.cs +++ b/src/ServerMonitorManager.Core/NodeEnrollmentModels.cs @@ -5,3 +5,9 @@ public sealed record NodeEnrollmentCodeResponse( string Code, string CaFingerprint, DateTimeOffset ExpiresAt); + +public sealed record NodeEnrollmentCodeIssuedDetails( + string NodeId, + string Actor, + string NodeAddress, + DateTimeOffset ExpiresAt); diff --git a/src/ServerMonitorManager.Core/SmmJsonContext.cs b/src/ServerMonitorManager.Core/SmmJsonContext.cs index d0aeccf..3e2449e 100644 --- a/src/ServerMonitorManager.Core/SmmJsonContext.cs +++ b/src/ServerMonitorManager.Core/SmmJsonContext.cs @@ -58,4 +58,5 @@ namespace ServerMonitorManager.Core; [JsonSerializable(typeof(ProvisioningEvent))] [JsonSerializable(typeof(ProvisioningEvent[]))] [JsonSerializable(typeof(NodeEnrollmentCodeResponse))] +[JsonSerializable(typeof(NodeEnrollmentCodeIssuedDetails))] public sealed partial class SmmJsonContext : JsonSerializerContext;