From 9b2b531f4d8d62897b0dc3f8691608a9298a2f85 Mon Sep 17 00:00:00 2001 From: Alex Auvolat Date: Thu, 10 Mar 2022 10:51:40 +0100 Subject: [PATCH] Make admin server optional --- src/garage/server.rs | 18 ++++++++++++------ src/util/config.rs | 5 +++-- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/garage/server.rs b/src/garage/server.rs index 1e276e9e..37c3535e 100644 --- a/src/garage/server.rs +++ b/src/garage/server.rs @@ -68,10 +68,14 @@ pub async fn run_server(config_file: PathBuf) -> Result<(), Error> { wait_from(watch_cancel.clone()), )); - info!("Configure and run admin web server..."); - let admin_server = tokio::spawn( - admin_server_init.run(config.admin.api_bind_addr, wait_from(watch_cancel.clone())), - ); + let admin_server = if let Some(admin_bind_addr) = config.admin.api_bind_addr { + info!("Configure and run admin web server..."); + Some(tokio::spawn( + admin_server_init.run(admin_bind_addr, wait_from(watch_cancel.clone())), + )) + } else { + None + }; // Stuff runs @@ -82,8 +86,10 @@ pub async fn run_server(config_file: PathBuf) -> Result<(), Error> { if let Err(e) = web_server.await? { warn!("Web server exited with error: {}", e); } - if let Err(e) = admin_server.await? { - warn!("Admin web server exited with error: {}", e); + if let Some(a) = admin_server { + if let Err(e) = a.await? { + warn!("Admin web server exited with error: {}", e); + } } // Remove RPC handlers for system to break reference cycles diff --git a/src/util/config.rs b/src/util/config.rs index 7e8d4ba6..f74a62d0 100644 --- a/src/util/config.rs +++ b/src/util/config.rs @@ -75,6 +75,7 @@ pub struct Config { pub s3_web: WebConfig, /// Configuration for the admin API endpoint + #[serde(default = "Default::default")] pub admin: AdminConfig, } @@ -100,10 +101,10 @@ pub struct WebConfig { } /// Configuration for the admin and monitoring HTTP API -#[derive(Deserialize, Debug, Clone)] +#[derive(Deserialize, Debug, Clone, Default)] pub struct AdminConfig { /// Address and port to bind for admin API serving - pub api_bind_addr: SocketAddr, + pub api_bind_addr: Option, /// OTLP server to where to export traces pub trace_sink: Option, }