#gpowerd Clarify comments in safepower_agent.proto.
PiperOrigin-RevId: 831460875
Change-Id: I02bead73f00b458643849313677a120be237b88f
diff --git a/proto/safepower_agent.proto b/proto/safepower_agent.proto
index 52c62f1..f403fc6 100644
--- a/proto/safepower_agent.proto
+++ b/proto/safepower_agent.proto
@@ -18,12 +18,25 @@
// Monitor reaction
rpc MonitorAction(MonitorActionRequest) returns (stream ActionStateLog) {}
- // Monitor state.
+ // This monitors the local state as detected by this agent.
+ //
+ // Note that this is not monitoring the global state. For example, if the
+ // state is updated via SystemStateUpdate, that update will not be reflected
+ // here unless independently determined locally.
rpc MonitorState(MonitorStateRequest) returns (stream SystemState) {}
- // Update the global system state. This is used by the safepower service to
- // update the state of the system as a whole, so that nodes that don't have a
- // complete picture can synhronize with other nodes.
+ // Update the global system state.
+ //
+ // The global state is owned by the Safepower service (S4) and is used to
+ // synchronize state between nodes that may not have a complete picture of
+ // the system. The safepower agent only uses this state to match
+ // conditions for actions and does not perform any validation on the
+ // received state.
+ //
+ // For example, to confirm that a SystemStateUpdate has been durably
+ // applied across an agent restart, use MonitorAction. MonitorAction tracks
+ // the action's effects persistently, unlike MonitorState which only
+ // reflects the local agent's current view.
rpc SystemStateUpdate(SystemState) returns (SystemStateUpdateResponse) {}
}
@@ -223,10 +236,12 @@
// This is mostly useful to detect service restarts.
uint64 epoch_ms = 1 [features.field_presence = EXPLICIT]; // required
- // The contents are platform and node specific. Keys are node entity tags and
- // values are state information for the corresponding node. This includes all
- // nodes for which this node can obtain status. For example, an arena
- // controller may have power state information for other nodes in the arena.
+ // The contents are platform and node specific. Keys usually correspond to
+ // node entity tags and values are state information for the corresponding
+ // node. This includes, but is not limited to, all nodes for which this agent
+ // can obtain status locally.
+ // For example, an arena controller may have power state information for
+ // other nodes in the arena.
map<string, NodeState> node_state = 2;
}