Implement gRPC server for DaemonService with container creation dummy method
This commit is contained in:
		
							parent
							
								
									17782be7e2
								
							
						
					
					
						commit
						e1dbf5c899
					
				
							
								
								
									
										1265
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										1265
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										11
									
								
								Cargo.toml
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										11
									
								
								Cargo.toml
									
									
									
									
									
								
							| @ -4,3 +4,14 @@ version = "0.1.0" | ||||
| edition = "2021" | ||||
| 
 | ||||
| [dependencies] | ||||
| env_logger = "0.11.6" | ||||
| prost = "0.13.4" | ||||
| prost-types = "0.13.4" | ||||
| tokio = { version = "1.43.0", features = ["macros", "rt-multi-thread"] } | ||||
| tonic = "0.12.3" | ||||
| 
 | ||||
| # detee-shared = { git = "ssh://git@gitea.detee.cloud/noormohammedb/detee-shared" } | ||||
| detee-shared = { path = "../detee-shared" } | ||||
| 
 | ||||
| [build-dependencies] | ||||
| tonic-build = "0.12.3" | ||||
|  | ||||
							
								
								
									
										7
									
								
								build.rs
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										7
									
								
								build.rs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,7 @@ | ||||
| fn main() -> Result<(), Box<dyn std::error::Error>> { | ||||
|     tonic_build::configure() | ||||
|         .build_server(true) | ||||
|         .compile_protos(&["daemon.proto"], &["proto"]) | ||||
|         .unwrap_or_else(|e| panic!("Failed to compile protos {:?}", e)); | ||||
|     Ok(()) | ||||
| } | ||||
							
								
								
									
										19
									
								
								daemon.proto
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										19
									
								
								daemon.proto
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| syntax = "proto3"; | ||||
| package deamon; | ||||
| 
 | ||||
| message Empty { | ||||
| } | ||||
| 
 | ||||
| message NewContainerReq { | ||||
|   repeated string port = 1; | ||||
| } | ||||
| 
 | ||||
| message NewContainerRes { | ||||
|   string status = 1; | ||||
| } | ||||
| 
 | ||||
| service DaemonService { | ||||
|   rpc CreateContainer (NewContainerReq) returns (NewContainerRes); | ||||
|   // rpc ListContainer (NodeFilters) returns (stream NodeListResp); | ||||
| 
 | ||||
| } | ||||
							
								
								
									
										46
									
								
								src/grpc.rs
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										46
									
								
								src/grpc.rs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,46 @@ | ||||
| use std::{net::SocketAddr, str::FromStr}; | ||||
| 
 | ||||
| use tonic::transport::Server; | ||||
| 
 | ||||
| use detee_shared::pb::daemon::daemon_service_server::{ | ||||
|     DaemonService as DaemonServicePB, DaemonServiceServer as DaemonServiceServerPB, | ||||
| }; | ||||
| 
 | ||||
| use detee_shared::pb::daemon::NewContainerRes; | ||||
| use detee_shared::pb::shared::Container; | ||||
| pub struct DaemonServer {} | ||||
| 
 | ||||
| impl DaemonServer { | ||||
|     pub fn new() -> Self { | ||||
|         Self {} | ||||
|     } | ||||
| 
 | ||||
|     pub async fn start(&self) -> Result<(), Box<dyn std::error::Error>> { | ||||
|         let port: String = std::env::var("PORT").unwrap_or_else(|_| "33400".to_string()); | ||||
| 
 | ||||
|         let data = Self {}; | ||||
|         let addr = SocketAddr::from_str(format!("0.0.0.0:{port}").as_str())?; | ||||
| 
 | ||||
|         let daemon_server = DaemonServiceServerPB::new(data); | ||||
| 
 | ||||
|         println!("Listening on {}", addr); | ||||
| 
 | ||||
|         Server::builder() | ||||
|             .add_service(daemon_server) | ||||
|             .serve(addr) | ||||
|             .await?; | ||||
|         Ok(()) | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| #[tonic::async_trait] | ||||
| impl DaemonServicePB for DaemonServer { | ||||
|     async fn create_container( | ||||
|         &self, | ||||
|         request: tonic::Request<Container>, | ||||
|     ) -> Result<tonic::Response<NewContainerRes>, tonic::Status> { | ||||
|         let req_data = request.into_inner(); | ||||
|         dbg!(req_data); | ||||
|         Ok(tonic::Response::new(NewContainerRes::default())) | ||||
|     } | ||||
| } | ||||
							
								
								
									
										10
									
								
								src/main.rs
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										10
									
								
								src/main.rs
									
									
									
									
									
								
							| @ -1,3 +1,11 @@ | ||||
| fn main() { | ||||
| mod grpc; | ||||
| 
 | ||||
| use grpc::DaemonServer; | ||||
| 
 | ||||
| #[tokio::main] | ||||
| async fn main() -> Result<(), Box<dyn std::error::Error>> { | ||||
|     println!("Detee daemon"); | ||||
| 
 | ||||
|     DaemonServer::new().start().await?; | ||||
|     Ok(()) | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user