e00f46d723
Phase 1e of the v2 entity-model rewrite. With the FKs gone (Task 14b) and
the apply pipeline replaced (Task 14c), the v1 draft/publish entities have
no remaining v2 consumers.
Deleted entity classes:
src/Core/ZB.MOM.WW.OtOpcUa.Configuration/Entities/ConfigGeneration.cs
src/Core/ZB.MOM.WW.OtOpcUa.Configuration/Entities/ClusterNodeGenerationState.cs
Deleted enum classes (no v2 consumers):
src/Core/ZB.MOM.WW.OtOpcUa.Configuration/Enums/GenerationStatus.cs
src/Core/ZB.MOM.WW.OtOpcUa.Configuration/Enums/NodeApplyStatus.cs
OtOpcUaConfigDbContext changes:
- Removed DbSet<ConfigGeneration> ConfigGenerations
- Removed DbSet<ClusterNodeGenerationState> ClusterNodeGenerationStates
- Removed ConfigureConfigGeneration(modelBuilder) call + method body
- Removed ConfigureClusterNodeGenerationState(modelBuilder) call + body
- Tidied the "v2 deploy-model tables" header comment
Navigation property cleanup:
- ServerCluster.Generations collection -> removed
- ClusterNode.GenerationState navigation -> removed
doc-comment cref cleanup (replaced <see cref="X"/> with <c>X</c> for the
deleted types so the C# XML comment compiler doesn't fail with CS1574):
- Deployment.cs (cref to ConfigGeneration)
- NodeDeploymentState.cs (cref to ClusterNodeGenerationState)
- Core/OpcUa/EquipmentNodeWalker.cs (cref to ConfigGeneration in the
EquipmentNamespaceContent record's doc-comment; while there, removed
"All four collections are scoped to the same ConfigGeneration" since
that's no longer true in v2)
Verification:
src/Core/ZB.MOM.WW.OtOpcUa.Configuration -> 0 errors
src/Core/ZB.MOM.WW.OtOpcUa.Core -> 0 errors
tests/Core/ZB.MOM.WW.OtOpcUa.Configuration.Tests -> 0 errors
tests/Core/ZB.MOM.WW.OtOpcUa.Core.Tests -> 0 errors
whole solution -> 15 errors
(all in Server/Admin; transitive Server.Tests/Admin.Tests skip per the
parent's failure, so the per-project count dropped vs Task 14d's 71)
47 lines
1.7 KiB
C#
47 lines
1.7 KiB
C#
namespace ZB.MOM.WW.OtOpcUa.Configuration.Entities;
|
|
|
|
/// <summary>Physical OPC UA server node within a <see cref="ServerCluster"/>.</summary>
|
|
public sealed class ClusterNode
|
|
{
|
|
/// <summary>Stable per-machine logical ID, e.g. "LINE3-OPCUA-A".</summary>
|
|
public required string NodeId { get; set; }
|
|
|
|
public required string ClusterId { get; set; }
|
|
|
|
/// <summary>Machine hostname / IP.</summary>
|
|
public required string Host { get; set; }
|
|
|
|
public int OpcUaPort { get; set; } = 4840;
|
|
|
|
public int DashboardPort { get; set; } = 8081;
|
|
|
|
/// <summary>
|
|
/// OPC UA <c>ApplicationUri</c> — MUST be unique per node per OPC UA spec. Clients pin trust here.
|
|
/// Fleet-wide unique index enforces no two nodes share a value (decision #86).
|
|
/// Stored explicitly, NOT derived from <see cref="Host"/> at runtime — silent rewrite on
|
|
/// hostname change would break all client trust.
|
|
/// </summary>
|
|
public required string ApplicationUri { get; set; }
|
|
|
|
/// <summary>Primary = 200, Secondary = 150 by default.</summary>
|
|
public byte ServiceLevelBase { get; set; } = 200;
|
|
|
|
/// <summary>
|
|
/// Per-node override JSON keyed by DriverInstanceId, merged onto cluster-level DriverConfig
|
|
/// at apply time. Minimal by intent (decision #81). Nullable when no overrides exist.
|
|
/// </summary>
|
|
public string? DriverConfigOverridesJson { get; set; }
|
|
|
|
public bool Enabled { get; set; } = true;
|
|
|
|
public DateTime? LastSeenAt { get; set; }
|
|
|
|
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
|
|
|
public required string CreatedBy { get; set; }
|
|
|
|
// Navigation
|
|
public ServerCluster? Cluster { get; set; }
|
|
public ICollection<ClusterNodeCredential> Credentials { get; set; } = [];
|
|
}
|