Skip to content

Commit cfcdd99

Browse files
committed
feat: Add some tracing
1 parent 0660983 commit cfcdd99

File tree

3 files changed

+37
-2
lines changed

3 files changed

+37
-2
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/stackable-versioned-macros/src/codegen/flux_converter.rs

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ pub(crate) fn generate_kubernetes_conversion(
1717
let conversion_chain = generate_conversion_chain(versions);
1818

1919
let matches = conversion_chain.into_iter().map(
20-
|((src, src_lower), (dst, _dst_lower), version_chain)| {
20+
|((src, src_lower), (dst, dst_lower), version_chain)| {
21+
let steps = version_chain.len();
2122
let version_chain_string = version_chain.iter()
2223
.map(|(_,v)| v.parse::<TokenStream>()
2324
.expect("The versions always needs to be a valid TokenStream"));
@@ -33,6 +34,14 @@ pub(crate) fn generate_kubernetes_conversion(
3334
let resource: #version_chain_string::#struct_ident = resource.into();
3435
)*
3536

37+
tracing::trace!(
38+
from = stringify!(#src_lower),
39+
to = stringify!(#dst_lower),
40+
conversion.steps = #steps,
41+
"Successfully converted {type} object",
42+
type = stringify!(#enum_ident),
43+
);
44+
3645
converted.push(
3746
serde_json::to_value(resource)
3847
.map_err(|err| ConversionError::SerializeObjectSpec{source: err, kind: stringify!(#enum_ident).to_string()})?
@@ -44,6 +53,13 @@ pub(crate) fn generate_kubernetes_conversion(
4453
Some(quote! {
4554
#[automatically_derived]
4655
impl #enum_ident {
56+
#[tracing::instrument(
57+
skip_all,
58+
fields(
59+
conversion.kind = review.types.kind,
60+
conversion.api_version = review.types.api_version,
61+
)
62+
)]
4763
pub fn convert(review: kube::core::conversion::ConversionReview) -> kube::core::conversion::ConversionResponse {
4864
// Intentionally not using `snafu::ResultExt` here to keep the number of dependencies minimal
4965
use kube::core::conversion::{ConversionRequest, ConversionResponse};
@@ -53,6 +69,11 @@ pub(crate) fn generate_kubernetes_conversion(
5369
let request = match ConversionRequest::from_review(review) {
5470
Ok(request) => request,
5571
Err(err) => {
72+
tracing::warn!(
73+
?err,
74+
"Invalid ConversionReview send by Kubernetes apiserver. It probably did not include a request"
75+
);
76+
5677
return ConversionResponse::invalid(
5778
kube::client::Status {
5879
status: Some(StatusSummary::Failure),
@@ -70,9 +91,20 @@ pub(crate) fn generate_kubernetes_conversion(
7091
let conversion_response = ConversionResponse::for_request(request);
7192
match converted {
7293
Ok(converted) => {
94+
tracing::debug!(
95+
"Successfully converted {num} objects of type {type}",
96+
num = converted.len(),
97+
type = stringify!(#enum_ident),
98+
);
99+
73100
conversion_response.success(converted)
74101
},
75102
Err(err) => {
103+
tracing::debug!(
104+
"Failed to converted objects of type {type}",
105+
type = stringify!(#enum_ident),
106+
);
107+
76108
let error_message = err.as_human_readable_error_message();
77109

78110
conversion_response.failure(

crates/stackable-versioned/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ flux-converter = [
2222
"dep:k8s-openapi",
2323
"dep:serde",
2424
"dep:schemars",
25-
"dep:serde_json"
25+
"dep:serde_json",
26+
"dep:tracing"
2627
]
2728

2829
[dependencies]
@@ -34,6 +35,7 @@ serde = { workspace = true, optional = true }
3435
schemars = { workspace = true, optional = true }
3536
serde_json = { workspace = true, optional = true }
3637
snafu.workspace = true
38+
tracing = { workspace = true, optional = true }
3739

3840
[dev-dependencies]
3941
insta.workspace = true

0 commit comments

Comments
 (0)