mirror of
https://github.com/edera-dev/krata.git
synced 2025-08-03 05:10:55 +00:00
feat(power-management-core): implement GetHostCpuTopology RPC
Signed-off-by: Ariadne Conill <ariadne@ariadne.space>
This commit is contained in:
parent
dd1b5113dd
commit
20018b6170
@ -15,7 +15,8 @@ use krata::{
|
|||||||
ListDevicesReply, ListDevicesRequest, ListGuestsReply, ListGuestsRequest,
|
ListDevicesReply, ListDevicesRequest, ListGuestsReply, ListGuestsRequest,
|
||||||
PullImageReply, PullImageRequest, ReadGuestMetricsReply, ReadGuestMetricsRequest,
|
PullImageReply, PullImageRequest, ReadGuestMetricsReply, ReadGuestMetricsRequest,
|
||||||
ResolveGuestReply, ResolveGuestRequest, SnoopIdmReply, SnoopIdmRequest,
|
ResolveGuestReply, ResolveGuestRequest, SnoopIdmReply, SnoopIdmRequest,
|
||||||
WatchEventsReply, WatchEventsRequest,
|
WatchEventsReply, WatchEventsRequest, HostCpuTopologyRequest, HostCpuTopologyReply,
|
||||||
|
HostCpuTopologyInfo,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@ -552,4 +553,26 @@ impl ControlService for DaemonControlService {
|
|||||||
}
|
}
|
||||||
Ok(Response::new(ListDevicesReply { devices }))
|
Ok(Response::new(ListDevicesReply { devices }))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async fn get_host_cpu_topology(
|
||||||
|
&self,
|
||||||
|
request: Request<HostCpuTopologyRequest>,
|
||||||
|
) -> Result<Response<HostCpuTopologyReply>, Status> {
|
||||||
|
let _ = request.into_inner();
|
||||||
|
let power = self.runtime.power_management_context().await.map_err(ApiError::from)?;
|
||||||
|
let cputopo = power.cpu_topology().await.map_err(ApiError::from)?;
|
||||||
|
let mut cpus = vec![];
|
||||||
|
|
||||||
|
for cpu in cputopo {
|
||||||
|
cpus.push(HostCpuTopologyInfo {
|
||||||
|
core: cpu.core,
|
||||||
|
socket: cpu.socket,
|
||||||
|
node: cpu.node,
|
||||||
|
thread: cpu.thread,
|
||||||
|
class: cpu.class as i32,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(Response::new(HostCpuTopologyReply { cpus }))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user