feat(commons): management command contracts for native alarm sources

This commit is contained in:
Joseph Doherty
2026-05-31 02:18:37 -04:00
parent 0c6f9a9cff
commit b1df6d5beb
3 changed files with 39 additions and 0 deletions
@@ -45,3 +45,18 @@ public record DeleteInstanceAlarmOverrideCommand(
string AlarmCanonicalName);
public record ListInstanceAlarmOverridesCommand(int InstanceId);
// Native alarm source overrides (per-instance retarget of an inherited source binding;
// null fields keep the inherited value).
public record SetInstanceNativeAlarmSourceOverrideCommand(
int InstanceId,
string SourceCanonicalName,
string? ConnectionNameOverride,
string? SourceReferenceOverride,
string? ConditionFilterOverride);
public record DeleteInstanceNativeAlarmSourceOverrideCommand(
int InstanceId,
string SourceCanonicalName);
public record ListInstanceNativeAlarmSourceOverridesCommand(int InstanceId);
@@ -14,6 +14,11 @@ public record DeleteTemplateAttributeCommand(int AttributeId);
public record AddTemplateAlarmCommand(int TemplateId, string Name, string TriggerType, int PriorityLevel, string? Description, string? TriggerConfiguration, bool IsLocked);
public record UpdateTemplateAlarmCommand(int AlarmId, string Name, string TriggerType, int PriorityLevel, string? Description, string? TriggerConfiguration, bool IsLocked);
public record DeleteTemplateAlarmCommand(int AlarmId);
// Native alarm source bindings (read-only mirror of an OPC UA A&C / MxGateway source's alarms)
public record AddTemplateNativeAlarmSourceCommand(int TemplateId, string Name, string ConnectionName, string SourceReference, string? ConditionFilter, string? Description, bool IsLocked);
public record UpdateTemplateNativeAlarmSourceCommand(int NativeAlarmSourceId, string Name, string ConnectionName, string SourceReference, string? ConditionFilter, string? Description, bool IsLocked);
public record DeleteTemplateNativeAlarmSourceCommand(int NativeAlarmSourceId);
public record ListTemplateNativeAlarmSourcesCommand(int TemplateId);
public record AddTemplateScriptCommand(int TemplateId, string Name, string Code, string? TriggerType, string? TriggerConfiguration, bool IsLocked, string? ParameterDefinitions = null, string? ReturnDefinition = null);
public record UpdateTemplateScriptCommand(int ScriptId, string Name, string Code, string? TriggerType, string? TriggerConfiguration, bool IsLocked, string? ParameterDefinitions = null, string? ReturnDefinition = null);
public record DeleteTemplateScriptCommand(int ScriptId);
@@ -73,6 +73,25 @@ public class ManagementCommandRegistryTests
Assert.Equal("CreateSite", ManagementCommandRegistry.GetCommandName(typeof(CreateSiteCommand)));
}
[Fact]
public void Resolve_NativeAlarmSourceCommands_AllRegistered()
{
Assert.Equal(typeof(AddTemplateNativeAlarmSourceCommand),
ManagementCommandRegistry.Resolve("AddTemplateNativeAlarmSource"));
Assert.Equal(typeof(UpdateTemplateNativeAlarmSourceCommand),
ManagementCommandRegistry.Resolve("UpdateTemplateNativeAlarmSource"));
Assert.Equal(typeof(DeleteTemplateNativeAlarmSourceCommand),
ManagementCommandRegistry.Resolve("DeleteTemplateNativeAlarmSource"));
Assert.Equal(typeof(ListTemplateNativeAlarmSourcesCommand),
ManagementCommandRegistry.Resolve("ListTemplateNativeAlarmSources"));
Assert.Equal(typeof(SetInstanceNativeAlarmSourceOverrideCommand),
ManagementCommandRegistry.Resolve("SetInstanceNativeAlarmSourceOverride"));
Assert.Equal(typeof(DeleteInstanceNativeAlarmSourceOverrideCommand),
ManagementCommandRegistry.Resolve("DeleteInstanceNativeAlarmSourceOverride"));
Assert.Equal(typeof(ListInstanceNativeAlarmSourceOverridesCommand),
ManagementCommandRegistry.Resolve("ListInstanceNativeAlarmSourceOverrides"));
}
/// <summary>A *Command record outside the Management namespace, for the negative test.</summary>
private record UnregisteredFakeCommand(int Id);
}