diff --git a/controller/src/main.rs b/controller/src/main.rs index 157c5ee..e71b414 100644 --- a/controller/src/main.rs +++ b/controller/src/main.rs @@ -1,9 +1,12 @@ use anyhow::{anyhow, Result}; use clap::Parser; -use dropshot::{ - endpoint, ApiDescription, ConfigDropshot, HttpError, HttpResponseOk, RequestContext, - ServerBuilder, -}; +use dropshot::endpoint; +use dropshot::ApiDescription; +use dropshot::ConfigDropshot; +use dropshot::HttpError; +use dropshot::HttpResponseOk; +use dropshot::RequestContext; +use dropshot::ServerBuilder; use schemars::JsonSchema; use serde::Serialize; use slog::Drain; @@ -30,7 +33,7 @@ struct VersionInfo { method = GET, path = "/version", }] -async fn api_version(_: RequestContext<Arc<()>>) -> Result<HttpResponseOk<VersionInfo>, HttpError> { +async fn api_version(rqctx: RequestContext<Arc<()>>) -> Result<HttpResponseOk<VersionInfo>, HttpError> { let ver = VersionInfo { name: env!("CARGO_PKG_NAME").to_string(), version: env!("CARGO_PKG_VERSION").to_string(), @@ -43,6 +46,17 @@ async fn main() -> Result<()> { let _args = Cli::parse(); let fmt_layer = tracing_subscriber::fmt::layer(); + let mut config_dropshot = ConfigDropshot::default(); + config_dropshot.bind_address = SocketAddr::from_str("0.0.0.0:9474").unwrap(); + config_dropshot.request_body_max_bytes = 1024 * 1024; + + // Adapt the Dropshot logger to tracing + let dropshot_logger = { + let level_drain = slog::LevelFilter(TracingSlogDrain, slog::Level::Debug).fuse(); + let async_drain = slog_async::Async::new(level_drain).build().fuse(); + slog::Logger::root(async_drain, slog::o!()) + }; + tracing_subscriber::registry() .with(tracing_subscriber::EnvFilter::from_default_env()) .with(fmt_layer) @@ -53,22 +67,10 @@ async fn main() -> Result<()> { let mut api = ApiDescription::new(); api.register(api_version).unwrap(); - let config = ConfigDropshot { - bind_address: SocketAddr::from_str("0.0.0.0:9474").unwrap(), - ..Default::default() - }; - - // Adapt the Dropshot logger to tracing - let logger = { - let level_drain = slog::LevelFilter(TracingSlogDrain, slog::Level::Debug).fuse(); - let async_drain = slog_async::Async::new(level_drain).build().fuse(); - slog::Logger::root(async_drain, slog::o!()) - }; - - ServerBuilder::new(api, Arc::new(()), logger) - .config(config) + let server =ServerBuilder::new(api, Arc::new(()), dropshot_logger) + .config(config_dropshot) .start() - .map_err(|e| anyhow!("Error starting server: {:?}", e))? - .await - .map_err(|e| anyhow!(e)) + .map_err(|e| anyhow!("Error starting server: {:?}", e))?; + + server.await.map_err(|e| anyhow!("Error running server: {}", e)) }