Sgx cli grpc integration

add detee-shared dependency and implement BrainSgxCliMock
This commit is contained in:
Noor 2025-01-28 13:11:42 +05:30
parent f0f5edac00
commit 3e4672e9e4
Signed by: noormohammedb
GPG Key ID: D83EFB8B3B967146
5 changed files with 117 additions and 5 deletions

45
Cargo.lock generated

@ -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"

@ -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"

3
README.md Normal file

@ -0,0 +1,3 @@
# Brain mock
eval "$(ssh-agent -s)" && ssh-add ~/.ssh/id_ed25519

@ -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<BrainData>,
}
@ -35,6 +40,16 @@ impl BrainCliMock {
}
}
pub struct BrainSgxCliMock {
data: Arc<BrainData>,
}
impl BrainSgxCliMock {
pub fn new(data: Arc<BrainData>) -> Self {
Self { data }
}
}
#[tonic::async_trait]
impl BrainDaemon for BrainDaemonMock {
type RegisterNodeStream = Pin<Box<dyn Stream<Item = Result<Contract, Status>> + Send>>;
@ -162,11 +177,9 @@ impl BrainCli for BrainCliMock {
info!("Sending UpdateVMResp: {response:?}");
Ok(Response::new(response))
}
Err(e) => {
Err(Status::unknown(
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<detee_shared::pb::shared::Container>,
) -> Result<tonic::Response<NewContainerRes>, Status> {
dbg!(req);
Ok(Response::new(NewContainerRes {
..Default::default()
}))
}
async fn delete_container(
&self,
req: tonic::Request<ContainerFilters>,
) -> Result<tonic::Response<DeleteContainerRes>, Status> {
dbg!(req);
Ok(Response::new(DeleteContainerRes {
..Default::default()
}))
}
async fn inspect_container(
&self,
req: tonic::Request<detee_shared::pb::shared::Uuid>,
) -> Result<tonic::Response<ContainerInspectResp>, Status> {
dbg!(req);
Ok(Response::new(ContainerInspectResp {
..Default::default()
}))
}
async fn list_containers(
&self,
req: tonic::Request<ContainerFilters>,
) -> Result<tonic::Response<ContainerListResp>, Status> {
dbg!(req);
Ok(Response::new(ContainerListResp {
..Default::default()
}))
}
}

@ -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();