#s4_v2 - Add API to update global system state on local agent
PiperOrigin-RevId: 803205564
Change-Id: I7724c3f27b077f56ceedf04bca15ca69c3048452
diff --git a/proto/safepower_agent.proto b/proto/safepower_agent.proto
index 39c6f25..1df4849 100644
--- a/proto/safepower_agent.proto
+++ b/proto/safepower_agent.proto
@@ -19,6 +19,11 @@
// Monitor state.
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.
+ rpc SystemStateUpdate(SystemState) returns (SystemStateUpdateResponse) {}
}
message GetSupportedActionsRequest {}
@@ -198,6 +203,8 @@
message MonitorStateRequest {}
+message SystemStateUpdateResponse {}
+
// LINT.IfChange(SystemState)
message SystemState {
// Included in all updates. This is a timestamp that is set at service start.
diff --git a/safepower_agent.cc b/safepower_agent.cc
index 3f64854..ef0053f 100644
--- a/safepower_agent.cc
+++ b/safepower_agent.cc
@@ -96,6 +96,17 @@
return DetachReactor(std::move(reactor));
}
+grpc::ServerUnaryReactor* SafepowerLocalAgentImpl::SystemStateUpdate(
+ grpc::CallbackServerContext* context,
+ const safepower_agent_proto::SystemState* /*request*/,
+ safepower_agent_proto::SystemStateUpdateResponse* /*response*/) {
+ grpc::ServerUnaryReactor* reactor = context->DefaultReactor();
+ if (AbortWhileDisruptionExpected(reactor)) return reactor;
+ reactor->Finish(grpc::Status(grpc::StatusCode::UNIMPLEMENTED,
+ "TODO: b/441385304 - Implementation pending"));
+ return reactor;
+}
+
grpc::ServerUnaryReactor* SafepowerLocalAgentImpl::GetSupportedActions(
grpc::CallbackServerContext* context,
const safepower_agent_proto::GetSupportedActionsRequest* /*request*/,
diff --git a/safepower_agent.h b/safepower_agent.h
index dc4b81c..d05c370 100644
--- a/safepower_agent.h
+++ b/safepower_agent.h
@@ -43,6 +43,11 @@
const safepower_agent_proto::GetSupportedActionsRequest* request,
safepower_agent_proto::GetSupportedActionsResponse* response) override;
+ grpc::ServerUnaryReactor* SystemStateUpdate(
+ grpc::CallbackServerContext* context,
+ const safepower_agent_proto::SystemState* request,
+ safepower_agent_proto::SystemStateUpdateResponse* response) override;
+
private:
std::shared_ptr<StateUpdater<safepower_agent_proto::SystemState>>
system_state_updater_;