@@ -17,7 +17,8 @@ pub(crate) fn generate_kubernetes_conversion(
17
17
let conversion_chain = generate_conversion_chain ( versions) ;
18
18
19
19
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 ( ) ;
21
22
let version_chain_string = version_chain. iter ( )
22
23
. map ( |( _, v) | v. parse :: < TokenStream > ( )
23
24
. expect ( "The versions always needs to be a valid TokenStream" ) ) ;
@@ -33,6 +34,14 @@ pub(crate) fn generate_kubernetes_conversion(
33
34
let resource: #version_chain_string:: #struct_ident = resource. into( ) ;
34
35
) *
35
36
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
+
36
45
converted. push(
37
46
serde_json:: to_value( resource)
38
47
. map_err( |err| ConversionError :: SerializeObjectSpec { source: err, kind: stringify!( #enum_ident) . to_string( ) } ) ?
@@ -44,6 +53,13 @@ pub(crate) fn generate_kubernetes_conversion(
44
53
Some ( quote ! {
45
54
#[ automatically_derived]
46
55
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
+ ) ]
47
63
pub fn convert( review: kube:: core:: conversion:: ConversionReview ) -> kube:: core:: conversion:: ConversionResponse {
48
64
// Intentionally not using `snafu::ResultExt` here to keep the number of dependencies minimal
49
65
use kube:: core:: conversion:: { ConversionRequest , ConversionResponse } ;
@@ -53,6 +69,11 @@ pub(crate) fn generate_kubernetes_conversion(
53
69
let request = match ConversionRequest :: from_review( review) {
54
70
Ok ( request) => request,
55
71
Err ( err) => {
72
+ tracing:: warn!(
73
+ ?err,
74
+ "Invalid ConversionReview send by Kubernetes apiserver. It probably did not include a request"
75
+ ) ;
76
+
56
77
return ConversionResponse :: invalid(
57
78
kube:: client:: Status {
58
79
status: Some ( StatusSummary :: Failure ) ,
@@ -70,9 +91,20 @@ pub(crate) fn generate_kubernetes_conversion(
70
91
let conversion_response = ConversionResponse :: for_request( request) ;
71
92
match converted {
72
93
Ok ( converted) => {
94
+ tracing:: debug!(
95
+ "Successfully converted {num} objects of type {type}" ,
96
+ num = converted. len( ) ,
97
+ type = stringify!( #enum_ident) ,
98
+ ) ;
99
+
73
100
conversion_response. success( converted)
74
101
} ,
75
102
Err ( err) => {
103
+ tracing:: debug!(
104
+ "Failed to converted objects of type {type}" ,
105
+ type = stringify!( #enum_ident) ,
106
+ ) ;
107
+
76
108
let error_message = err. as_human_readable_error_message( ) ;
77
109
78
110
conversion_response. failure(
0 commit comments