From 0ad64f2be21f102f97a6378a5c3dbedaa8af7a6a Mon Sep 17 00:00:00 2001 From: Manuel Carrer Date: Thu, 10 Oct 2024 11:49:30 +0200 Subject: [PATCH] Use envars instead of cmd arguments --- ingestion/src/main.rs | 22 ++++++++++------------ ingestion/src/permissions.rs | 3 ++- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/ingestion/src/main.rs b/ingestion/src/main.rs index aa719f69..a1c1cfeb 100644 --- a/ingestion/src/main.rs +++ b/ingestion/src/main.rs @@ -8,26 +8,22 @@ const PARAMCONV: &str = "resources/paramconversions.csv"; #[tokio::main] async fn main() -> Result<(), Box> { + println!("LARD ingestion service starting up..."); // TODO: use clap for argument parsing let args: Vec = std::env::args().collect(); - if args.len() < 5 { - panic!(concat!( - "not enough args passed in. At least the group for the kafka queue,", - "and host, user, dbname needed, optionally password, for postgres" - )) + if args.len() != 2 { + panic!( + "USAGE: lard_ingestion \nEnv vars LARD_CONN_STRING and STINFO_CONN_STRING are also needed" + // env var format: host={} user={} dbname={} ... + ) } - let mut connect_string = format!("host={} user={} dbname={}", &args[2], &args[3], &args[4]); - if args.len() > 5 { - connect_string.push_str(" password="); - connect_string.push_str(&args[5]) - }; - // Permit tables handling (needs connection to stinfosys database) let permit_tables = Arc::new(RwLock::new(permissions::fetch_permits().await?)); let background_permit_tables = permit_tables.clone(); + println!("Spawing task to fetch permissions from StInfoSys..."); // background task to refresh permit tables every 30 mins tokio::task::spawn(async move { let mut interval = tokio::time::interval(tokio::time::Duration::from_secs(30 * 60)); @@ -47,7 +43,8 @@ async fn main() -> Result<(), Box> { }); // Set up postgres connection pool - let manager = PostgresConnectionManager::new_from_stringlike(connect_string, NoTls)?; + let manager = + PostgresConnectionManager::new_from_stringlike(std::env::var("LARD_CONN_STRING")?, NoTls)?; let db_pool = bb8::Pool::builder().build(manager).await?; // Spawn kvkafka reader @@ -62,5 +59,6 @@ async fn main() -> Result<(), Box> { } // Set up and run our server + database + println!("Ingestion server started!"); lard_ingestion::run(db_pool, PARAMCONV, permit_tables).await } diff --git a/ingestion/src/permissions.rs b/ingestion/src/permissions.rs index 7489bddb..4f2c7f18 100644 --- a/ingestion/src/permissions.rs +++ b/ingestion/src/permissions.rs @@ -41,7 +41,8 @@ pub type StationPermitTable = HashMap; /// Get a fresh cache of permits from stinfosys pub async fn fetch_permits() -> Result<(ParamPermitTable, StationPermitTable), Error> { // get stinfo conn - let (client, conn) = tokio_postgres::connect(&std::env::var("STINFO_STRING")?, NoTls).await?; + let (client, conn) = + tokio_postgres::connect(&std::env::var("STINFO_CONN_STRING")?, NoTls).await?; // conn object independently performs communication with database, so needs it's own task. // it will return when the client is dropped