docs: record gateway-level live verification of AckMsg-as-operator acks
ci / nightly-windev (push) Has been skipped
ci / windows-x86 (push) Successful in 1m21s
ci / nightly-windev (pull_request) Has been skipped
ci / java (push) Successful in 2m3s
ci / portable (push) Failing after 2m19s
ci / windows-x86 (pull_request) Successful in 1m19s
ci / java (pull_request) Successful in 2m2s
ci / portable (pull_request) Failing after 2m17s
ci / nightly-windev (push) Has been skipped
ci / windows-x86 (push) Successful in 1m21s
ci / nightly-windev (pull_request) Has been skipped
ci / java (push) Successful in 2m3s
ci / portable (push) Failing after 2m19s
ci / windows-x86 (pull_request) Successful in 1m19s
ci / java (pull_request) Successful in 2m2s
ci / portable (pull_request) Failing after 2m17s
Claude-Session: https://claude.ai/code/session_016J6isfcgqy4SB2RK3ZvFvT
This commit is contained in:
@@ -492,3 +492,26 @@ The gateway acknowledges by authenticating the operator and writing `AckMsg`
|
|||||||
(`docs/DesignDecisions.md`, "Alarm acknowledgement writes AckMsg as the
|
(`docs/DesignDecisions.md`, "Alarm acknowledgement writes AckMsg as the
|
||||||
authenticated operator"). The managed ack consumer and the second wnwrap ack
|
authenticated operator"). The managed ack consumer and the second wnwrap ack
|
||||||
consumer were removed.
|
consumer were removed.
|
||||||
|
|
||||||
|
### Gateway-level verification
|
||||||
|
|
||||||
|
The same result holds end to end through the gateway. With the feature build deployed on
|
||||||
|
the windev rig and `TestAlarm001` raised, an `AcknowledgeAlarm` RPC for
|
||||||
|
`Galaxy!TestArea.TestMachine_001.TestAlarm001` with `operator_user=Administrator` and an
|
||||||
|
empty password returned `PROTOCOL_STATUS_CODE_OK`, `hresult` 0. `.Acked` turned True,
|
||||||
|
`.AckMsg` held the comment, and the Historian logged the `ACK_ALM` row with
|
||||||
|
`Operator=Administrator`, `DomainName=ArchestrA`, `UserFullName=Administrator`,
|
||||||
|
`OperatorNode=MxGateway` (the default `AckClientName`), and `Description` = the comment.
|
||||||
|
|
||||||
|
A wrong password, or a user Galaxy security does not know, makes `AuthenticateUser`
|
||||||
|
throw `ArgumentException` (`E_INVALIDARG`, 0x80070057) rather than a `COMException`.
|
||||||
|
That is why the writer classifies interop failures by HRESULT across exception types.
|
||||||
|
Such an ack returns `PROTOCOL_STATUS_CODE_MXACCESS_FAILURE`, the alarm stays unacked,
|
||||||
|
the Historian gains no ack row, and the password string does not appear in the gateway
|
||||||
|
log, `stdout.log`, or `stderr.log`. A non-Galaxy provider reference returns
|
||||||
|
`PROTOCOL_STATUS_CODE_INVALID_REQUEST` with `hresult` -1, and an empty `operator_user`
|
||||||
|
returns gRPC `InvalidArgument`.
|
||||||
|
|
||||||
|
The GUID arm of the ack command was not driven live. The public alarm RPCs expose only
|
||||||
|
the full reference, so clients reach the by-name arm; worker unit tests cover the GUID
|
||||||
|
arm.
|
||||||
|
|||||||
Reference in New Issue
Block a user