11use feos_proto:: host_service:: {
2- CpuInfo , GetCpuInfoResponse , GetNetworkInfoResponse , HostnameResponse , MemInfo , MemoryResponse ,
3- NetDev ,
2+ CpuInfo , GetCpuInfoResponse , GetNetworkInfoResponse , GetVersionInfoResponse , HostnameResponse ,
3+ MemInfo , MemoryResponse , NetDev ,
44} ;
55use log:: { error, info, warn} ;
66use nix:: unistd;
@@ -22,7 +22,7 @@ pub async fn handle_hostname(responder: oneshot::Sender<Result<HostnameResponse,
2222 }
2323 Err ( e) => {
2424 let msg = format ! ( "Failed to get system hostname: {e}" ) ;
25- error ! ( "HOST_WORKER: ERROR - {msg}" ) ;
25+ error ! ( "HOST_WORKER: {msg}" ) ;
2626 Err ( Status :: internal ( msg) )
2727 }
2828 } ;
@@ -117,7 +117,7 @@ pub async fn handle_get_memory(responder: oneshot::Sender<Result<MemoryResponse,
117117 mem_info : Some ( mem_info) ,
118118 } ) ,
119119 Err ( e) => {
120- error ! ( "HOST_WORKER: ERROR - Failed to get memory info: {e}" ) ;
120+ error ! ( "HOST_WORKER: Failed to get memory info: {e}" ) ;
121121 Err ( Status :: internal ( format ! ( "Failed to get memory info: {e}" ) ) )
122122 }
123123 } ;
@@ -208,7 +208,7 @@ pub async fn handle_get_cpu_info(responder: oneshot::Sender<Result<GetCpuInfoRes
208208 let result = match read_and_parse_cpuinfo ( ) . await {
209209 Ok ( cpu_info) => Ok ( GetCpuInfoResponse { cpu_info } ) ,
210210 Err ( e) => {
211- error ! ( "HOST_WORKER: ERROR - Failed to get CPU info: {e}" ) ;
211+ error ! ( "HOST_WORKER: Failed to get CPU info: {e}" ) ;
212212 Err ( Status :: internal ( format ! ( "Failed to get CPU info: {e}" ) ) )
213213 }
214214 } ;
@@ -281,7 +281,7 @@ pub async fn handle_get_network_info(
281281 let result = match read_all_net_stats ( ) . await {
282282 Ok ( devices) => Ok ( GetNetworkInfoResponse { devices } ) ,
283283 Err ( e) => {
284- error ! ( "HOST_WORKER: ERROR - Failed to get network info: {e}" ) ;
284+ error ! ( "HOST_WORKER: Failed to get network info: {e}" ) ;
285285 Err ( Status :: internal ( format ! (
286286 "Failed to get network info from sysfs: {e}"
287287 ) ) )
@@ -294,3 +294,32 @@ pub async fn handle_get_network_info(
294294 ) ;
295295 }
296296}
297+
298+ pub async fn handle_get_version_info (
299+ responder : oneshot:: Sender < Result < GetVersionInfoResponse , Status > > ,
300+ ) {
301+ info ! ( "HOST_WORKER: Processing GetVersionInfo request." ) ;
302+
303+ let kernel_version_res = fs:: read_to_string ( "/proc/version" ) . await ;
304+
305+ let result = match kernel_version_res {
306+ Ok ( kernel_version) => {
307+ let feos_version = env ! ( "CARGO_PKG_VERSION" ) . to_string ( ) ;
308+ Ok ( GetVersionInfoResponse {
309+ kernel_version : kernel_version. trim ( ) . to_string ( ) ,
310+ feos_version,
311+ } )
312+ }
313+ Err ( e) => {
314+ let msg = format ! ( "Failed to read kernel version from /proc/version: {e}" ) ;
315+ error ! ( "HOST_WORKER: {msg}" ) ;
316+ Err ( Status :: internal ( msg) )
317+ }
318+ } ;
319+
320+ if responder. send ( result) . is_err ( ) {
321+ error ! (
322+ "HOST_WORKER: Failed to send response for GetVersionInfo. API handler may have timed out."
323+ ) ;
324+ }
325+ }
0 commit comments