1use std::sync::Arc;
11
12use mz_aws_secrets_controller::AwsSecretsClient;
13use mz_orchestrator_kubernetes::secrets::KubernetesSecretsReader;
14use mz_orchestrator_process::secrets::ProcessSecretsReader;
15use mz_secrets::SecretsReader;
16use mz_secrets_cli::{SecretsControllerKind, SecretsReaderCliArgs};
17
18pub async fn load(args: SecretsReaderCliArgs) -> Result<Arc<dyn SecretsReader>, anyhow::Error> {
20 match args.secrets_reader {
21 SecretsControllerKind::LocalFile => {
22 let dir = args.secrets_reader_local_file_dir.expect("clap enforced");
23 Ok(Arc::new(ProcessSecretsReader::new(dir)))
24 }
25 SecretsControllerKind::Kubernetes => {
26 let context = args
27 .secrets_reader_kubernetes_context
28 .expect("clap enforced");
29 Ok(Arc::new(
30 KubernetesSecretsReader::new(context, args.secrets_reader_name_prefix).await?,
31 ))
32 }
33 SecretsControllerKind::AwsSecretsManager => {
34 let prefix = args.secrets_reader_aws_prefix.expect("clap enforced");
35 Ok(Arc::new(AwsSecretsClient::new(&prefix).await))
36 }
37 }
38}