Skip to content

Commit f672c73

Browse files
committed
agent: Add API EmitEvent
1 parent 9d886bb commit f672c73

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

guest-agent/rpc/proto/agent_rpc.proto

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ service DstackGuest {
3939
// Generates a TDX quote with given report data.
4040
rpc GetQuote(RawQuoteArgs) returns (GetQuoteResponse) {}
4141

42+
// Emit an event. This extends the event to RTMR3 on TDX platform.
43+
rpc EmitEvent(EmitEventArgs) returns (google.protobuf.Empty) {}
44+
4245
// Get worker info
4346
rpc Info(google.protobuf.Empty) returns (WorkerInfo) {}
4447
}
@@ -161,6 +164,13 @@ message GetQuoteResponse {
161164
bytes report_data = 3;
162165
}
163166

167+
message EmitEventArgs {
168+
// The event name
169+
string event = 1;
170+
// The event data
171+
bytes payload = 2;
172+
}
173+
164174
// The request to derive a key
165175
message WorkerInfo {
166176
// App ID

guest-agent/src/rpc_service.rs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ use dstack_guest_agent_rpc::{
66
dstack_guest_server::{DstackGuestRpc, DstackGuestServer},
77
tappd_server::{TappdRpc, TappdServer},
88
worker_server::{WorkerRpc, WorkerServer},
9-
DeriveK256KeyResponse, DeriveKeyArgs, GetKeyArgs, GetKeyResponse, GetQuoteResponse,
10-
GetTlsKeyArgs, GetTlsKeyResponse, RawQuoteArgs, TdxQuoteArgs, TdxQuoteResponse, WorkerInfo,
11-
WorkerVersion,
9+
DeriveK256KeyResponse, DeriveKeyArgs, EmitEventArgs, GetKeyArgs, GetKeyResponse,
10+
GetQuoteResponse, GetTlsKeyArgs, GetTlsKeyResponse, RawQuoteArgs, TdxQuoteArgs,
11+
TdxQuoteResponse, WorkerInfo, WorkerVersion,
1212
};
1313
use dstack_types::AppKeys;
1414
use fs_err as fs;
@@ -161,6 +161,13 @@ impl DstackGuestRpc for InternalRpcHandler {
161161
})
162162
}
163163

164+
async fn emit_event(self, request: EmitEventArgs) -> Result<()> {
165+
if self.state.config().simulator.enabled {
166+
return Ok(());
167+
}
168+
tdx_attest::extend_rtmr3(&request.event, &request.payload)
169+
}
170+
164171
async fn info(self) -> Result<WorkerInfo> {
165172
ExternalRpcHandler { state: self.state }.info().await
166173
}

0 commit comments

Comments
 (0)