feat(control): add operator endpoint for node enrollment code (SMMNODE2) #53

Merged
ochenstarik-ui merged 4 commits from antigravity/node-enrollment-endpoint into main 2026-08-17 18:08:04 +00:00
3 changed files with 16 additions and 8 deletions
Showing only changes of commit 93eb507f7a - Show all commits

View file

@ -6,7 +6,7 @@ using ServerMonitorManager.Core;
namespace ServerMonitorManager.Control;
public sealed class NodeEnrollmentService
public sealed class NodeEnrollmentService : IDisposable
{
private readonly IOptions<ControlOptions> _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();
}
}

View file

@ -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);

View file

@ -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;