Skip to content

Commit

Permalink
Add Capabilities and Execution api endpoints
Browse files Browse the repository at this point in the history
  • Loading branch information
allada committed Dec 25, 2020
1 parent fcca6df commit 24dec02
Show file tree
Hide file tree
Showing 7 changed files with 151 additions and 7 deletions.
3 changes: 3 additions & 0 deletions cas/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ rust_binary(
srcs = ["cas_main.rs"],
deps = [
"//cas/grpc_service:cas_server",
"//cas/grpc_service:ac_server",
"//cas/grpc_service:capabilities_server",
"//cas/grpc_service:execution_server",
"//third_party:tokio",
"//third_party:tonic",
],
Expand Down
8 changes: 7 additions & 1 deletion cas/cas_main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,20 @@

use tonic::transport::Server;

use cas_server::{CasServer};
use ac_server::AcServer;
use capabilities_server::CapabilitiesServer;
use cas_server::CasServer;
use execution_server::ExecutionServer;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let addr = "0.0.0.0:50051".parse()?;

Server::builder()
.add_service(CasServer::default().into_service())
.add_service(AcServer::default().into_service())
.add_service(CapabilitiesServer::default().into_service())
.add_service(ExecutionServer::default().into_service())
.serve(addr)
.await?;

Expand Down
31 changes: 31 additions & 0 deletions cas/grpc_service/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,34 @@ rust_library(
],
visibility = ["//cas:__pkg__"]
)

rust_library(
name = "ac_server",
srcs = ["ac_server.rs"],
deps = [
"//proto",
"//third_party:tonic",
],
visibility = ["//cas:__pkg__"]
)

rust_library(
name = "capabilities_server",
srcs = ["capabilities_server.rs"],
deps = [
"//proto",
"//third_party:tonic",
],
visibility = ["//cas:__pkg__"]
)

rust_library(
name = "execution_server",
srcs = ["execution_server.rs"],
deps = [
"//proto",
"//third_party:tonic",
"//third_party:futures_core",
],
visibility = ["//cas:__pkg__"]
)
34 changes: 34 additions & 0 deletions cas/grpc_service/ac_server.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
// Copyright 2020 Nathan (Blaise) Bruer. All rights reserved.

use tonic::{Request, Response, Status};

use proto::build::bazel::remote::execution::v2::{
action_cache_server::ActionCache, action_cache_server::ActionCacheServer as Server,
ActionResult, GetActionResultRequest, UpdateActionResultRequest,
};

#[derive(Debug, Default)]
pub struct AcServer {}

impl AcServer {
pub fn into_service(self) -> Server<AcServer> {
Server::new(self)
}
}

#[tonic::async_trait]
impl ActionCache for AcServer {
async fn get_action_result(
&self,
_request: Request<GetActionResultRequest>,
) -> Result<Response<ActionResult>, Status> {
Err(Status::unimplemented("Not yet implemented"))
}

async fn update_action_result(
&self,
_request: Request<UpdateActionResultRequest>,
) -> Result<Response<ActionResult>, Status> {
Err(Status::unimplemented("Not yet implemented"))
}
}
27 changes: 27 additions & 0 deletions cas/grpc_service/capabilities_server.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// Copyright 2020 Nathan (Blaise) Bruer. All rights reserved.

use tonic::{Request, Response, Status};

use proto::build::bazel::remote::execution::v2::{
capabilities_server::Capabilities, capabilities_server::CapabilitiesServer as Server,
GetCapabilitiesRequest, ServerCapabilities,
};

#[derive(Debug, Default)]
pub struct CapabilitiesServer {}

impl CapabilitiesServer {
pub fn into_service(self) -> Server<CapabilitiesServer> {
Server::new(self)
}
}

#[tonic::async_trait]
impl Capabilities for CapabilitiesServer {
async fn get_capabilities(
&self,
_request: Request<GetCapabilitiesRequest>,
) -> Result<Response<ServerCapabilities>, Status> {
Err(Status::unimplemented("Not yet implemented"))
}
}
12 changes: 6 additions & 6 deletions cas/grpc_service/cas_server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,18 @@ use tonic::{Request, Response, Status};

use proto::build::bazel::remote::execution::v2::{
content_addressable_storage_server::ContentAddressableStorage,
content_addressable_storage_server::ContentAddressableStorageServer,
BatchReadBlobsRequest,
BatchReadBlobsResponse, BatchUpdateBlobsRequest, BatchUpdateBlobsResponse,
FindMissingBlobsRequest, FindMissingBlobsResponse, GetTreeRequest, GetTreeResponse,
content_addressable_storage_server::ContentAddressableStorageServer as Server,
BatchReadBlobsRequest, BatchReadBlobsResponse, BatchUpdateBlobsRequest,
BatchUpdateBlobsResponse, FindMissingBlobsRequest, FindMissingBlobsResponse, GetTreeRequest,
GetTreeResponse,
};

#[derive(Debug, Default)]
pub struct CasServer {}

impl CasServer {
pub fn into_service(self) -> ContentAddressableStorageServer<CasServer> {
ContentAddressableStorageServer::new(self)
pub fn into_service(self) -> Server<CasServer> {
Server::new(self)
}
}

Expand Down
43 changes: 43 additions & 0 deletions cas/grpc_service/execution_server.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
// Copyright 2020 Nathan (Blaise) Bruer. All rights reserved.

use std::pin::Pin;

use futures_core::Stream;

use tonic::{Request, Response, Status};

use proto::build::bazel::remote::execution::v2::{
execution_server::Execution, execution_server::ExecutionServer as Server, ExecuteRequest,
WaitExecutionRequest,
};
use proto::google::longrunning::Operation;

#[derive(Debug, Default)]
pub struct ExecutionServer {}

impl ExecutionServer {
pub fn into_service(self) -> Server<ExecutionServer> {
Server::new(self)
}
}

#[tonic::async_trait]
impl Execution for ExecutionServer {
type ExecuteStream =
Pin<Box<dyn Stream<Item = Result<Operation, Status>> + Send + Sync + 'static>>;
async fn execute(
&self,
_request: Request<ExecuteRequest>,
) -> Result<Response<Self::ExecuteStream>, Status> {
Err(Status::unimplemented("Not yet implemented"))
}

type WaitExecutionStream =
Pin<Box<dyn Stream<Item = Result<Operation, Status>> + Send + Sync + 'static>>;
async fn wait_execution(
&self,
_request: Request<WaitExecutionRequest>,
) -> Result<Response<Self::WaitExecutionStream>, Status> {
Err(Status::unimplemented("Not yet implemented"))
}
}

0 comments on commit 24dec02

Please sign in to comment.