diff --git a/Cargo.lock b/Cargo.lock index af7229c..bcf8af9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -221,6 +221,7 @@ version = "0.1.0" dependencies = [ "chrono", "dashmap", + "detee-shared", "env_logger", "log", "prost", @@ -325,6 +326,19 @@ dependencies = [ "parking_lot_core", ] +[[package]] +name = "detee-shared" +version = "0.1.0" +source = "git+ssh://git@gitea.detee.cloud/noormohammedb/detee-shared#96501831509839a45d91ac793af905006b7612d5" +dependencies = [ + "base64", + "prost", + "serde", + "serde_yml", + "tonic", + "tonic-build", +] + [[package]] name = "displaydoc" version = "0.2.5" @@ -894,6 +908,16 @@ version = "0.2.168" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5aaeb2981e0606ca11d79718f8bb01164f1d6ed75080182d3abf017e6d244b6d" +[[package]] +name = "libyml" +version = "0.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3302702afa434ffa30847a83305f0a69d6abd74293b6554c18ec85c7ef30c980" +dependencies = [ + "anyhow", + "version_check", +] + [[package]] name = "linux-raw-sys" version = "0.4.14" @@ -1486,6 +1510,21 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_yml" +version = "0.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59e2dd588bf1597a252c3b920e0143eb99b0f76e4e082f4c92ce34fbc9e71ddd" +dependencies = [ + "indexmap 2.7.0", + "itoa", + "libyml", + "memchr", + "ryu", + "serde", + "version_check", +] + [[package]] name = "shlex" version = "1.3.0" @@ -1885,6 +1924,12 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + [[package]] name = "want" version = "0.3.1" diff --git a/Cargo.toml b/Cargo.toml index 5ef1cd6..fe8407d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,5 +19,8 @@ tokio-stream = "0.1.17" tonic = "0.12" uuid = { version = "1.11.0", features = ["v4"] } +detee-shared = { git = "ssh://git@gitea.detee.cloud/noormohammedb/detee-shared" } +# detee-shared = { path = "../detee-shared" } + [build-dependencies] tonic-build = "0.12" diff --git a/README.md b/README.md new file mode 100644 index 0000000..a818250 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# Brain mock + +eval "$(ssh-agent -s)" && ssh-add ~/.ssh/id_ed25519 \ No newline at end of file diff --git a/src/grpc.rs b/src/grpc.rs index fcad76d..90a236e 100644 --- a/src/grpc.rs +++ b/src/grpc.rs @@ -15,6 +15,11 @@ use tokio::sync::mpsc; use tokio_stream::{wrappers::ReceiverStream, Stream, StreamExt}; use tonic::{Request, Response, Status, Streaming}; +use detee_shared::pb::daemon::{ + brain_sgx_cli_server::BrainSgxCli, ContainerFilters, ContainerInspectResp, ContainerListResp, + DeleteContainerRes, NewContainerRes, +}; + pub struct BrainDaemonMock { data: Arc, } @@ -35,6 +40,16 @@ impl BrainCliMock { } } +pub struct BrainSgxCliMock { + data: Arc, +} + +impl BrainSgxCliMock { + pub fn new(data: Arc) -> Self { + Self { data } + } +} + #[tonic::async_trait] impl BrainDaemon for BrainDaemonMock { type RegisterNodeStream = Pin> + Send>>; @@ -162,11 +177,9 @@ impl BrainCli for BrainCliMock { info!("Sending UpdateVMResp: {response:?}"); Ok(Response::new(response)) } - Err(e) => { - Err(Status::unknown( - "Update VM request failed due to error: {e}", - )) - } + Err(_) => Err(Status::unknown( + "Update VM request failed due to error: {e}", + )), } } @@ -248,3 +261,45 @@ impl BrainCli for BrainCliMock { Ok(Response::new(Empty {})) } } + +#[tonic::async_trait] +impl BrainSgxCli for BrainSgxCliMock { + async fn create_container( + &self, + req: tonic::Request, + ) -> Result, Status> { + dbg!(req); + Ok(Response::new(NewContainerRes { + ..Default::default() + })) + } + + async fn delete_container( + &self, + req: tonic::Request, + ) -> Result, Status> { + dbg!(req); + Ok(Response::new(DeleteContainerRes { + ..Default::default() + })) + } + + async fn inspect_container( + &self, + req: tonic::Request, + ) -> Result, Status> { + dbg!(req); + Ok(Response::new(ContainerInspectResp { + ..Default::default() + })) + } + async fn list_containers( + &self, + req: tonic::Request, + ) -> Result, Status> { + dbg!(req); + Ok(Response::new(ContainerListResp { + ..Default::default() + })) + } +} diff --git a/src/main.rs b/src/main.rs index 4bf30f7..d29b42c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -6,9 +6,12 @@ use grpc::snp_proto::brain_cli_server::BrainCliServer; use grpc::snp_proto::brain_daemon_server::BrainDaemonServer; use grpc::BrainCliMock; use grpc::BrainDaemonMock; +use grpc::BrainSgxCliMock; use std::sync::Arc; use tonic::transport::Server; +use detee_shared::pb::daemon::brain_sgx_cli_server::BrainSgxCliServer; + #[tokio::main] async fn main() { env_logger::builder() @@ -27,9 +30,12 @@ async fn main() { let daemon_server = BrainDaemonServer::new(BrainDaemonMock::new(data.clone())); let cli_server = BrainCliServer::new(BrainCliMock::new(data.clone())); + let sgx_cli_server = BrainSgxCliServer::new(BrainSgxCliMock::new(data.clone())); + Server::builder() .add_service(daemon_server) .add_service(cli_server) + .add_service(sgx_cli_server) .serve(addr) .await .unwrap();