Sgx cli grpc integration
add detee-shared dependency and implement BrainSgxCliMock
This commit is contained in:
parent
f0f5edac00
commit
3e4672e9e4
45
Cargo.lock
generated
45
Cargo.lock
generated
@ -221,6 +221,7 @@ version = "0.1.0"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"chrono",
|
"chrono",
|
||||||
"dashmap",
|
"dashmap",
|
||||||
|
"detee-shared",
|
||||||
"env_logger",
|
"env_logger",
|
||||||
"log",
|
"log",
|
||||||
"prost",
|
"prost",
|
||||||
@ -325,6 +326,19 @@ dependencies = [
|
|||||||
"parking_lot_core",
|
"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]]
|
[[package]]
|
||||||
name = "displaydoc"
|
name = "displaydoc"
|
||||||
version = "0.2.5"
|
version = "0.2.5"
|
||||||
@ -894,6 +908,16 @@ version = "0.2.168"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5aaeb2981e0606ca11d79718f8bb01164f1d6ed75080182d3abf017e6d244b6d"
|
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]]
|
[[package]]
|
||||||
name = "linux-raw-sys"
|
name = "linux-raw-sys"
|
||||||
version = "0.4.14"
|
version = "0.4.14"
|
||||||
@ -1486,6 +1510,21 @@ dependencies = [
|
|||||||
"serde",
|
"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]]
|
[[package]]
|
||||||
name = "shlex"
|
name = "shlex"
|
||||||
version = "1.3.0"
|
version = "1.3.0"
|
||||||
@ -1885,6 +1924,12 @@ version = "0.2.15"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
|
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "version_check"
|
||||||
|
version = "0.9.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "want"
|
name = "want"
|
||||||
version = "0.3.1"
|
version = "0.3.1"
|
||||||
|
@ -19,5 +19,8 @@ tokio-stream = "0.1.17"
|
|||||||
tonic = "0.12"
|
tonic = "0.12"
|
||||||
uuid = { version = "1.11.0", features = ["v4"] }
|
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]
|
[build-dependencies]
|
||||||
tonic-build = "0.12"
|
tonic-build = "0.12"
|
||||||
|
3
README.md
Normal file
3
README.md
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Brain mock
|
||||||
|
|
||||||
|
eval "$(ssh-agent -s)" && ssh-add ~/.ssh/id_ed25519
|
63
src/grpc.rs
63
src/grpc.rs
@ -15,6 +15,11 @@ use tokio::sync::mpsc;
|
|||||||
use tokio_stream::{wrappers::ReceiverStream, Stream, StreamExt};
|
use tokio_stream::{wrappers::ReceiverStream, Stream, StreamExt};
|
||||||
use tonic::{Request, Response, Status, Streaming};
|
use tonic::{Request, Response, Status, Streaming};
|
||||||
|
|
||||||
|
use detee_shared::pb::daemon::{
|
||||||
|
brain_sgx_cli_server::BrainSgxCli, ContainerFilters, ContainerInspectResp, ContainerListResp,
|
||||||
|
DeleteContainerRes, NewContainerRes,
|
||||||
|
};
|
||||||
|
|
||||||
pub struct BrainDaemonMock {
|
pub struct BrainDaemonMock {
|
||||||
data: Arc<BrainData>,
|
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]
|
#[tonic::async_trait]
|
||||||
impl BrainDaemon for BrainDaemonMock {
|
impl BrainDaemon for BrainDaemonMock {
|
||||||
type RegisterNodeStream = Pin<Box<dyn Stream<Item = Result<Contract, Status>> + Send>>;
|
type RegisterNodeStream = Pin<Box<dyn Stream<Item = Result<Contract, Status>> + Send>>;
|
||||||
@ -162,11 +177,9 @@ impl BrainCli for BrainCliMock {
|
|||||||
info!("Sending UpdateVMResp: {response:?}");
|
info!("Sending UpdateVMResp: {response:?}");
|
||||||
Ok(Response::new(response))
|
Ok(Response::new(response))
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(_) => Err(Status::unknown(
|
||||||
Err(Status::unknown(
|
|
||||||
"Update VM request failed due to error: {e}",
|
"Update VM request failed due to error: {e}",
|
||||||
))
|
)),
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -248,3 +261,45 @@ impl BrainCli for BrainCliMock {
|
|||||||
Ok(Response::new(Empty {}))
|
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::snp_proto::brain_daemon_server::BrainDaemonServer;
|
||||||
use grpc::BrainCliMock;
|
use grpc::BrainCliMock;
|
||||||
use grpc::BrainDaemonMock;
|
use grpc::BrainDaemonMock;
|
||||||
|
use grpc::BrainSgxCliMock;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use tonic::transport::Server;
|
use tonic::transport::Server;
|
||||||
|
|
||||||
|
use detee_shared::pb::daemon::brain_sgx_cli_server::BrainSgxCliServer;
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main() {
|
async fn main() {
|
||||||
env_logger::builder()
|
env_logger::builder()
|
||||||
@ -27,9 +30,12 @@ async fn main() {
|
|||||||
let daemon_server = BrainDaemonServer::new(BrainDaemonMock::new(data.clone()));
|
let daemon_server = BrainDaemonServer::new(BrainDaemonMock::new(data.clone()));
|
||||||
let cli_server = BrainCliServer::new(BrainCliMock::new(data.clone()));
|
let cli_server = BrainCliServer::new(BrainCliMock::new(data.clone()));
|
||||||
|
|
||||||
|
let sgx_cli_server = BrainSgxCliServer::new(BrainSgxCliMock::new(data.clone()));
|
||||||
|
|
||||||
Server::builder()
|
Server::builder()
|
||||||
.add_service(daemon_server)
|
.add_service(daemon_server)
|
||||||
.add_service(cli_server)
|
.add_service(cli_server)
|
||||||
|
.add_service(sgx_cli_server)
|
||||||
.serve(addr)
|
.serve(addr)
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
Loading…
Reference in New Issue
Block a user