From 23697ae639170512b34b4aca000beebb8eec9733 Mon Sep 17 00:00:00 2001 From: Sebastian Bernauer Date: Thu, 17 Oct 2024 13:43:14 +0200 Subject: [PATCH] refactor: Adjust tracing --- .../src/commons/networking.rs | 8 ++++ .../src/utils/cluster_domain.rs | 47 ++++++++++++------- 2 files changed, 38 insertions(+), 17 deletions(-) diff --git a/crates/stackable-operator/src/commons/networking.rs b/crates/stackable-operator/src/commons/networking.rs index 19e58c2eb..18feeb074 100644 --- a/crates/stackable-operator/src/commons/networking.rs +++ b/crates/stackable-operator/src/commons/networking.rs @@ -30,6 +30,14 @@ impl TryFrom for DomainName { } } +impl TryFrom<&str> for DomainName { + type Error = validation::Errors; + + fn try_from(value: &str) -> Result { + value.parse() + } +} + impl From for String { fn from(value: DomainName) -> Self { value.0 diff --git a/crates/stackable-operator/src/utils/cluster_domain.rs b/crates/stackable-operator/src/utils/cluster_domain.rs index 2f7d5f047..9a3ffde9c 100644 --- a/crates/stackable-operator/src/utils/cluster_domain.rs +++ b/crates/stackable-operator/src/utils/cluster_domain.rs @@ -1,6 +1,7 @@ use std::{env, path::Path, str::FromStr, sync::OnceLock}; use snafu::{OptionExt, ResultExt, Snafu}; +use tracing::instrument; use crate::commons::networking::DomainName; @@ -56,52 +57,64 @@ pub enum Error { /// - pub static KUBERNETES_CLUSTER_DOMAIN: OnceLock = OnceLock::new(); +#[instrument] pub(crate) fn retrieve_cluster_domain() -> Result { // 1. Read KUBERNETES_CLUSTER_DOMAIN env var - tracing::info!("Trying to determine the Kubernetes cluster domain..."); + tracing::debug!("Trying to determine the Kubernetes cluster domain..."); match env::var(KUBERNETES_CLUSTER_DOMAIN_ENV) { Ok(cluster_domain) if !cluster_domain.is_empty() => { + let cluster_domain = DomainName::from_str(&cluster_domain) + .context(ParseDomainNameSnafu { cluster_domain })?; tracing::info!( - cluster_domain, - "Kubernetes cluster domain set by environment variable" - ); - return DomainName::from_str(&cluster_domain) - .context(ParseDomainNameSnafu { cluster_domain }); - } - _ => { - tracing::info!( - "The environment variable \"{KUBERNETES_CLUSTER_DOMAIN_ENV}\" is not set or empty" + %cluster_domain, + "Using Kubernetes cluster domain from {KUBERNETES_CLUSTER_DOMAIN_ENV} environment variable" ); + return Ok(cluster_domain); } + _ => {} }; // 2. If no env var is set, check if we run in a clustered (Kubernetes/Openshift) environment // by checking if KUBERNETES_SERVICE_HOST is set: If not default to 'cluster.local'. - tracing::info!("Trying to determine the operator runtime environment..."); + tracing::debug!( + "Trying to determine the operator runtime environment as environment variable \ + \"{KUBERNETES_CLUSTER_DOMAIN_ENV}\" is not set" + ); match env::var(KUBERNETES_SERVICE_HOST_ENV) { Ok(_) => { let cluster_domain = retrieve_cluster_domain_from_resolv_conf(RESOLVE_CONF_FILE_PATH)?; + let cluster_domain = DomainName::from_str(&cluster_domain) + .context(ParseDomainNameSnafu { cluster_domain })?; tracing::info!( - cluster_domain, + %cluster_domain, "Using Kubernetes cluster domain from {RESOLVE_CONF_FILE_PATH} file" ); - DomainName::from_str(&cluster_domain).context(ParseDomainNameSnafu { cluster_domain }) + Ok(cluster_domain) } Err(_) => { - let cluster_domain = KUBERNETES_CLUSTER_DOMAIN_DEFAULT; - tracing::info!(cluster_domain, "Using default Kubernetes cluster domain"); - DomainName::from_str(cluster_domain).context(ParseDomainNameSnafu { cluster_domain }) + let cluster_domain = DomainName::from_str(KUBERNETES_CLUSTER_DOMAIN_DEFAULT).context( + ParseDomainNameSnafu { + cluster_domain: KUBERNETES_CLUSTER_DOMAIN_DEFAULT, + }, + )?; + + tracing::info!( + %cluster_domain, + "Could not determine Kubernetes cluster domain as the operator is not running within Kubernetes, assuming default Kubernetes cluster domain" + ); + Ok(cluster_domain) } } } +#[instrument] fn retrieve_cluster_domain_from_resolv_conf

(path: P) -> Result where - P: AsRef, + P: std::fmt::Debug + AsRef, { let content = std::fs::read_to_string(path).context(ReadResolvConfFileSnafu)?;