feat(commons): add deploy/admin/audit/redundancy/fleet message contracts

This commit is contained in:
Joseph Doherty
2026-05-26 04:27:18 -04:00
parent fee4a8c008
commit 5d3a5a40d7
10 changed files with 154 additions and 0 deletions
@@ -0,0 +1,15 @@
using ZB.MOM.WW.OtOpcUa.Commons.Types;
namespace ZB.MOM.WW.OtOpcUa.Commons.Messages.Deploy;
public enum ApplyAckOutcome { Applied, Failed }
/// <summary>
/// Per-node acknowledgment returned by <c>DriverHostActor</c> to the dispatching coordinator.
/// </summary>
public sealed record ApplyAck(
DeploymentId DeploymentId,
NodeId NodeId,
ApplyAckOutcome Outcome,
string? FailureReason,
CorrelationId CorrelationId);
@@ -0,0 +1,14 @@
using ZB.MOM.WW.OtOpcUa.Commons.Types;
namespace ZB.MOM.WW.OtOpcUa.Commons.Messages.Deploy;
/// <summary>
/// Coordinator-published event indicating that the deployment failed and was rolled back.
/// Includes the set of nodes that NACKed or timed out so the admin UI can surface which
/// node(s) are sticky on the prior good revision.
/// </summary>
public sealed record DeploymentFailed(
DeploymentId DeploymentId,
string FailureReason,
IReadOnlyList<NodeId> FailedNodes,
CorrelationId CorrelationId);
@@ -0,0 +1,13 @@
using ZB.MOM.WW.OtOpcUa.Commons.Types;
namespace ZB.MOM.WW.OtOpcUa.Commons.Messages.Deploy;
/// <summary>
/// Coordinator-published event indicating that every active driver node successfully applied
/// the deployment and the row in <c>Deployment</c> has been transitioned to <c>Sealed</c>.
/// </summary>
public sealed record DeploymentSealed(
DeploymentId DeploymentId,
RevisionHash RevisionHash,
DateTime SealedAtUtc,
CorrelationId CorrelationId);
@@ -0,0 +1,13 @@
using ZB.MOM.WW.OtOpcUa.Commons.Types;
namespace ZB.MOM.WW.OtOpcUa.Commons.Messages.Deploy;
/// <summary>
/// Sent from the admin-role <c>ConfigPublishCoordinator</c> singleton to each driver node's
/// <c>DriverHostActor</c>. Tells the node to fetch the deployment artifact identified by
/// <paramref name="DeploymentId"/> + <paramref name="RevisionHash"/> and apply it.
/// </summary>
public sealed record DispatchDeployment(
DeploymentId DeploymentId,
RevisionHash RevisionHash,
CorrelationId CorrelationId);