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; namespace ServerMonitorManager.Control;
public sealed class NodeEnrollmentService public sealed class NodeEnrollmentService : IDisposable
{ {
private readonly IOptions<ControlOptions> _options; private readonly IOptions<ControlOptions> _options;
private readonly ControlStore _store; private readonly ControlStore _store;
@ -59,13 +59,9 @@ public sealed class NodeEnrollmentService
_broker.Publish( _broker.Publish(
"agent.enrollment_code.issued", "agent.enrollment_code.issued",
nodeId, nodeId,
JsonSerializer.Serialize(new JsonSerializer.Serialize(
{ new NodeEnrollmentCodeIssuedDetails(nodeId, actor, nodeAddress, expiresAt),
node_id = nodeId, SmmJsonContext.Default.NodeEnrollmentCodeIssuedDetails));
actor,
node_address = nodeAddress,
expires_at = expiresAt
}));
var code = string.Join(".", var code = string.Join(".",
"SMMNODE2", "SMMNODE2",
@ -220,4 +216,9 @@ public sealed class NodeEnrollmentService
.Replace('+', '-') .Replace('+', '-')
.Replace('/', '_'); .Replace('/', '_');
} }
public void Dispose()
{
_meshLock.Dispose();
}
} }

View file

@ -5,3 +5,9 @@ public sealed record NodeEnrollmentCodeResponse(
string Code, string Code,
string CaFingerprint, string CaFingerprint,
DateTimeOffset ExpiresAt); 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(ProvisioningEvent[]))] [JsonSerializable(typeof(ProvisioningEvent[]))]
[JsonSerializable(typeof(NodeEnrollmentCodeResponse))] [JsonSerializable(typeof(NodeEnrollmentCodeResponse))]
[JsonSerializable(typeof(NodeEnrollmentCodeIssuedDetails))]
public sealed partial class SmmJsonContext : JsonSerializerContext; public sealed partial class SmmJsonContext : JsonSerializerContext;