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"
|
edition = "2021"
|
||||||
|
|
||||||
[dependencies]
|
[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");
|
println!("Detee daemon");
|
||||||
|
|
||||||
|
DaemonServer::new().start().await?;
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user