Skip to content

Commit

Permalink
rest-api: Add feature flag to enable different endpoints during launc…
Browse files Browse the repository at this point in the history
…h time

Signed-off-by: Wang, Arron <arron.wang@intel.com>
  • Loading branch information
arronwy committed Aug 30, 2023
1 parent 8c0a335 commit 6632e00
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 11 deletions.
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,8 @@ Rust implementation of the container image management library.
[ocicrypt-rs](ocicrypt-rs)
Rust implementation of the OCI image encryption library.

[api-server-rest](api-server-rest)
CoCo Restful API server.

## License
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fconfidential-containers%2Fimage-rs.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fconfidential-containers%2Fimage-rs?ref=badge_large)
2 changes: 1 addition & 1 deletion api-server-rest/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
CoCo guest components use lightweight ttRPC for internal communication to reduce the memory footprint and dependency. But many internal services also needed by containers like `get_resource`, `get_evidence` and `get_token`, we export these services with restful API, now CoCo containers can easy access these API with http client. Here are some examples, for detail info, please refer [rest API](./openapi/api.json)

```bash
$ ./api-server-rest
$ ./api-server-rest --features=all
Starting API server on 127.0.0.1:8006
API Server listening on http://127.0.0.1:8006

Expand Down
2 changes: 1 addition & 1 deletion api-server-rest/openapi/api.json
Original file line number Diff line number Diff line change
Expand Up @@ -145,4 +145,4 @@
}
}
}
}
}
50 changes: 41 additions & 9 deletions api-server-rest/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ type Result<T> = std::result::Result<T, GenericError>;

pub const TTRPC_TIMEOUT: i64 = 50 * 1000 * 1000 * 1000;
const DEFAULT_BIND: &str = "127.0.0.1:8006";
const DEFAULT_FEATURE: &str = "resource";
const CDH_ADDR: &str = "unix:///run/confidential-containers/cdh.sock";
const AA_ADDR: &str =
"unix:///run/confidential-containers/attestation-agent/attestation-agent.sock";
Expand All @@ -37,6 +38,10 @@ struct Args {
#[arg(default_value_t = DEFAULT_BIND.to_string(), short, long = "bind")]
bind: String,

/// Features for rest API Server, allowed options: resource, attestation, all
#[arg(default_value_t = DEFAULT_FEATURE.to_string(), short, long = "features")]
features: String,

/// Listen address of confidential-data-hub TTRPC Service
#[arg(default_value_t = CDH_ADDR.to_string(), short, long = "cdh_addr")]
cdh_addr: String,
Expand All @@ -50,21 +55,48 @@ struct Args {
async fn main() -> Result<()> {
let args = Args::parse();

println!("Starting API server on {}", args.bind);
println!(
"Starting API server on {} with features {}",
args.bind, args.features
);

let address: SocketAddr = args.bind.parse().expect("Failed to parse the address");

let mut router = Router::new();

router.register_route(
CDH_ROOT,
Box::new(CDHClient::new(&args.cdh_addr, vec![Method::GET])?),
);
match args.features.as_str() {
"resource" => {
router.register_route(
CDH_ROOT,
Box::new(CDHClient::new(&args.cdh_addr, vec![Method::GET])?),
);
}

"attestation" => {
router.register_route(
AA_ROOT,
Box::new(AAClient::new(&args.aa_addr, vec![Method::GET])?),
);
}

"all" => {
router.register_route(
CDH_ROOT,
Box::new(CDHClient::new(&args.cdh_addr, vec![Method::GET])?),
);

router.register_route(
AA_ROOT,
Box::new(AAClient::new(&args.aa_addr, vec![Method::GET])?),
);
}

_ => {
eprintln!("Unknown features. Supported features are: resource, attestation, all.");
std::process::exit(1);
}
}

router.register_route(
AA_ROOT,
Box::new(AAClient::new(&args.aa_addr, vec![Method::GET])?),
);
let router = Arc::new(tokio::sync::Mutex::new(router));

let api_service = make_service_fn(|conn: &AddrStream| {
Expand Down

0 comments on commit 6632e00

Please sign in to comment.