From 58cb27fe1b64bf147b91042b2ecb83dc64a41ec8 Mon Sep 17 00:00:00 2001 From: Nick Larsen Date: Wed, 2 Apr 2025 11:34:19 +0200 Subject: [PATCH 1/8] chore: Replace print_startup_string with structured event --- rust/operator-binary/src/main.rs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/rust/operator-binary/src/main.rs b/rust/operator-binary/src/main.rs index 45b79690..b1ed7208 100644 --- a/rust/operator-binary/src/main.rs +++ b/rust/operator-binary/src/main.rs @@ -1,6 +1,6 @@ use std::sync::Arc; -use clap::{crate_description, crate_version, Parser}; +use clap::Parser; use futures::StreamExt; use product_config::ProductConfigManager; use stackable_opa_operator::crd::{v1alpha1, OpaCluster, APP_NAME, OPERATOR_NAME}; @@ -77,13 +77,14 @@ async fn main() -> anyhow::Result<()> { tracing_target, ); - stackable_operator::utils::print_startup_string( - crate_description!(), - crate_version!(), - built_info::GIT_VERSION, - built_info::TARGET, - built_info::BUILT_TIME_UTC, - built_info::RUSTC_VERSION, + tracing::info!( + built_info.pkg_version = built_info::PKG_VERSION, + built_info.git_version = built_info::GIT_VERSION, + built_info.target = built_info::TARGET, + built_info.built_time_utc = built_info::BUILT_TIME_UTC, + built_info.rustc_version = built_info::RUSTC_VERSION, + "Starting {description}", + description = built_info::PKG_DESCRIPTION ); let product_config = product_config.load(&[ "deploy/config-spec/properties.yaml", From 698b9485971a28eeff715a01f6b6e6ad09258e83 Mon Sep 17 00:00:00 2001 From: Nick Larsen Date: Fri, 4 Apr 2025 12:55:56 +0200 Subject: [PATCH 2/8] feat!: Replace log initialization with stackable-telemetry BREAKING: The log directory variable for the rolling file appender has changed --- Cargo.lock | 519 +++++-- Cargo.nix | 2199 +++++++++++++++++++++++----- Cargo.toml | 8 +- crate-hashes.json | 7 +- rust/bundle-builder/Cargo.toml | 3 +- rust/bundle-builder/src/main.rs | 62 +- rust/operator-binary/Cargo.toml | 8 +- rust/operator-binary/src/main.rs | 55 +- rust/user-info-fetcher/Cargo.toml | 3 +- rust/user-info-fetcher/src/main.rs | 62 +- 10 files changed, 2412 insertions(+), 514 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index dbfb9df7..5c3396cb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -184,13 +184,40 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +[[package]] +name = "axum" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" +dependencies = [ + "async-trait", + "axum-core 0.4.5", + "bytes", + "futures-util", + "http", + "http-body", + "http-body-util", + "itoa", + "matchit 0.7.3", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "sync_wrapper", + "tower 0.5.2", + "tower-layer", + "tower-service", +] + [[package]] name = "axum" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d6fd624c75e18b3b4c6b9caf42b1afe24437daaee904069137d8bab077be8b8" dependencies = [ - "axum-core", + "axum-core 0.5.0", "bytes", "form_urlencoded", "futures-util", @@ -200,7 +227,7 @@ dependencies = [ "hyper", "hyper-util", "itoa", - "matchit", + "matchit 0.8.4", "memchr", "mime", "percent-encoding", @@ -212,12 +239,32 @@ dependencies = [ "serde_urlencoded", "sync_wrapper", "tokio", - "tower", + "tower 0.5.2", "tower-layer", "tower-service", "tracing", ] +[[package]] +name = "axum-core" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http", + "http-body", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper", + "tower-layer", + "tower-service", +] + [[package]] name = "axum-core" version = "0.5.0" @@ -249,6 +296,17 @@ dependencies = [ "rand", ] +[[package]] +name = "backon" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "970d91570c01a8a5959b36ad7dd1c30642df24b6b3068710066f6809f7033bb7" +dependencies = [ + "fastrand", + "gloo-timers", + "tokio", +] + [[package]] name = "backtrace" version = "0.3.74" @@ -1009,6 +1067,18 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" +[[package]] +name = "gloo-timers" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + [[package]] name = "h2" version = "0.4.8" @@ -1021,13 +1091,19 @@ dependencies = [ "futures-core", "futures-sink", "http", - "indexmap", + "indexmap 2.7.1", "slab", "tokio", "tokio-util", "tracing", ] +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + [[package]] name = "hashbrown" version = "0.15.2" @@ -1069,12 +1145,6 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" -[[package]] -name = "hermit-abi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" - [[package]] name = "home" version = "0.5.11" @@ -1417,6 +1487,16 @@ dependencies = [ "icu_properties", ] +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + [[package]] name = "indexmap" version = "2.7.1" @@ -1424,7 +1504,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" dependencies = [ "equivalent", - "hashbrown", + "hashbrown 0.15.2", ] [[package]] @@ -1442,12 +1522,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "integer-encoding" -version = "3.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bb03732005da905c88227371639bf1ad885cc712789c011c31c5fb3ab3ccf02" - [[package]] name = "ipnet" version = "2.11.0" @@ -1520,7 +1594,19 @@ version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "863726d7afb6bc2590eeff7135d923545e5e964f004c2ccf8716c25e70a86f08" dependencies = [ - "jsonptr", + "jsonptr 0.6.3", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "json-patch" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "159294d661a039f7644cea7e4d844e6b25aaf71c1ffe9d73a96d768c24b0faf4" +dependencies = [ + "jsonptr 0.7.1", "serde", "serde_json", "thiserror 1.0.69", @@ -1549,6 +1635,16 @@ dependencies = [ "serde_json", ] +[[package]] +name = "jsonptr" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5a3cc660ba5d72bce0b3bb295bf20847ccbb40fd423f3f05b61273672e561fe" +dependencies = [ + "serde", + "serde_json", +] + [[package]] name = "k8s-openapi" version = "0.24.0" @@ -1580,10 +1676,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32053dc495efad4d188c7b33cc7c02ef4a6e43038115348348876efd39a53cba" dependencies = [ "k8s-openapi", - "kube-client", - "kube-core", - "kube-derive", - "kube-runtime", + "kube-client 0.98.0", + "kube-core 0.98.0", + "kube-derive 0.98.0", + "kube-runtime 0.98.0", +] + +[[package]] +name = "kube" +version = "0.99.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a4eb20010536b48abe97fec37d23d43069bcbe9686adcf9932202327bc5ca6e" +dependencies = [ + "k8s-openapi", + "kube-client 0.99.0", + "kube-core 0.99.0", + "kube-derive 0.99.0", + "kube-runtime 0.99.0", ] [[package]] @@ -1608,7 +1717,7 @@ dependencies = [ "hyper-util", "jsonpath-rust", "k8s-openapi", - "kube-core", + "kube-core 0.98.0", "pem", "rustls", "rustls-pemfile", @@ -1619,7 +1728,44 @@ dependencies = [ "thiserror 2.0.12", "tokio", "tokio-util", - "tower", + "tower 0.5.2", + "tower-http", + "tracing", +] + +[[package]] +name = "kube-client" +version = "0.99.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fc2ed952042df20d15ac2fe9614d0ec14b6118eab89633985d4b36e688dccf1" +dependencies = [ + "base64 0.22.1", + "bytes", + "chrono", + "either", + "futures", + "home", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-http-proxy", + "hyper-rustls", + "hyper-timeout", + "hyper-util", + "jsonpath-rust", + "k8s-openapi", + "kube-core 0.99.0", + "pem", + "rustls", + "secrecy", + "serde", + "serde_json", + "serde_yaml", + "thiserror 2.0.12", + "tokio", + "tokio-util", + "tower 0.5.2", "tower-http", "tracing", ] @@ -1633,7 +1779,25 @@ dependencies = [ "chrono", "form_urlencoded", "http", - "json-patch", + "json-patch 3.0.1", + "k8s-openapi", + "schemars", + "serde", + "serde-value", + "serde_json", + "thiserror 2.0.12", +] + +[[package]] +name = "kube-core" +version = "0.99.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff0d0793db58e70ca6d689489183816cb3aa481673e7433dc618cf7e8007c675" +dependencies = [ + "chrono", + "form_urlencoded", + "http", + "json-patch 4.0.0", "k8s-openapi", "schemars", "serde", @@ -1655,6 +1819,20 @@ dependencies = [ "syn 2.0.99", ] +[[package]] +name = "kube-derive" +version = "0.99.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c562f58dc9f7ca5feac8a6ee5850ca221edd6f04ce0dd2ee873202a88cd494c9" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "serde", + "serde_json", + "syn 2.0.99", +] + [[package]] name = "kube-runtime" version = "0.98.0" @@ -1668,12 +1846,40 @@ dependencies = [ "backoff", "educe", "futures", - "hashbrown", + "hashbrown 0.15.2", "hostname", - "json-patch", - "jsonptr", + "json-patch 3.0.1", + "jsonptr 0.6.3", "k8s-openapi", - "kube-client", + "kube-client 0.98.0", + "parking_lot", + "pin-project", + "serde", + "serde_json", + "thiserror 2.0.12", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "kube-runtime" +version = "0.99.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88f34cfab9b4bd8633062e0e85edb81df23cb09f159f2e31c60b069ae826ffdc" +dependencies = [ + "ahash", + "async-broadcast", + "async-stream", + "async-trait", + "backon", + "educe", + "futures", + "hashbrown 0.15.2", + "hostname", + "json-patch 4.0.0", + "k8s-openapi", + "kube-client 0.99.0", "parking_lot", "pin-project", "serde", @@ -1861,6 +2067,12 @@ dependencies = [ "regex-automata 0.1.10", ] +[[package]] +name = "matchit" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" + [[package]] name = "matchit" version = "0.8.4" @@ -1979,16 +2191,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi", - "libc", -] - [[package]] name = "object" version = "0.36.7" @@ -2050,60 +2252,96 @@ dependencies = [ [[package]] name = "opentelemetry" -version = "0.23.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b69a91d4893e713e06f724597ad630f1fa76057a5e1026c0ca67054a9032a76" +checksum = "236e667b670a5cdf90c258f5a55794ec5ac5027e960c224bff8367a59e1e6426" dependencies = [ "futures-core", "futures-sink", "js-sys", - "once_cell", "pin-project-lite", - "thiserror 1.0.69", + "thiserror 2.0.12", + "tracing", ] [[package]] -name = "opentelemetry-jaeger" -version = "0.22.0" +name = "opentelemetry-appender-tracing" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501b471b67b746d9a07d4c29f8be00f952d1a2eca356922ede0098cbaddff19f" +checksum = "c513c7af3bec30113f3d4620134ff923295f1e9c580fda2b8abe0831f925ddc0" +dependencies = [ + "opentelemetry", + "tracing", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "opentelemetry-http" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8863faf2910030d139fb48715ad5ff2f35029fc5f244f6d5f689ddcf4d26253" +dependencies = [ + "async-trait", + "bytes", + "http", + "opentelemetry", + "reqwest", + "tracing", +] + +[[package]] +name = "opentelemetry-otlp" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bef114c6d41bea83d6dc60eb41720eedd0261a67af57b66dd2b84ac46c01d91" dependencies = [ "async-trait", "futures-core", - "futures-util", + "http", "opentelemetry", - "opentelemetry-semantic-conventions", + "opentelemetry-http", + "opentelemetry-proto", "opentelemetry_sdk", - "thrift", + "prost", + "reqwest", + "thiserror 2.0.12", "tokio", + "tonic", + "tracing", ] [[package]] -name = "opentelemetry-semantic-conventions" -version = "0.15.0" +name = "opentelemetry-proto" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1869fb4bb9b35c5ba8a1e40c9b128a7b4c010d07091e864a29da19e4fe2ca4d7" +checksum = "56f8870d3024727e99212eb3bb1762ec16e255e3e6f58eeb3dc8db1aa226746d" +dependencies = [ + "opentelemetry", + "opentelemetry_sdk", + "prost", + "tonic", +] [[package]] name = "opentelemetry_sdk" -version = "0.23.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae312d58eaa90a82d2e627fd86e075cf5230b3f11794e2ed74199ebbe572d4fd" +checksum = "84dfad6042089c7fc1f6118b7040dc2eb4ab520abbf410b79dc481032af39570" dependencies = [ "async-trait", "futures-channel", "futures-executor", "futures-util", "glob", - "lazy_static", - "once_cell", "opentelemetry", - "ordered-float 4.6.0", "percent-encoding", "rand", - "thiserror 1.0.69", + "serde_json", + "thiserror 2.0.12", "tokio", "tokio-stream", + "tracing", ] [[package]] @@ -2115,15 +2353,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "ordered-float" -version = "4.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" -dependencies = [ - "num-traits", -] - [[package]] name = "overload" version = "0.1.1" @@ -2314,6 +2543,29 @@ dependencies = [ "xml-rs", ] +[[package]] +name = "prost" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-derive" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" +dependencies = [ + "anyhow", + "itertools 0.13.0", + "proc-macro2", + "quote", + "syn 2.0.99", +] + [[package]] name = "quote" version = "1.0.39" @@ -2415,6 +2667,7 @@ dependencies = [ "base64 0.22.1", "bytes", "encoding_rs", + "futures-channel", "futures-core", "futures-util", "h2", @@ -2441,7 +2694,7 @@ dependencies = [ "system-configuration", "tokio", "tokio-native-tls", - "tower", + "tower 0.5.2", "tower-service", "url", "wasm-bindgen", @@ -2688,7 +2941,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" dependencies = [ - "ordered-float 2.10.1", + "ordered-float", "serde", ] @@ -2754,7 +3007,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap", + "indexmap 2.7.1", "itoa", "ryu", "serde", @@ -2884,7 +3137,7 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" name = "stackable-opa-bundle-builder" version = "0.0.0-dev" dependencies = [ - "axum", + "axum 0.8.1", "clap", "flate2", "futures", @@ -2892,6 +3145,7 @@ dependencies = [ "snafu 0.8.5", "stackable-opa-regorule-library", "stackable-operator", + "stackable-telemetry", "tar", "tokio", "tracing", @@ -2915,6 +3169,7 @@ dependencies = [ "serde_json", "snafu 0.8.5", "stackable-operator", + "stackable-telemetry", "stackable-versioned", "strum", "tokio", @@ -2929,7 +3184,7 @@ version = "0.0.0-dev" name = "stackable-opa-user-info-fetcher" version = "0.0.0-dev" dependencies = [ - "axum", + "axum 0.8.1", "base64 0.22.1", "byteorder", "clap", @@ -2947,6 +3202,7 @@ dependencies = [ "snafu 0.8.5", "stackable-opa-operator", "stackable-operator", + "stackable-telemetry", "tokio", "tracing", "url", @@ -2955,8 +3211,8 @@ dependencies = [ [[package]] name = "stackable-operator" -version = "0.87.0" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.87.0#53ccc1e9eca2a5b35a8618593c548e8687fb150d" +version = "0.89.1" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.89.1#cd73728af410c52972b9a9a3ba1302bcdb574d04" dependencies = [ "chrono", "clap", @@ -2966,12 +3222,10 @@ dependencies = [ "educe", "either", "futures", - "indexmap", - "json-patch", + "indexmap 2.7.1", + "json-patch 4.0.0", "k8s-openapi", - "kube", - "opentelemetry-jaeger", - "opentelemetry_sdk", + "kube 0.99.0", "product-config", "regex", "schemars", @@ -2986,7 +3240,6 @@ dependencies = [ "tokio", "tracing", "tracing-appender", - "tracing-opentelemetry", "tracing-subscriber", "url", ] @@ -2994,7 +3247,7 @@ dependencies = [ [[package]] name = "stackable-operator-derive" version = "0.3.1" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.87.0#53ccc1e9eca2a5b35a8618593c548e8687fb150d" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.89.1#cd73728af410c52972b9a9a3ba1302bcdb574d04" dependencies = [ "darling", "proc-macro2", @@ -3005,15 +3258,36 @@ dependencies = [ [[package]] name = "stackable-shared" version = "0.0.1" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.87.0#53ccc1e9eca2a5b35a8618593c548e8687fb150d" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.89.1#cd73728af410c52972b9a9a3ba1302bcdb574d04" dependencies = [ - "kube", + "kube 0.99.0", "semver", "serde", "serde_yaml", "snafu 0.8.5", ] +[[package]] +name = "stackable-telemetry" +version = "0.4.0" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-telemetry-0.4.0#52bdee5749e217005025d07f33c7020931c31d91" +dependencies = [ + "axum 0.8.1", + "futures-util", + "opentelemetry", + "opentelemetry-appender-tracing", + "opentelemetry-otlp", + "opentelemetry_sdk", + "pin-project", + "snafu 0.8.5", + "tokio", + "tower 0.5.2", + "tracing", + "tracing-appender", + "tracing-opentelemetry", + "tracing-subscriber", +] + [[package]] name = "stackable-versioned" version = "0.6.0" @@ -3032,7 +3306,7 @@ dependencies = [ "itertools 0.14.0", "k8s-openapi", "k8s-version", - "kube", + "kube 0.98.0", "proc-macro2", "quote", "syn 2.0.99", @@ -3216,28 +3490,6 @@ dependencies = [ "once_cell", ] -[[package]] -name = "threadpool" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" -dependencies = [ - "num_cpus", -] - -[[package]] -name = "thrift" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e54bc85fc7faa8bc175c4bab5b92ba8d9a3ce893d0e9f42cc455c8ab16a9e09" -dependencies = [ - "byteorder", - "integer-encoding", - "log", - "ordered-float 2.10.1", - "threadpool", -] - [[package]] name = "time" version = "0.3.38" @@ -3353,6 +3605,57 @@ dependencies = [ "tokio", ] +[[package]] +name = "tonic" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" +dependencies = [ + "async-stream", + "async-trait", + "axum 0.7.9", + "base64 0.22.1", + "bytes", + "flate2", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-timeout", + "hyper-util", + "percent-encoding", + "pin-project", + "prost", + "socket2", + "tokio", + "tokio-stream", + "tower 0.4.13", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "indexmap 1.9.3", + "pin-project", + "pin-project-lite", + "rand", + "slab", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] + [[package]] name = "tower" version = "0.5.2" @@ -3458,9 +3761,9 @@ dependencies = [ [[package]] name = "tracing-opentelemetry" -version = "0.24.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f68803492bf28ab40aeccaecc7021096bd256baf7ca77c3d425d89b35a7be4e4" +checksum = "721f2d2569dce9f3dfbbddee5906941e953bfcdf736a62da3377f5751650cc36" dependencies = [ "js-sys", "once_cell", diff --git a/Cargo.nix b/Cargo.nix index a87b87b6..a4384737 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -563,7 +563,123 @@ rec { ]; }; - "axum" = rec { + "axum 0.7.9" = rec { + crateName = "axum"; + version = "0.7.9"; + edition = "2021"; + sha256 = "07z7wqczi9i8xb4460rvn39p4wjqwr32hx907crd1vwb2fy8ijpd"; + dependencies = [ + { + name = "async-trait"; + packageId = "async-trait"; + } + { + name = "axum-core"; + packageId = "axum-core 0.4.5"; + } + { + name = "bytes"; + packageId = "bytes"; + } + { + name = "futures-util"; + packageId = "futures-util"; + usesDefaultFeatures = false; + features = [ "alloc" ]; + } + { + name = "http"; + packageId = "http"; + } + { + name = "http-body"; + packageId = "http-body"; + } + { + name = "http-body-util"; + packageId = "http-body-util"; + } + { + name = "itoa"; + packageId = "itoa"; + } + { + name = "matchit"; + packageId = "matchit 0.7.3"; + } + { + name = "memchr"; + packageId = "memchr"; + } + { + name = "mime"; + packageId = "mime"; + } + { + name = "percent-encoding"; + packageId = "percent-encoding"; + } + { + name = "pin-project-lite"; + packageId = "pin-project-lite"; + } + { + name = "rustversion"; + packageId = "rustversion"; + } + { + name = "serde"; + packageId = "serde"; + } + { + name = "sync_wrapper"; + packageId = "sync_wrapper"; + } + { + name = "tower"; + packageId = "tower 0.5.2"; + usesDefaultFeatures = false; + features = [ "util" ]; + } + { + name = "tower-layer"; + packageId = "tower-layer"; + } + { + name = "tower-service"; + packageId = "tower-service"; + } + ]; + devDependencies = [ + { + name = "serde"; + packageId = "serde"; + features = [ "derive" ]; + } + { + name = "tower"; + packageId = "tower 0.5.2"; + rename = "tower"; + features = [ "util" "timeout" "limit" "load-shed" "steer" "filter" ]; + } + ]; + features = { + "__private_docs" = [ "axum-core/__private_docs" "tower/full" "dep:tower-http" ]; + "default" = [ "form" "http1" "json" "matched-path" "original-uri" "query" "tokio" "tower-log" "tracing" ]; + "form" = [ "dep:serde_urlencoded" ]; + "http1" = [ "dep:hyper" "hyper?/http1" "hyper-util?/http1" ]; + "http2" = [ "dep:hyper" "hyper?/http2" "hyper-util?/http2" ]; + "json" = [ "dep:serde_json" "dep:serde_path_to_error" ]; + "macros" = [ "dep:axum-macros" ]; + "multipart" = [ "dep:multer" ]; + "query" = [ "dep:serde_urlencoded" ]; + "tokio" = [ "dep:hyper-util" "dep:tokio" "tokio/net" "tokio/rt" "tower/make" "tokio/macros" ]; + "tower-log" = [ "tower/log" ]; + "tracing" = [ "dep:tracing" "axum-core/tracing" ]; + "ws" = [ "dep:hyper" "tokio" "dep:tokio-tungstenite" "dep:sha1" "dep:base64" ]; + }; + }; + "axum 0.8.1" = rec { crateName = "axum"; version = "0.8.1"; edition = "2021"; @@ -571,7 +687,7 @@ rec { dependencies = [ { name = "axum-core"; - packageId = "axum-core"; + packageId = "axum-core 0.5.0"; } { name = "bytes"; @@ -617,7 +733,7 @@ rec { } { name = "matchit"; - packageId = "matchit"; + packageId = "matchit 0.8.4"; } { name = "memchr"; @@ -672,7 +788,7 @@ rec { } { name = "tower"; - packageId = "tower"; + packageId = "tower 0.5.2"; usesDefaultFeatures = false; features = [ "util" ]; } @@ -715,7 +831,7 @@ rec { } { name = "tower"; - packageId = "tower"; + packageId = "tower 0.5.2"; rename = "tower"; features = [ "util" "timeout" "limit" "load-shed" "steer" "filter" ]; } @@ -742,7 +858,78 @@ rec { }; resolvedDefaultFeatures = [ "default" "form" "http1" "json" "matched-path" "original-uri" "query" "tokio" "tower-log" "tracing" ]; }; - "axum-core" = rec { + "axum-core 0.4.5" = rec { + crateName = "axum-core"; + version = "0.4.5"; + edition = "2021"; + sha256 = "16b1496c4gm387q20hkv5ic3k5bd6xmnvk50kwsy6ymr8rhvvwh9"; + libName = "axum_core"; + dependencies = [ + { + name = "async-trait"; + packageId = "async-trait"; + } + { + name = "bytes"; + packageId = "bytes"; + } + { + name = "futures-util"; + packageId = "futures-util"; + usesDefaultFeatures = false; + features = [ "alloc" ]; + } + { + name = "http"; + packageId = "http"; + } + { + name = "http-body"; + packageId = "http-body"; + } + { + name = "http-body-util"; + packageId = "http-body-util"; + } + { + name = "mime"; + packageId = "mime"; + } + { + name = "pin-project-lite"; + packageId = "pin-project-lite"; + } + { + name = "rustversion"; + packageId = "rustversion"; + } + { + name = "sync_wrapper"; + packageId = "sync_wrapper"; + } + { + name = "tower-layer"; + packageId = "tower-layer"; + } + { + name = "tower-service"; + packageId = "tower-service"; + } + ]; + devDependencies = [ + { + name = "futures-util"; + packageId = "futures-util"; + usesDefaultFeatures = false; + features = [ "alloc" ]; + } + ]; + features = { + "__private_docs" = [ "dep:tower-http" ]; + "tracing" = [ "dep:tracing" ]; + }; + }; + "axum-core 0.5.0" = rec { crateName = "axum-core"; version = "0.5.0"; edition = "2021"; @@ -850,6 +1037,59 @@ rec { }; resolvedDefaultFeatures = [ "default" ]; }; + "backon" = rec { + crateName = "backon"; + version = "1.4.1"; + edition = "2021"; + sha256 = "1drv0gvhjs3g0q88f1mknqjdyhh6qg8pvb9nkfasba011ibr23cp"; + dependencies = [ + { + name = "fastrand"; + packageId = "fastrand"; + usesDefaultFeatures = false; + } + { + name = "gloo-timers"; + packageId = "gloo-timers"; + optional = true; + target = { target, features }: ("wasm32" == target."arch" or null); + } + { + name = "tokio"; + packageId = "tokio"; + optional = true; + target = { target, features }: (!("wasm32" == target."arch" or null)); + } + ]; + devDependencies = [ + { + name = "tokio"; + packageId = "tokio"; + target = {target, features}: (!("wasm32" == target."arch" or null)); + features = [ "time" "rt" "macros" "sync" "rt-multi-thread" ]; + } + { + name = "tokio"; + packageId = "tokio"; + usesDefaultFeatures = false; + target = {target, features}: ("wasm32" == target."arch" or null); + features = [ "macros" "rt" "sync" ]; + } + ]; + features = { + "default" = [ "std" "std-blocking-sleep" "tokio-sleep" "gloo-timers-sleep" ]; + "embassy-sleep" = [ "embassy-time" ]; + "embassy-time" = [ "dep:embassy-time" ]; + "futures-timer" = [ "dep:futures-timer" ]; + "futures-timer-sleep" = [ "futures-timer" ]; + "gloo-timers" = [ "dep:gloo-timers" ]; + "gloo-timers-sleep" = [ "gloo-timers/futures" ]; + "std" = [ "fastrand/std" ]; + "tokio" = [ "dep:tokio" ]; + "tokio-sleep" = [ "tokio/time" ]; + }; + resolvedDefaultFeatures = [ "default" "gloo-timers" "gloo-timers-sleep" "std" "std-blocking-sleep" "tokio" "tokio-sleep" ]; + }; "backtrace" = rec { crateName = "backtrace"; version = "0.3.74"; @@ -3097,6 +3337,42 @@ rec { ]; }; + "gloo-timers" = rec { + crateName = "gloo-timers"; + version = "0.3.0"; + edition = "2021"; + sha256 = "1519157n7xppkk6pdw5w52vy1llzn5iljkqd7q1h5609jv7l7cdv"; + libName = "gloo_timers"; + authors = [ + "Rust and WebAssembly Working Group" + ]; + dependencies = [ + { + name = "futures-channel"; + packageId = "futures-channel"; + optional = true; + } + { + name = "futures-core"; + packageId = "futures-core"; + optional = true; + } + { + name = "js-sys"; + packageId = "js-sys"; + } + { + name = "wasm-bindgen"; + packageId = "wasm-bindgen"; + } + ]; + features = { + "futures" = [ "futures-core" "futures-channel" ]; + "futures-channel" = [ "dep:futures-channel" ]; + "futures-core" = [ "dep:futures-core" ]; + }; + resolvedDefaultFeatures = [ "default" "futures" "futures-channel" "futures-core" ]; + }; "h2" = rec { crateName = "h2"; version = "0.4.8"; @@ -3135,7 +3411,7 @@ rec { } { name = "indexmap"; - packageId = "indexmap"; + packageId = "indexmap 2.7.1"; features = [ "std" ]; } { @@ -3169,7 +3445,29 @@ rec { features = { }; }; - "hashbrown" = rec { + "hashbrown 0.12.3" = rec { + crateName = "hashbrown"; + version = "0.12.3"; + edition = "2021"; + sha256 = "1268ka4750pyg2pbgsr43f0289l5zah4arir2k4igx5a8c6fg7la"; + authors = [ + "Amanieu d'Antras " + ]; + features = { + "ahash" = [ "dep:ahash" ]; + "ahash-compile-time-rng" = [ "ahash/compile-time-rng" ]; + "alloc" = [ "dep:alloc" ]; + "bumpalo" = [ "dep:bumpalo" ]; + "compiler_builtins" = [ "dep:compiler_builtins" ]; + "core" = [ "dep:core" ]; + "default" = [ "ahash" "inline-more" ]; + "rayon" = [ "dep:rayon" ]; + "rustc-dep-of-std" = [ "nightly" "core" "compiler_builtins" "alloc" "rustc-internal-api" ]; + "serde" = [ "dep:serde" ]; + }; + resolvedDefaultFeatures = [ "raw" ]; + }; + "hashbrown 0.15.2" = rec { crateName = "hashbrown"; version = "0.15.2"; edition = "2021"; @@ -3278,23 +3576,6 @@ rec { sha256 = "1sjmpsdl8czyh9ywl3qcsfsq9a307dg4ni2vnlwgnzzqhc4y0113"; }; - "hermit-abi" = rec { - crateName = "hermit-abi"; - version = "0.3.9"; - edition = "2021"; - sha256 = "092hxjbjnq5fmz66grd9plxd0sh6ssg5fhgwwwqbrzgzkjwdycfj"; - libName = "hermit_abi"; - authors = [ - "Stefan Lankes" - ]; - features = { - "alloc" = [ "dep:alloc" ]; - "compiler_builtins" = [ "dep:compiler_builtins" ]; - "core" = [ "dep:core" ]; - "rustc-dep-of-std" = [ "core" "alloc" "compiler_builtins/rustc-dep-of-std" ]; - }; - resolvedDefaultFeatures = [ "default" ]; - }; "home" = rec { crateName = "home"; version = "0.5.11"; @@ -3962,7 +4243,7 @@ rec { "service" = [ "dep:tower-service" ]; "tokio" = [ "dep:tokio" "tokio/net" "tokio/rt" "tokio/time" ]; }; - resolvedDefaultFeatures = [ "client" "client-legacy" "default" "http1" "http2" "server" "service" "tokio" ]; + resolvedDefaultFeatures = [ "client" "client-legacy" "default" "http1" "http2" "server" "server-auto" "service" "tokio" ]; }; "iana-time-zone" = rec { crateName = "iana-time-zone"; @@ -4497,7 +4778,35 @@ rec { }; resolvedDefaultFeatures = [ "compiled_data" ]; }; - "indexmap" = rec { + "indexmap 1.9.3" = rec { + crateName = "indexmap"; + version = "1.9.3"; + edition = "2021"; + sha256 = "16dxmy7yvk51wvnih3a3im6fp5lmx0wx76i03n06wyak6cwhw1xx"; + dependencies = [ + { + name = "hashbrown"; + packageId = "hashbrown 0.12.3"; + usesDefaultFeatures = false; + features = [ "raw" ]; + } + ]; + buildDependencies = [ + { + name = "autocfg"; + packageId = "autocfg"; + } + ]; + features = { + "arbitrary" = [ "dep:arbitrary" ]; + "quickcheck" = [ "dep:quickcheck" ]; + "rayon" = [ "dep:rayon" ]; + "rustc-rayon" = [ "dep:rustc-rayon" ]; + "serde" = [ "dep:serde" ]; + "serde-1" = [ "serde" ]; + }; + }; + "indexmap 2.7.1" = rec { crateName = "indexmap"; version = "2.7.1"; edition = "2021"; @@ -4510,7 +4819,7 @@ rec { } { name = "hashbrown"; - packageId = "hashbrown"; + packageId = "hashbrown 0.15.2"; usesDefaultFeatures = false; } ]; @@ -4558,23 +4867,6 @@ rec { "web-sys" = [ "dep:web-sys" ]; }; }; - "integer-encoding" = rec { - crateName = "integer-encoding"; - version = "3.0.4"; - edition = "2018"; - sha256 = "00ng7jmv6pqwqc8w1297f768bn0spwwicdr7hb40baax00r3gc4b"; - libName = "integer_encoding"; - authors = [ - "Lewin Bormann " - ]; - features = { - "async-trait" = [ "dep:async-trait" ]; - "futures-util" = [ "dep:futures-util" ]; - "futures_async" = [ "futures-util" "async-trait" ]; - "tokio" = [ "dep:tokio" ]; - "tokio_async" = [ "tokio" "async-trait" ]; - }; - }; "ipnet" = rec { crateName = "ipnet"; version = "2.11.0"; @@ -4621,6 +4913,7 @@ rec { "default" = [ "use_std" ]; "use_std" = [ "use_alloc" "either/use_std" ]; }; + resolvedDefaultFeatures = [ "default" "use_alloc" "use_std" ]; }; "itertools 0.14.0" = rec { crateName = "itertools"; @@ -4724,7 +5017,7 @@ rec { }; resolvedDefaultFeatures = [ "default" "std" ]; }; - "json-patch" = rec { + "json-patch 3.0.1" = rec { crateName = "json-patch"; version = "3.0.1"; edition = "2021"; @@ -4736,7 +5029,48 @@ rec { dependencies = [ { name = "jsonptr"; - packageId = "jsonptr"; + packageId = "jsonptr 0.6.3"; + } + { + name = "serde"; + packageId = "serde"; + features = [ "derive" ]; + } + { + name = "serde_json"; + packageId = "serde_json"; + } + { + name = "thiserror"; + packageId = "thiserror 1.0.69"; + } + ]; + devDependencies = [ + { + name = "serde_json"; + packageId = "serde_json"; + features = [ "preserve_order" ]; + } + ]; + features = { + "default" = [ "diff" ]; + "utoipa" = [ "dep:utoipa" ]; + }; + resolvedDefaultFeatures = [ "default" "diff" ]; + }; + "json-patch 4.0.0" = rec { + crateName = "json-patch"; + version = "4.0.0"; + edition = "2021"; + sha256 = "1x7sn0j8qxkdm5rrvzhz3kvsl9bb9s24szpa9ijgffd0c7b994hm"; + libName = "json_patch"; + authors = [ + "Ivan Dubrov " + ]; + dependencies = [ + { + name = "jsonptr"; + packageId = "jsonptr 0.7.1"; } { name = "serde"; @@ -4798,7 +5132,7 @@ rec { ]; }; - "jsonptr" = rec { + "jsonptr 0.6.3" = rec { crateName = "jsonptr"; version = "0.6.3"; edition = "2021"; @@ -4832,6 +5166,42 @@ rec { }; resolvedDefaultFeatures = [ "assign" "default" "delete" "json" "resolve" "serde" "std" ]; }; + "jsonptr 0.7.1" = rec { + crateName = "jsonptr"; + version = "0.7.1"; + edition = "2021"; + sha256 = "1zk1wmr3c9v1bgqg68yl1yscnz4442zrbciv1g72pmx51dkcr8x5"; + authors = [ + "chance dinkins" + "André Sá de Mello " + "Oliver Wangler " + ]; + dependencies = [ + { + name = "serde"; + packageId = "serde"; + optional = true; + features = [ "alloc" ]; + } + { + name = "serde_json"; + packageId = "serde_json"; + optional = true; + features = [ "alloc" ]; + } + ]; + features = { + "default" = [ "std" "serde" "json" "resolve" "assign" "delete" ]; + "delete" = [ "resolve" ]; + "json" = [ "dep:serde_json" "serde" ]; + "miette" = [ "dep:miette" "std" ]; + "serde" = [ "dep:serde" ]; + "std" = [ "serde/std" "serde_json?/std" ]; + "syn" = [ "dep:syn" ]; + "toml" = [ "dep:toml" "serde" "std" ]; + }; + resolvedDefaultFeatures = [ "assign" "default" "delete" "json" "resolve" "serde" "std" ]; + }; "k8s-openapi" = rec { crateName = "k8s-openapi"; version = "0.24.0"; @@ -4919,7 +5289,7 @@ rec { }; resolvedDefaultFeatures = [ "darling" ]; }; - "kube" = rec { + "kube 0.98.0" = rec { crateName = "kube"; version = "0.98.0"; edition = "2021"; @@ -4937,22 +5307,22 @@ rec { } { name = "kube-client"; - packageId = "kube-client"; + packageId = "kube-client 0.98.0"; optional = true; usesDefaultFeatures = false; } { name = "kube-core"; - packageId = "kube-core"; + packageId = "kube-core 0.98.0"; } { name = "kube-derive"; - packageId = "kube-derive"; + packageId = "kube-derive 0.98.0"; optional = true; } { name = "kube-runtime"; - packageId = "kube-runtime"; + packageId = "kube-runtime 0.98.0"; optional = true; } ]; @@ -4991,7 +5361,80 @@ rec { }; resolvedDefaultFeatures = [ "client" "config" "derive" "jsonpatch" "kube-client" "kube-derive" "kube-runtime" "runtime" "rustls-tls" ]; }; - "kube-client" = rec { + "kube 0.99.0" = rec { + crateName = "kube"; + version = "0.99.0"; + edition = "2021"; + sha256 = "0vnaqmxk40i2jgwxqsk8x75rn1j37p93gv3zx6mlhssk200b4kls"; + authors = [ + "clux " + "Natalie Klestrup Röijezon " + "kazk " + ]; + dependencies = [ + { + name = "k8s-openapi"; + packageId = "k8s-openapi"; + usesDefaultFeatures = false; + } + { + name = "kube-client"; + packageId = "kube-client 0.99.0"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "kube-core"; + packageId = "kube-core 0.99.0"; + } + { + name = "kube-derive"; + packageId = "kube-derive 0.99.0"; + optional = true; + } + { + name = "kube-runtime"; + packageId = "kube-runtime 0.99.0"; + optional = true; + } + ]; + devDependencies = [ + { + name = "k8s-openapi"; + packageId = "k8s-openapi"; + usesDefaultFeatures = false; + features = [ "latest" ]; + } + ]; + features = { + "admission" = [ "kube-core/admission" ]; + "aws-lc-rs" = [ "kube-client?/aws-lc-rs" ]; + "client" = [ "kube-client/client" "config" ]; + "config" = [ "kube-client/config" ]; + "default" = [ "client" "rustls-tls" "ring" ]; + "derive" = [ "kube-derive" "kube-core/schema" ]; + "gzip" = [ "kube-client/gzip" "client" ]; + "http-proxy" = [ "kube-client/http-proxy" "client" ]; + "jsonpatch" = [ "kube-core/jsonpatch" ]; + "kube-client" = [ "dep:kube-client" ]; + "kube-derive" = [ "dep:kube-derive" ]; + "kube-runtime" = [ "dep:kube-runtime" ]; + "kubelet-debug" = [ "kube-client/kubelet-debug" "kube-core/kubelet-debug" ]; + "oauth" = [ "kube-client/oauth" "client" ]; + "oidc" = [ "kube-client/oidc" "client" ]; + "openssl-tls" = [ "kube-client/openssl-tls" "client" ]; + "ring" = [ "kube-client?/ring" ]; + "runtime" = [ "kube-runtime" ]; + "rustls-tls" = [ "kube-client/rustls-tls" "client" ]; + "socks5" = [ "kube-client/socks5" "client" ]; + "unstable-client" = [ "kube-client/unstable-client" "client" ]; + "unstable-runtime" = [ "kube-runtime/unstable-runtime" "runtime" ]; + "webpki-roots" = [ "kube-client/webpki-roots" "client" ]; + "ws" = [ "kube-client/ws" "kube-core/ws" ]; + }; + resolvedDefaultFeatures = [ "client" "config" "derive" "jsonpatch" "kube-client" "kube-derive" "kube-runtime" "ring" "runtime" "rustls-tls" ]; + }; + "kube-client 0.98.0" = rec { crateName = "kube-client"; version = "0.98.0"; edition = "2021"; @@ -5092,7 +5535,7 @@ rec { } { name = "kube-core"; - packageId = "kube-core"; + packageId = "kube-core 0.98.0"; } { name = "pem"; @@ -5146,7 +5589,7 @@ rec { } { name = "tower"; - packageId = "tower"; + packageId = "tower 0.5.2"; optional = true; features = [ "buffer" "filter" "util" ]; } @@ -5238,74 +5681,392 @@ rec { }; resolvedDefaultFeatures = [ "__non_core" "base64" "bytes" "chrono" "client" "config" "either" "futures" "home" "http-body" "http-body-util" "hyper" "hyper-rustls" "hyper-timeout" "hyper-util" "jsonpatch" "jsonpath-rust" "pem" "rustls" "rustls-pemfile" "rustls-tls" "serde_yaml" "tokio" "tokio-util" "tower" "tower-http" "tracing" ]; }; - "kube-core" = rec { - crateName = "kube-core"; - version = "0.98.0"; + "kube-client 0.99.0" = rec { + crateName = "kube-client"; + version = "0.99.0"; edition = "2021"; - sha256 = "1wwnsn1wk7bd2jiv9iw8446j0bczagqv1lc4wy88l5wa505q7alp"; - libName = "kube_core"; + sha256 = "1wfciml6xcylhlwn72dbiq8vc57cs0a9dzn2bb8j1ps242ayvhkz"; + libName = "kube_client"; authors = [ "clux " "Natalie Klestrup Röijezon " "kazk " ]; dependencies = [ + { + name = "base64"; + packageId = "base64 0.22.1"; + optional = true; + } + { + name = "bytes"; + packageId = "bytes"; + optional = true; + } { name = "chrono"; packageId = "chrono"; + optional = true; usesDefaultFeatures = false; - features = [ "now" ]; } { - name = "form_urlencoded"; - packageId = "form_urlencoded"; + name = "either"; + packageId = "either"; + optional = true; + } + { + name = "futures"; + packageId = "futures"; + optional = true; + usesDefaultFeatures = false; + features = [ "std" ]; + } + { + name = "home"; + packageId = "home"; + optional = true; } { name = "http"; packageId = "http"; } { - name = "json-patch"; - packageId = "json-patch"; + name = "http-body"; + packageId = "http-body"; optional = true; } { - name = "k8s-openapi"; - packageId = "k8s-openapi"; - usesDefaultFeatures = false; + name = "http-body-util"; + packageId = "http-body-util"; + optional = true; } { - name = "schemars"; - packageId = "schemars"; + name = "hyper"; + packageId = "hyper"; optional = true; + features = [ "client" "http1" ]; } { - name = "serde"; - packageId = "serde"; - features = [ "derive" ]; + name = "hyper-http-proxy"; + packageId = "hyper-http-proxy"; + optional = true; + usesDefaultFeatures = false; } { - name = "serde-value"; - packageId = "serde-value"; + name = "hyper-rustls"; + packageId = "hyper-rustls"; + optional = true; + usesDefaultFeatures = false; + features = [ "http1" "logging" "native-tokio" "tls12" ]; } { - name = "serde_json"; - packageId = "serde_json"; + name = "hyper-timeout"; + packageId = "hyper-timeout"; + optional = true; } { - name = "thiserror"; - packageId = "thiserror 2.0.12"; + name = "hyper-util"; + packageId = "hyper-util"; + optional = true; + features = [ "client" "client-legacy" "http1" "tokio" ]; + } + { + name = "jsonpath-rust"; + packageId = "jsonpath-rust"; + optional = true; } - ]; - devDependencies = [ { name = "k8s-openapi"; packageId = "k8s-openapi"; usesDefaultFeatures = false; - features = [ "latest" ]; } - ]; - features = { + { + name = "kube-core"; + packageId = "kube-core 0.99.0"; + } + { + name = "pem"; + packageId = "pem"; + optional = true; + } + { + name = "rustls"; + packageId = "rustls"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "secrecy"; + packageId = "secrecy"; + } + { + name = "serde"; + packageId = "serde"; + features = [ "derive" ]; + } + { + name = "serde_json"; + packageId = "serde_json"; + } + { + name = "serde_yaml"; + packageId = "serde_yaml"; + optional = true; + } + { + name = "thiserror"; + packageId = "thiserror 2.0.12"; + } + { + name = "tokio"; + packageId = "tokio"; + optional = true; + features = [ "time" "signal" "sync" ]; + } + { + name = "tokio-util"; + packageId = "tokio-util"; + optional = true; + features = [ "io" "codec" ]; + } + { + name = "tower"; + packageId = "tower 0.5.2"; + optional = true; + features = [ "buffer" "filter" "util" ]; + } + { + name = "tower-http"; + packageId = "tower-http"; + optional = true; + features = [ "auth" "map-response-body" "trace" ]; + } + { + name = "tracing"; + packageId = "tracing"; + optional = true; + features = [ "log" ]; + } + ]; + devDependencies = [ + { + name = "futures"; + packageId = "futures"; + usesDefaultFeatures = false; + features = [ "async-await" ]; + } + { + name = "hyper"; + packageId = "hyper"; + features = [ "server" ]; + } + { + name = "k8s-openapi"; + packageId = "k8s-openapi"; + usesDefaultFeatures = false; + features = [ "latest" ]; + } + { + name = "tokio"; + packageId = "tokio"; + features = [ "full" ]; + } + ]; + features = { + "__non_core" = [ "tracing" "serde_yaml" "base64" ]; + "admission" = [ "kube-core/admission" ]; + "aws-lc-rs" = [ "hyper-rustls?/aws-lc-rs" ]; + "base64" = [ "dep:base64" ]; + "bytes" = [ "dep:bytes" ]; + "chrono" = [ "dep:chrono" ]; + "client" = [ "config" "__non_core" "hyper" "hyper-util" "http-body" "http-body-util" "tower" "tower-http" "hyper-timeout" "chrono" "jsonpath-rust" "bytes" "futures" "tokio" "tokio-util" "either" ]; + "config" = [ "__non_core" "pem" "home" ]; + "default" = [ "client" "ring" ]; + "either" = [ "dep:either" ]; + "form_urlencoded" = [ "dep:form_urlencoded" ]; + "futures" = [ "dep:futures" ]; + "gzip" = [ "client" "tower-http/decompression-gzip" ]; + "home" = [ "dep:home" ]; + "http-body" = [ "dep:http-body" ]; + "http-body-util" = [ "dep:http-body-util" ]; + "http-proxy" = [ "hyper-http-proxy" ]; + "hyper" = [ "dep:hyper" ]; + "hyper-http-proxy" = [ "dep:hyper-http-proxy" ]; + "hyper-openssl" = [ "dep:hyper-openssl" ]; + "hyper-rustls" = [ "dep:hyper-rustls" ]; + "hyper-socks2" = [ "dep:hyper-socks2" ]; + "hyper-timeout" = [ "dep:hyper-timeout" ]; + "hyper-util" = [ "dep:hyper-util" ]; + "jsonpatch" = [ "kube-core/jsonpatch" ]; + "jsonpath-rust" = [ "dep:jsonpath-rust" ]; + "kubelet-debug" = [ "ws" "kube-core/kubelet-debug" ]; + "oauth" = [ "client" "tame-oauth" ]; + "oidc" = [ "client" "form_urlencoded" ]; + "openssl" = [ "dep:openssl" ]; + "openssl-tls" = [ "openssl" "hyper-openssl" ]; + "pem" = [ "dep:pem" ]; + "ring" = [ "hyper-rustls?/ring" ]; + "rustls" = [ "dep:rustls" ]; + "rustls-tls" = [ "rustls" "hyper-rustls" "hyper-http-proxy?/rustls-tls-native-roots" ]; + "serde_yaml" = [ "dep:serde_yaml" ]; + "socks5" = [ "hyper-socks2" ]; + "tame-oauth" = [ "dep:tame-oauth" ]; + "tokio" = [ "dep:tokio" ]; + "tokio-tungstenite" = [ "dep:tokio-tungstenite" ]; + "tokio-util" = [ "dep:tokio-util" ]; + "tower" = [ "dep:tower" ]; + "tower-http" = [ "dep:tower-http" ]; + "tracing" = [ "dep:tracing" ]; + "webpki-roots" = [ "hyper-rustls/webpki-roots" ]; + "ws" = [ "client" "tokio-tungstenite" "kube-core/ws" "tokio/macros" ]; + }; + resolvedDefaultFeatures = [ "__non_core" "base64" "bytes" "chrono" "client" "config" "either" "futures" "home" "http-body" "http-body-util" "hyper" "hyper-rustls" "hyper-timeout" "hyper-util" "jsonpatch" "jsonpath-rust" "pem" "ring" "rustls" "rustls-tls" "serde_yaml" "tokio" "tokio-util" "tower" "tower-http" "tracing" ]; + }; + "kube-core 0.98.0" = rec { + crateName = "kube-core"; + version = "0.98.0"; + edition = "2021"; + sha256 = "1wwnsn1wk7bd2jiv9iw8446j0bczagqv1lc4wy88l5wa505q7alp"; + libName = "kube_core"; + authors = [ + "clux " + "Natalie Klestrup Röijezon " + "kazk " + ]; + dependencies = [ + { + name = "chrono"; + packageId = "chrono"; + usesDefaultFeatures = false; + features = [ "now" ]; + } + { + name = "form_urlencoded"; + packageId = "form_urlencoded"; + } + { + name = "http"; + packageId = "http"; + } + { + name = "json-patch"; + packageId = "json-patch 3.0.1"; + optional = true; + } + { + name = "k8s-openapi"; + packageId = "k8s-openapi"; + usesDefaultFeatures = false; + } + { + name = "schemars"; + packageId = "schemars"; + optional = true; + } + { + name = "serde"; + packageId = "serde"; + features = [ "derive" ]; + } + { + name = "serde-value"; + packageId = "serde-value"; + } + { + name = "serde_json"; + packageId = "serde_json"; + } + { + name = "thiserror"; + packageId = "thiserror 2.0.12"; + } + ]; + devDependencies = [ + { + name = "k8s-openapi"; + packageId = "k8s-openapi"; + usesDefaultFeatures = false; + features = [ "latest" ]; + } + ]; + features = { + "admission" = [ "json-patch" ]; + "json-patch" = [ "dep:json-patch" ]; + "jsonpatch" = [ "json-patch" ]; + "kubelet-debug" = [ "ws" ]; + "schema" = [ "schemars" ]; + "schemars" = [ "dep:schemars" ]; + }; + resolvedDefaultFeatures = [ "json-patch" "jsonpatch" "schema" "schemars" ]; + }; + "kube-core 0.99.0" = rec { + crateName = "kube-core"; + version = "0.99.0"; + edition = "2021"; + sha256 = "0xf60y07xkqqqqyl7rvk2r4amcvch61r2j49ssk0rrsqvf9hf3gz"; + libName = "kube_core"; + authors = [ + "clux " + "Natalie Klestrup Röijezon " + "kazk " + ]; + dependencies = [ + { + name = "chrono"; + packageId = "chrono"; + usesDefaultFeatures = false; + features = [ "now" ]; + } + { + name = "form_urlencoded"; + packageId = "form_urlencoded"; + } + { + name = "http"; + packageId = "http"; + } + { + name = "json-patch"; + packageId = "json-patch 4.0.0"; + optional = true; + } + { + name = "k8s-openapi"; + packageId = "k8s-openapi"; + usesDefaultFeatures = false; + } + { + name = "schemars"; + packageId = "schemars"; + optional = true; + } + { + name = "serde"; + packageId = "serde"; + features = [ "derive" ]; + } + { + name = "serde-value"; + packageId = "serde-value"; + } + { + name = "serde_json"; + packageId = "serde_json"; + } + { + name = "thiserror"; + packageId = "thiserror 2.0.12"; + } + ]; + devDependencies = [ + { + name = "k8s-openapi"; + packageId = "k8s-openapi"; + usesDefaultFeatures = false; + features = [ "latest" ]; + } + ]; + features = { "admission" = [ "json-patch" ]; "json-patch" = [ "dep:json-patch" ]; "jsonpatch" = [ "json-patch" ]; @@ -5315,7 +6076,7 @@ rec { }; resolvedDefaultFeatures = [ "json-patch" "jsonpatch" "schema" "schemars" ]; }; - "kube-derive" = rec { + "kube-derive 0.98.0" = rec { crateName = "kube-derive"; version = "0.98.0"; edition = "2021"; @@ -5329,34 +6090,210 @@ rec { ]; dependencies = [ { - name = "darling"; - packageId = "darling"; + name = "darling"; + packageId = "darling"; + } + { + name = "proc-macro2"; + packageId = "proc-macro2"; + } + { + name = "quote"; + packageId = "quote"; + } + { + name = "serde_json"; + packageId = "serde_json"; + } + { + name = "syn"; + packageId = "syn 2.0.99"; + features = [ "extra-traits" ]; + } + ]; + + }; + "kube-derive 0.99.0" = rec { + crateName = "kube-derive"; + version = "0.99.0"; + edition = "2021"; + sha256 = "1jclsj6ah0ijhzpd43ff0ipxs7i2r985ivm6r3m5zjppr66zaqn5"; + procMacro = true; + libName = "kube_derive"; + authors = [ + "clux " + "Natalie Klestrup Röijezon " + "kazk " + ]; + dependencies = [ + { + name = "darling"; + packageId = "darling"; + } + { + name = "proc-macro2"; + packageId = "proc-macro2"; + } + { + name = "quote"; + packageId = "quote"; + } + { + name = "serde"; + packageId = "serde"; + features = [ "derive" ]; + } + { + name = "serde_json"; + packageId = "serde_json"; + } + { + name = "syn"; + packageId = "syn 2.0.99"; + features = [ "extra-traits" ]; + } + ]; + devDependencies = [ + { + name = "serde"; + packageId = "serde"; + features = [ "derive" ]; + } + ]; + + }; + "kube-runtime 0.98.0" = rec { + crateName = "kube-runtime"; + version = "0.98.0"; + edition = "2021"; + sha256 = "0nqkihr4i687lswa99lwhn0gzsy3pm59j4rsl5qhrs0gd8cayhbs"; + libName = "kube_runtime"; + authors = [ + "clux " + "Natalie Klestrup Röijezon " + "kazk " + ]; + dependencies = [ + { + name = "ahash"; + packageId = "ahash"; + } + { + name = "async-broadcast"; + packageId = "async-broadcast"; + } + { + name = "async-stream"; + packageId = "async-stream"; + } + { + name = "async-trait"; + packageId = "async-trait"; + } + { + name = "backoff"; + packageId = "backoff"; + } + { + name = "educe"; + packageId = "educe"; + usesDefaultFeatures = false; + features = [ "Clone" "Debug" "Hash" "PartialEq" ]; + } + { + name = "futures"; + packageId = "futures"; + usesDefaultFeatures = false; + features = [ "async-await" ]; + } + { + name = "hashbrown"; + packageId = "hashbrown 0.15.2"; + } + { + name = "hostname"; + packageId = "hostname"; + } + { + name = "json-patch"; + packageId = "json-patch 3.0.1"; + } + { + name = "jsonptr"; + packageId = "jsonptr 0.6.3"; + } + { + name = "k8s-openapi"; + packageId = "k8s-openapi"; + usesDefaultFeatures = false; + } + { + name = "kube-client"; + packageId = "kube-client 0.98.0"; + usesDefaultFeatures = false; + features = [ "jsonpatch" "client" ]; + } + { + name = "parking_lot"; + packageId = "parking_lot"; + } + { + name = "pin-project"; + packageId = "pin-project"; + } + { + name = "serde"; + packageId = "serde"; + } + { + name = "serde_json"; + packageId = "serde_json"; } { - name = "proc-macro2"; - packageId = "proc-macro2"; + name = "thiserror"; + packageId = "thiserror 2.0.12"; } { - name = "quote"; - packageId = "quote"; + name = "tokio"; + packageId = "tokio"; + features = [ "time" ]; + } + { + name = "tokio-util"; + packageId = "tokio-util"; + features = [ "time" ]; + } + { + name = "tracing"; + packageId = "tracing"; + } + ]; + devDependencies = [ + { + name = "k8s-openapi"; + packageId = "k8s-openapi"; + usesDefaultFeatures = false; + features = [ "latest" ]; } { name = "serde_json"; packageId = "serde_json"; } { - name = "syn"; - packageId = "syn 2.0.99"; - features = [ "extra-traits" ]; + name = "tokio"; + packageId = "tokio"; + features = [ "full" "test-util" ]; } ]; - + features = { + "unstable-runtime" = [ "unstable-runtime-subscribe" "unstable-runtime-stream-control" "unstable-runtime-reconcile-on" ]; + }; }; - "kube-runtime" = rec { + "kube-runtime 0.99.0" = rec { crateName = "kube-runtime"; - version = "0.98.0"; + version = "0.99.0"; edition = "2021"; - sha256 = "0nqkihr4i687lswa99lwhn0gzsy3pm59j4rsl5qhrs0gd8cayhbs"; + sha256 = "1p7z4vl9l1hbqqqjx7qmkyq3rwhxp3nqa3if0qrqdgdlp7x4rww8"; libName = "kube_runtime"; authors = [ "clux " @@ -5381,8 +6318,8 @@ rec { packageId = "async-trait"; } { - name = "backoff"; - packageId = "backoff"; + name = "backon"; + packageId = "backon"; } { name = "educe"; @@ -5398,7 +6335,7 @@ rec { } { name = "hashbrown"; - packageId = "hashbrown"; + packageId = "hashbrown 0.15.2"; } { name = "hostname"; @@ -5406,11 +6343,7 @@ rec { } { name = "json-patch"; - packageId = "json-patch"; - } - { - name = "jsonptr"; - packageId = "jsonptr"; + packageId = "json-patch 4.0.0"; } { name = "k8s-openapi"; @@ -5419,7 +6352,7 @@ rec { } { name = "kube-client"; - packageId = "kube-client"; + packageId = "kube-client 0.99.0"; usesDefaultFeatures = false; features = [ "jsonpatch" "client" ]; } @@ -6009,7 +6942,19 @@ rec { ]; }; - "matchit" = rec { + "matchit 0.7.3" = rec { + crateName = "matchit"; + version = "0.7.3"; + edition = "2021"; + sha256 = "156bgdmmlv4crib31qhgg49nsjk88dxkdqp80ha2pk2rk6n6ax0f"; + authors = [ + "Ibraheem Ahmed " + ]; + features = { + }; + resolvedDefaultFeatures = [ "default" ]; + }; + "matchit 0.8.4" = rec { crateName = "matchit"; version = "0.8.4"; edition = "2021"; @@ -6376,28 +7321,6 @@ rec { }; resolvedDefaultFeatures = [ "std" ]; }; - "num_cpus" = rec { - crateName = "num_cpus"; - version = "1.16.0"; - edition = "2015"; - sha256 = "0hra6ihpnh06dvfvz9ipscys0xfqa9ca9hzp384d5m02ssvgqqa1"; - authors = [ - "Sean McArthur " - ]; - dependencies = [ - { - name = "hermit-abi"; - packageId = "hermit-abi"; - target = { target, features }: ("hermit" == target."os" or null); - } - { - name = "libc"; - packageId = "libc"; - target = { target, features }: (!(target."windows" or false)); - } - ]; - - }; "object" = rec { crateName = "object"; version = "0.36.7"; @@ -6574,27 +7497,25 @@ rec { }; "opentelemetry" = rec { crateName = "opentelemetry"; - version = "0.23.0"; + version = "0.28.0"; edition = "2021"; - sha256 = "0xia0flm8w561in05qd5axhaf7qgcfnrfibjdzh17rwk90fsjs8v"; + sha256 = "09k43sgaarw3zx5j434ngq1canpcjibsbxaqqa8dyp0acxxncvi3"; dependencies = [ { name = "futures-core"; packageId = "futures-core"; + optional = true; } { name = "futures-sink"; packageId = "futures-sink"; + optional = true; } { name = "js-sys"; packageId = "js-sys"; target = { target, features }: (("wasm32" == target."arch" or null) && (!("wasi" == target."os" or null))); } - { - name = "once_cell"; - packageId = "once_cell"; - } { name = "pin-project-lite"; packageId = "pin-project-lite"; @@ -6602,25 +7523,135 @@ rec { } { name = "thiserror"; - packageId = "thiserror 1.0.69"; + packageId = "thiserror 2.0.12"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "tracing"; + packageId = "tracing"; + optional = true; usesDefaultFeatures = false; } ]; features = { - "default" = [ "trace" ]; - "logs_level_enabled" = [ "logs" ]; + "default" = [ "trace" "metrics" "logs" "internal-logs" ]; + "futures-core" = [ "dep:futures-core" ]; + "futures-sink" = [ "dep:futures-sink" ]; + "internal-logs" = [ "tracing" ]; "pin-project-lite" = [ "dep:pin-project-lite" ]; - "testing" = [ "trace" "metrics" ]; - "trace" = [ "pin-project-lite" ]; + "spec_unstable_logs_enabled" = [ "logs" ]; + "testing" = [ "trace" ]; + "thiserror" = [ "dep:thiserror" ]; + "trace" = [ "pin-project-lite" "futures-sink" "futures-core" "thiserror" ]; + "tracing" = [ "dep:tracing" ]; + }; + resolvedDefaultFeatures = [ "default" "futures-core" "futures-sink" "internal-logs" "logs" "metrics" "pin-project-lite" "spec_unstable_logs_enabled" "thiserror" "trace" "tracing" ]; + }; + "opentelemetry-appender-tracing" = rec { + crateName = "opentelemetry-appender-tracing"; + version = "0.28.1"; + edition = "2021"; + sha256 = "1h6x4pwk225yi8mxl3sqkhg5ya93z57i68267lzi2c7c7fpwf4y5"; + libName = "opentelemetry_appender_tracing"; + dependencies = [ + { + name = "opentelemetry"; + packageId = "opentelemetry"; + features = [ "logs" ]; + } + { + name = "tracing"; + packageId = "tracing"; + usesDefaultFeatures = false; + features = [ "std" ]; + } + { + name = "tracing-core"; + packageId = "tracing-core"; + usesDefaultFeatures = false; + } + { + name = "tracing-subscriber"; + packageId = "tracing-subscriber"; + usesDefaultFeatures = false; + features = [ "registry" "std" ]; + } + ]; + devDependencies = [ + { + name = "tracing-subscriber"; + packageId = "tracing-subscriber"; + usesDefaultFeatures = false; + features = [ "registry" "std" "env-filter" ]; + } + ]; + features = { + "experimental_metadata_attributes" = [ "dep:tracing-log" ]; + "experimental_use_tracing_span_context" = [ "tracing-opentelemetry" ]; + "log" = [ "dep:log" ]; + "spec_unstable_logs_enabled" = [ "opentelemetry/spec_unstable_logs_enabled" ]; + "tracing-opentelemetry" = [ "dep:tracing-opentelemetry" ]; + }; + resolvedDefaultFeatures = [ "default" ]; + }; + "opentelemetry-http" = rec { + crateName = "opentelemetry-http"; + version = "0.28.0"; + edition = "2021"; + sha256 = "0lv2sbsdr7b8bxnly92zzhlm1wzjbynib1xlkw9hs0qh56pkz1m8"; + libName = "opentelemetry_http"; + dependencies = [ + { + name = "async-trait"; + packageId = "async-trait"; + } + { + name = "bytes"; + packageId = "bytes"; + } + { + name = "http"; + packageId = "http"; + usesDefaultFeatures = false; + features = [ "std" ]; + } + { + name = "opentelemetry"; + packageId = "opentelemetry"; + features = [ "trace" ]; + } + { + name = "reqwest"; + packageId = "reqwest"; + optional = true; + usesDefaultFeatures = false; + features = [ "blocking" ]; + } + { + name = "tracing"; + packageId = "tracing"; + optional = true; + usesDefaultFeatures = false; + } + ]; + features = { + "default" = [ "internal-logs" ]; + "hyper" = [ "dep:http-body-util" "dep:hyper" "dep:hyper-util" "dep:tokio" ]; + "internal-logs" = [ "tracing" "opentelemetry/internal-logs" ]; + "reqwest" = [ "dep:reqwest" ]; + "reqwest-rustls" = [ "reqwest" "reqwest/rustls-tls-native-roots" ]; + "reqwest-rustls-webpki-roots" = [ "reqwest" "reqwest/rustls-tls-webpki-roots" ]; + "tracing" = [ "dep:tracing" ]; }; - resolvedDefaultFeatures = [ "default" "metrics" "pin-project-lite" "trace" ]; + resolvedDefaultFeatures = [ "default" "internal-logs" "reqwest" "tracing" ]; }; - "opentelemetry-jaeger" = rec { - crateName = "opentelemetry-jaeger"; - version = "0.22.0"; + "opentelemetry-otlp" = rec { + crateName = "opentelemetry-otlp"; + version = "0.28.0"; edition = "2021"; - sha256 = "17zivynwp600vqp94mm3xjid2lpr02zghaacgnhdjimpcwdlf6sh"; - libName = "opentelemetry_jaeger"; + sha256 = "148xq13ar11bvmk7pxbslrhh5pgf40bv83n6dlysigj1dm613vsv"; + libName = "opentelemetry_otlp"; dependencies = [ { name = "async-trait"; @@ -6631,37 +7662,66 @@ rec { packageId = "futures-core"; } { - name = "futures-util"; - packageId = "futures-util"; + name = "http"; + packageId = "http"; + optional = true; usesDefaultFeatures = false; - features = [ "std" "alloc" ]; + features = [ "std" ]; } { name = "opentelemetry"; packageId = "opentelemetry"; usesDefaultFeatures = false; - features = [ "trace" ]; } { - name = "opentelemetry-semantic-conventions"; - packageId = "opentelemetry-semantic-conventions"; + name = "opentelemetry-http"; + packageId = "opentelemetry-http"; + optional = true; + } + { + name = "opentelemetry-proto"; + packageId = "opentelemetry-proto"; + usesDefaultFeatures = false; } { name = "opentelemetry_sdk"; packageId = "opentelemetry_sdk"; usesDefaultFeatures = false; - features = [ "trace" ]; } { - name = "thrift"; - packageId = "thrift"; + name = "prost"; + packageId = "prost"; + optional = true; + } + { + name = "reqwest"; + packageId = "reqwest"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "thiserror"; + packageId = "thiserror 2.0.12"; + usesDefaultFeatures = false; } { name = "tokio"; packageId = "tokio"; optional = true; usesDefaultFeatures = false; - features = [ "net" "sync" ]; + features = [ "sync" "rt" ]; + } + { + name = "tonic"; + packageId = "tonic"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "tracing"; + packageId = "tracing"; + optional = true; + usesDefaultFeatures = false; } ]; devDependencies = [ @@ -6669,58 +7729,100 @@ rec { name = "tokio"; packageId = "tokio"; usesDefaultFeatures = false; - features = [ "net" "sync" ]; + features = [ "macros" "rt-multi-thread" ]; } ]; features = { - "async-std" = [ "dep:async-std" ]; - "base64" = [ "dep:base64" ]; - "collector_client" = [ "http" "opentelemetry-http" ]; - "full" = [ "collector_client" "hyper_collector_client" "hyper_tls_collector_client" "isahc_collector_client" "reqwest_collector_client" "reqwest_blocking_collector_client" "reqwest_rustls_collector_client" "wasm_collector_client" "rt-tokio" "rt-tokio-current-thread" "rt-async-std" "integration_test" ]; - "futures-executor" = [ "dep:futures-executor" ]; - "headers" = [ "dep:headers" ]; + "default" = [ "http-proto" "reqwest-blocking-client" "trace" "metrics" "logs" "internal-logs" ]; + "grpc-tonic" = [ "tonic" "prost" "http" "tokio" "opentelemetry-proto/gen-tonic" ]; + "gzip-tonic" = [ "tonic/gzip" ]; "http" = [ "dep:http" ]; - "hyper" = [ "dep:hyper" ]; - "hyper-tls" = [ "dep:hyper-tls" ]; - "hyper_collector_client" = [ "collector_client" "headers" "http" "hyper" "opentelemetry-http/tokio" "opentelemetry-http/hyper" ]; - "hyper_tls_collector_client" = [ "hyper_collector_client" "hyper-tls" ]; - "integration_test" = [ "tonic" "prost" "prost-types" "rt-tokio" "collector_client" "hyper_collector_client" "hyper_tls_collector_client" "reqwest_collector_client" "isahc_collector_client" ]; - "isahc" = [ "dep:isahc" ]; - "isahc_collector_client" = [ "isahc" "opentelemetry-http/isahc" ]; - "js-sys" = [ "dep:js-sys" ]; + "http-json" = [ "serde_json" "prost" "opentelemetry-http" "opentelemetry-proto/gen-tonic-messages" "opentelemetry-proto/with-serde" "http" "trace" "metrics" ]; + "http-proto" = [ "prost" "opentelemetry-http" "opentelemetry-proto/gen-tonic-messages" "http" "trace" "metrics" ]; + "hyper-client" = [ "opentelemetry-http/hyper" ]; + "integration-testing" = [ "tonic" "prost" "tokio/full" "trace" "logs" ]; + "internal-logs" = [ "tracing" "opentelemetry/internal-logs" ]; + "logs" = [ "opentelemetry/logs" "opentelemetry_sdk/logs" "opentelemetry-proto/logs" ]; + "metrics" = [ "opentelemetry/metrics" "opentelemetry_sdk/metrics" "opentelemetry-proto/metrics" ]; "opentelemetry-http" = [ "dep:opentelemetry-http" ]; - "pin-project-lite" = [ "dep:pin-project-lite" ]; "prost" = [ "dep:prost" ]; - "prost-types" = [ "dep:prost-types" ]; "reqwest" = [ "dep:reqwest" ]; - "reqwest_blocking_collector_client" = [ "reqwest/blocking" "collector_client" "headers" "opentelemetry-http/reqwest" ]; - "reqwest_collector_client" = [ "reqwest" "collector_client" "headers" "opentelemetry-http/reqwest" ]; - "reqwest_rustls_collector_client" = [ "reqwest_collector_client" "reqwest/rustls-tls-native-roots" ]; - "rt-async-std" = [ "async-std" "opentelemetry_sdk/rt-async-std" ]; - "rt-tokio" = [ "tokio" "opentelemetry_sdk/rt-tokio" ]; - "rt-tokio-current-thread" = [ "tokio" "opentelemetry_sdk/rt-tokio-current-thread" ]; + "reqwest-blocking-client" = [ "reqwest/blocking" "opentelemetry-http/reqwest" ]; + "reqwest-client" = [ "reqwest" "opentelemetry-http/reqwest" ]; + "reqwest-rustls" = [ "reqwest" "opentelemetry-http/reqwest-rustls" ]; + "reqwest-rustls-webpki-roots" = [ "reqwest" "opentelemetry-http/reqwest-rustls-webpki-roots" ]; + "serde" = [ "dep:serde" ]; + "serde_json" = [ "dep:serde_json" ]; + "serialize" = [ "serde" "serde_json" ]; + "tls" = [ "tonic/tls" ]; + "tls-roots" = [ "tls" "tonic/tls-roots" ]; + "tls-webpki-roots" = [ "tls" "tonic/tls-webpki-roots" ]; "tokio" = [ "dep:tokio" ]; "tonic" = [ "dep:tonic" ]; - "wasm-bindgen" = [ "dep:wasm-bindgen" ]; - "wasm-bindgen-futures" = [ "dep:wasm-bindgen-futures" ]; - "wasm_collector_client" = [ "base64" "http" "js-sys" "pin-project-lite" "wasm-bindgen" "wasm-bindgen-futures" "web-sys" ]; - "web-sys" = [ "dep:web-sys" ]; + "trace" = [ "opentelemetry/trace" "opentelemetry_sdk/trace" "opentelemetry-proto/trace" ]; + "tracing" = [ "dep:tracing" ]; + "zstd-tonic" = [ "tonic/zstd" ]; }; - resolvedDefaultFeatures = [ "default" "rt-tokio" "tokio" ]; + resolvedDefaultFeatures = [ "default" "grpc-tonic" "gzip-tonic" "http" "http-proto" "internal-logs" "logs" "metrics" "opentelemetry-http" "prost" "reqwest" "reqwest-blocking-client" "tokio" "tonic" "trace" "tracing" ]; }; - "opentelemetry-semantic-conventions" = rec { - crateName = "opentelemetry-semantic-conventions"; - version = "0.15.0"; + "opentelemetry-proto" = rec { + crateName = "opentelemetry-proto"; + version = "0.28.0"; edition = "2021"; - sha256 = "1mx45kzf86fs5558c7h90w6h2k3vi899n374l6l5np5kp55zns8q"; - libName = "opentelemetry_semantic_conventions"; - + sha256 = "0vbl4si1mny87pmqxxg6wday45pcc8bvpcrf46cpwwi4606qgy2n"; + libName = "opentelemetry_proto"; + dependencies = [ + { + name = "opentelemetry"; + packageId = "opentelemetry"; + usesDefaultFeatures = false; + } + { + name = "opentelemetry_sdk"; + packageId = "opentelemetry_sdk"; + usesDefaultFeatures = false; + } + { + name = "prost"; + packageId = "prost"; + optional = true; + } + { + name = "tonic"; + packageId = "tonic"; + optional = true; + usesDefaultFeatures = false; + features = [ "codegen" "prost" ]; + } + ]; + features = { + "base64" = [ "dep:base64" ]; + "default" = [ "full" ]; + "full" = [ "gen-tonic" "trace" "logs" "metrics" "zpages" "with-serde" "internal-logs" ]; + "gen-tonic" = [ "gen-tonic-messages" "tonic/transport" ]; + "gen-tonic-messages" = [ "tonic" "prost" ]; + "hex" = [ "dep:hex" ]; + "internal-logs" = [ "tracing" ]; + "logs" = [ "opentelemetry/logs" "opentelemetry_sdk/logs" ]; + "metrics" = [ "opentelemetry/metrics" "opentelemetry_sdk/metrics" ]; + "prost" = [ "dep:prost" ]; + "schemars" = [ "dep:schemars" ]; + "serde" = [ "dep:serde" ]; + "testing" = [ "opentelemetry/testing" ]; + "tonic" = [ "dep:tonic" ]; + "trace" = [ "opentelemetry/trace" "opentelemetry_sdk/trace" ]; + "tracing" = [ "dep:tracing" ]; + "with-schemars" = [ "schemars" ]; + "with-serde" = [ "serde" "hex" "base64" ]; + "zpages" = [ "trace" ]; + }; + resolvedDefaultFeatures = [ "gen-tonic" "gen-tonic-messages" "logs" "metrics" "prost" "tonic" "trace" ]; }; "opentelemetry_sdk" = rec { crateName = "opentelemetry_sdk"; - version = "0.23.0"; + version = "0.28.0"; edition = "2021"; - sha256 = "1zflfbjvp7hrfkny550py6rk0lngfph8dz97wv9842m9x9c2scdf"; + sha256 = "0w4mycm070f4knvi1x5v199apd1fvi0712qiyv0pz70889havpw4"; dependencies = [ { name = "async-trait"; @@ -6738,30 +7840,18 @@ rec { { name = "futures-util"; packageId = "futures-util"; - usesDefaultFeatures = false; - features = [ "std" "sink" "async-await-macro" ]; - } - { - name = "glob"; - packageId = "glob"; - optional = true; - } - { - name = "lazy_static"; - packageId = "lazy_static"; + usesDefaultFeatures = false; + features = [ "std" "sink" "async-await-macro" ]; } { - name = "once_cell"; - packageId = "once_cell"; + name = "glob"; + packageId = "glob"; + optional = true; } { name = "opentelemetry"; packageId = "opentelemetry"; } - { - name = "ordered-float"; - packageId = "ordered-float 4.6.0"; - } { name = "percent-encoding"; packageId = "percent-encoding"; @@ -6774,9 +7864,14 @@ rec { usesDefaultFeatures = false; features = [ "std" "std_rng" "small_rng" ]; } + { + name = "serde_json"; + packageId = "serde_json"; + optional = true; + } { name = "thiserror"; - packageId = "thiserror 1.0.69"; + packageId = "thiserror 2.0.12"; usesDefaultFeatures = false; } { @@ -6791,34 +7886,47 @@ rec { packageId = "tokio-stream"; optional = true; } + { + name = "tracing"; + packageId = "tracing"; + optional = true; + usesDefaultFeatures = false; + } ]; features = { "async-std" = [ "dep:async-std" ]; "async-trait" = [ "dep:async-trait" ]; - "default" = [ "trace" ]; + "default" = [ "trace" "metrics" "logs" "internal-logs" ]; + "experimental_logs_batch_log_processor_with_async_runtime" = [ "logs" ]; + "experimental_metrics_disable_name_validation" = [ "metrics" ]; + "experimental_metrics_periodicreader_with_async_runtime" = [ "metrics" ]; + "experimental_trace_batch_span_processor_with_async_runtime" = [ "trace" ]; "glob" = [ "dep:glob" ]; "http" = [ "dep:http" ]; + "internal-logs" = [ "tracing" ]; "jaeger_remote_sampler" = [ "trace" "opentelemetry-http" "http" "serde" "serde_json" "url" ]; - "logs" = [ "opentelemetry/logs" "async-trait" "serde_json" ]; - "logs_level_enabled" = [ "logs" "opentelemetry/logs_level_enabled" ]; + "logs" = [ "opentelemetry/logs" "serde_json" ]; "metrics" = [ "opentelemetry/metrics" "glob" "async-trait" ]; "opentelemetry-http" = [ "dep:opentelemetry-http" ]; "percent-encoding" = [ "dep:percent-encoding" ]; "rand" = [ "dep:rand" ]; - "rt-async-std" = [ "async-std" ]; - "rt-tokio" = [ "tokio" "tokio-stream" ]; - "rt-tokio-current-thread" = [ "tokio" "tokio-stream" ]; + "rt-async-std" = [ "async-std" "experimental_async_runtime" ]; + "rt-tokio" = [ "tokio" "tokio-stream" "experimental_async_runtime" ]; + "rt-tokio-current-thread" = [ "tokio" "tokio-stream" "experimental_async_runtime" ]; "serde" = [ "dep:serde" ]; "serde_json" = [ "dep:serde_json" ]; + "spec_unstable_logs_enabled" = [ "logs" "opentelemetry/spec_unstable_logs_enabled" ]; + "spec_unstable_metrics_views" = [ "metrics" ]; "testing" = [ "opentelemetry/testing" "trace" "metrics" "logs" "rt-async-std" "rt-tokio" "rt-tokio-current-thread" "tokio/macros" "tokio/rt-multi-thread" ]; "tokio" = [ "dep:tokio" ]; "tokio-stream" = [ "dep:tokio-stream" ]; - "trace" = [ "opentelemetry/trace" "rand" "async-trait" "percent-encoding" ]; + "trace" = [ "opentelemetry/trace" "rand" "percent-encoding" ]; + "tracing" = [ "dep:tracing" ]; "url" = [ "dep:url" ]; }; - resolvedDefaultFeatures = [ "async-trait" "default" "glob" "metrics" "percent-encoding" "rand" "rt-tokio" "tokio" "tokio-stream" "trace" ]; + resolvedDefaultFeatures = [ "async-trait" "default" "experimental_async_runtime" "glob" "internal-logs" "logs" "metrics" "percent-encoding" "rand" "rt-tokio" "serde_json" "spec_unstable_logs_enabled" "tokio" "tokio-stream" "trace" "tracing" ]; }; - "ordered-float 2.10.1" = rec { + "ordered-float" = rec { crateName = "ordered-float"; version = "2.10.1"; edition = "2018"; @@ -6848,46 +7956,6 @@ rec { }; resolvedDefaultFeatures = [ "default" "std" ]; }; - "ordered-float 4.6.0" = rec { - crateName = "ordered-float"; - version = "4.6.0"; - edition = "2021"; - sha256 = "0ldrcgilsiijd141vw51fbkziqmh5fpllil3ydhirjm67wdixdvv"; - libName = "ordered_float"; - authors = [ - "Jonathan Reem " - "Matt Brubeck " - ]; - dependencies = [ - { - name = "num-traits"; - packageId = "num-traits"; - usesDefaultFeatures = false; - } - ]; - features = { - "arbitrary" = [ "dep:arbitrary" ]; - "borsh" = [ "dep:borsh" ]; - "bytemuck" = [ "dep:bytemuck" ]; - "default" = [ "std" ]; - "derive-visitor" = [ "dep:derive-visitor" ]; - "libm" = [ "num-traits/libm" ]; - "num-cmp" = [ "dep:num-cmp" ]; - "proptest" = [ "dep:proptest" ]; - "rand" = [ "dep:rand" ]; - "randtest" = [ "rand/std" "rand/std_rng" ]; - "rkyv" = [ "rkyv_32" ]; - "rkyv_16" = [ "dep:rkyv" "rkyv?/size_16" ]; - "rkyv_32" = [ "dep:rkyv" "rkyv?/size_32" ]; - "rkyv_64" = [ "dep:rkyv" "rkyv?/size_64" ]; - "rkyv_ck" = [ "rkyv?/validation" ]; - "schemars" = [ "dep:schemars" ]; - "serde" = [ "dep:serde" "rand?/serde1" ]; - "speedy" = [ "dep:speedy" ]; - "std" = [ "num-traits/std" ]; - }; - resolvedDefaultFeatures = [ "default" "std" ]; - }; "overload" = rec { crateName = "overload"; version = "0.1.1"; @@ -7386,6 +8454,74 @@ rec { } ]; + }; + "prost" = rec { + crateName = "prost"; + version = "0.13.5"; + edition = "2021"; + sha256 = "1r8yi6zxxwv9gq5ia9p55nspgwmchs94sqpp64x33v5k3njgm5i7"; + authors = [ + "Dan Burkert " + "Lucio Franco " + "Casper Meijn " + "Tokio Contributors " + ]; + dependencies = [ + { + name = "bytes"; + packageId = "bytes"; + usesDefaultFeatures = false; + } + { + name = "prost-derive"; + packageId = "prost-derive"; + optional = true; + } + ]; + features = { + "default" = [ "derive" "std" ]; + "derive" = [ "dep:prost-derive" ]; + "prost-derive" = [ "derive" ]; + }; + resolvedDefaultFeatures = [ "default" "derive" "std" ]; + }; + "prost-derive" = rec { + crateName = "prost-derive"; + version = "0.13.5"; + edition = "2021"; + sha256 = "0kgc9gbzsa998xixblfi3kfydka64zqf6rmpm53b761cjxbxfmla"; + procMacro = true; + libName = "prost_derive"; + authors = [ + "Dan Burkert " + "Lucio Franco " + "Casper Meijn " + "Tokio Contributors " + ]; + dependencies = [ + { + name = "anyhow"; + packageId = "anyhow"; + } + { + name = "itertools"; + packageId = "itertools 0.13.0"; + } + { + name = "proc-macro2"; + packageId = "proc-macro2"; + } + { + name = "quote"; + packageId = "quote"; + } + { + name = "syn"; + packageId = "syn 2.0.99"; + features = [ "extra-traits" ]; + } + ]; + }; "quote" = rec { crateName = "quote"; @@ -7727,6 +8863,12 @@ rec { optional = true; target = { target, features }: (!("wasm32" == target."arch" or null)); } + { + name = "futures-channel"; + packageId = "futures-channel"; + optional = true; + target = { target, features }: (!("wasm32" == target."arch" or null)); + } { name = "futures-core"; packageId = "futures-core"; @@ -7875,7 +9017,7 @@ rec { } { name = "tower"; - packageId = "tower"; + packageId = "tower 0.5.2"; usesDefaultFeatures = false; target = { target, features }: (!("wasm32" == target."arch" or null)); features = [ "timeout" "util" ]; @@ -7946,7 +9088,7 @@ rec { } { name = "tower"; - packageId = "tower"; + packageId = "tower 0.5.2"; usesDefaultFeatures = false; features = [ "limit" ]; } @@ -7991,7 +9133,7 @@ rec { "stream" = [ "tokio/fs" "dep:tokio-util" "dep:wasm-streams" ]; "zstd" = [ "dep:async-compression" "async-compression?/zstd" "dep:tokio-util" ]; }; - resolvedDefaultFeatures = [ "__tls" "charset" "default" "default-tls" "h2" "http2" "json" "macos-system-configuration" ]; + resolvedDefaultFeatures = [ "__tls" "blocking" "charset" "default" "default-tls" "h2" "http2" "json" "macos-system-configuration" ]; }; "ring" = rec { crateName = "ring"; @@ -8778,7 +9920,7 @@ rec { dependencies = [ { name = "ordered-float"; - packageId = "ordered-float 2.10.1"; + packageId = "ordered-float"; } { name = "serde"; @@ -8955,7 +10097,7 @@ rec { dependencies = [ { name = "indexmap"; - packageId = "indexmap"; + packageId = "indexmap 2.7.1"; } { name = "itoa"; @@ -9331,7 +10473,7 @@ rec { dependencies = [ { name = "axum"; - packageId = "axum"; + packageId = "axum 0.8.1"; } { name = "clap"; @@ -9361,6 +10503,10 @@ rec { name = "stackable-operator"; packageId = "stackable-operator"; } + { + name = "stackable-telemetry"; + packageId = "stackable-telemetry"; + } { name = "tar"; packageId = "tar"; @@ -9447,6 +10593,10 @@ rec { name = "stackable-operator"; packageId = "stackable-operator"; } + { + name = "stackable-telemetry"; + packageId = "stackable-telemetry"; + } { name = "stackable-versioned"; packageId = "stackable-versioned"; @@ -9505,7 +10655,7 @@ rec { dependencies = [ { name = "axum"; - packageId = "axum"; + packageId = "axum 0.8.1"; } { name = "base64"; @@ -9579,6 +10729,10 @@ rec { name = "stackable-operator"; packageId = "stackable-operator"; } + { + name = "stackable-telemetry"; + packageId = "stackable-telemetry"; + } { name = "tokio"; packageId = "tokio"; @@ -9601,13 +10755,13 @@ rec { }; "stackable-operator" = rec { crateName = "stackable-operator"; - version = "0.87.0"; - edition = "2021"; + version = "0.89.1"; + edition = "2024"; workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "53ccc1e9eca2a5b35a8618593c548e8687fb150d"; - sha256 = "0asgwj93drwvqsgd5c563qawjc3avb42nav0i5dgs4zv8bldx6x0"; + rev = "cd73728af410c52972b9a9a3ba1302bcdb574d04"; + sha256 = "1hrxrybc6197ibx0m2wfxlg5pdg4hanf6xvslzrhsp77a04pb0y9"; }; libName = "stackable_operator"; authors = [ @@ -9652,11 +10806,11 @@ rec { } { name = "indexmap"; - packageId = "indexmap"; + packageId = "indexmap 2.7.1"; } { name = "json-patch"; - packageId = "json-patch"; + packageId = "json-patch 4.0.0"; } { name = "k8s-openapi"; @@ -9666,19 +10820,9 @@ rec { } { name = "kube"; - packageId = "kube"; + packageId = "kube 0.99.0"; usesDefaultFeatures = false; - features = [ "client" "jsonpatch" "runtime" "derive" "rustls-tls" ]; - } - { - name = "opentelemetry-jaeger"; - packageId = "opentelemetry-jaeger"; - features = [ "rt-tokio" ]; - } - { - name = "opentelemetry_sdk"; - packageId = "opentelemetry_sdk"; - features = [ "rt-tokio" ]; + features = [ "client" "jsonpatch" "runtime" "derive" "rustls-tls" "ring" ]; } { name = "product-config"; @@ -9740,10 +10884,6 @@ rec { name = "tracing-appender"; packageId = "tracing-appender"; } - { - name = "tracing-opentelemetry"; - packageId = "tracing-opentelemetry"; - } { name = "tracing-subscriber"; packageId = "tracing-subscriber"; @@ -9762,12 +10902,12 @@ rec { "stackable-operator-derive" = rec { crateName = "stackable-operator-derive"; version = "0.3.1"; - edition = "2021"; + edition = "2024"; workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "53ccc1e9eca2a5b35a8618593c548e8687fb150d"; - sha256 = "0asgwj93drwvqsgd5c563qawjc3avb42nav0i5dgs4zv8bldx6x0"; + rev = "cd73728af410c52972b9a9a3ba1302bcdb574d04"; + sha256 = "1hrxrybc6197ibx0m2wfxlg5pdg4hanf6xvslzrhsp77a04pb0y9"; }; procMacro = true; libName = "stackable_operator_derive"; @@ -9797,12 +10937,12 @@ rec { "stackable-shared" = rec { crateName = "stackable-shared"; version = "0.0.1"; - edition = "2021"; + edition = "2024"; workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "53ccc1e9eca2a5b35a8618593c548e8687fb150d"; - sha256 = "0asgwj93drwvqsgd5c563qawjc3avb42nav0i5dgs4zv8bldx6x0"; + rev = "cd73728af410c52972b9a9a3ba1302bcdb574d04"; + sha256 = "1hrxrybc6197ibx0m2wfxlg5pdg4hanf6xvslzrhsp77a04pb0y9"; }; libName = "stackable_shared"; authors = [ @@ -9811,9 +10951,9 @@ rec { dependencies = [ { name = "kube"; - packageId = "kube"; + packageId = "kube 0.99.0"; usesDefaultFeatures = false; - features = [ "client" "jsonpatch" "runtime" "derive" "rustls-tls" ]; + features = [ "client" "jsonpatch" "runtime" "derive" "rustls-tls" "ring" ]; } { name = "semver"; @@ -9834,6 +10974,97 @@ rec { } ]; + }; + "stackable-telemetry" = rec { + crateName = "stackable-telemetry"; + version = "0.4.0"; + edition = "2024"; + workspace_member = null; + src = pkgs.fetchgit { + url = "https://github.com/stackabletech/operator-rs.git"; + rev = "52bdee5749e217005025d07f33c7020931c31d91"; + sha256 = "0hcm64fb2ngyalq8rci5lrr881prg023pq9cd1sfr79iynbr6a26"; + }; + libName = "stackable_telemetry"; + authors = [ + "Stackable GmbH " + ]; + dependencies = [ + { + name = "axum"; + packageId = "axum 0.8.1"; + } + { + name = "futures-util"; + packageId = "futures-util"; + } + { + name = "opentelemetry"; + packageId = "opentelemetry"; + features = [ "logs" ]; + } + { + name = "opentelemetry-appender-tracing"; + packageId = "opentelemetry-appender-tracing"; + } + { + name = "opentelemetry-otlp"; + packageId = "opentelemetry-otlp"; + features = [ "grpc-tonic" "gzip-tonic" "logs" ]; + } + { + name = "opentelemetry_sdk"; + packageId = "opentelemetry_sdk"; + features = [ "rt-tokio" "logs" "rt-tokio" "spec_unstable_logs_enabled" ]; + } + { + name = "pin-project"; + packageId = "pin-project"; + } + { + name = "snafu"; + packageId = "snafu 0.8.5"; + } + { + name = "tokio"; + packageId = "tokio"; + features = [ "macros" "rt-multi-thread" "fs" ]; + } + { + name = "tower"; + packageId = "tower 0.5.2"; + features = [ "util" ]; + } + { + name = "tracing"; + packageId = "tracing"; + } + { + name = "tracing-appender"; + packageId = "tracing-appender"; + } + { + name = "tracing-opentelemetry"; + packageId = "tracing-opentelemetry"; + } + { + name = "tracing-subscriber"; + packageId = "tracing-subscriber"; + features = [ "env-filter" "json" "env-filter" ]; + } + ]; + devDependencies = [ + { + name = "tokio"; + packageId = "tokio"; + features = [ "macros" "rt-multi-thread" "fs" ]; + } + { + name = "tracing-opentelemetry"; + packageId = "tracing-opentelemetry"; + } + ]; + }; "stackable-versioned" = rec { crateName = "stackable-versioned"; @@ -9903,7 +11134,7 @@ rec { } { name = "kube"; - packageId = "kube"; + packageId = "kube 0.98.0"; optional = true; usesDefaultFeatures = false; features = [ "client" "jsonpatch" "runtime" "derive" "rustls-tls" ]; @@ -10362,85 +11593,27 @@ rec { } ]; - }; - "thread_local" = rec { - crateName = "thread_local"; - version = "1.1.8"; - edition = "2021"; - sha256 = "173i5lyjh011gsimk21np9jn8al18rxsrkjli20a7b8ks2xgk7lb"; - authors = [ - "Amanieu d'Antras " - ]; - dependencies = [ - { - name = "cfg-if"; - packageId = "cfg-if"; - } - { - name = "once_cell"; - packageId = "once_cell"; - } - ]; - features = { - }; - }; - "threadpool" = rec { - crateName = "threadpool"; - version = "1.8.1"; - edition = "2015"; - sha256 = "1amgfyzvynbm8pacniivzq9r0fh3chhs7kijic81j76l6c5ycl6h"; - authors = [ - "The Rust Project Developers" - "Corey Farwell " - "Stefan Schindler " - ]; - dependencies = [ - { - name = "num_cpus"; - packageId = "num_cpus"; - } - ]; - - }; - "thrift" = rec { - crateName = "thrift"; - version = "0.17.0"; - edition = "2018"; - sha256 = "02cydaqqlp25ri19y3ixi77a7nd85fwvbfn4fp0qpakzzj2vqm3y"; - authors = [ - "Apache Thrift Developers " - ]; - dependencies = [ - { - name = "byteorder"; - packageId = "byteorder"; - } - { - name = "integer-encoding"; - packageId = "integer-encoding"; - } - { - name = "log"; - packageId = "log"; - optional = true; - } + }; + "thread_local" = rec { + crateName = "thread_local"; + version = "1.1.8"; + edition = "2021"; + sha256 = "173i5lyjh011gsimk21np9jn8al18rxsrkjli20a7b8ks2xgk7lb"; + authors = [ + "Amanieu d'Antras " + ]; + dependencies = [ { - name = "ordered-float"; - packageId = "ordered-float 2.10.1"; + name = "cfg-if"; + packageId = "cfg-if"; } { - name = "threadpool"; - packageId = "threadpool"; - optional = true; + name = "once_cell"; + packageId = "once_cell"; } ]; features = { - "default" = [ "server" ]; - "log" = [ "dep:log" ]; - "server" = [ "threadpool" "log" ]; - "threadpool" = [ "dep:threadpool" ]; }; - resolvedDefaultFeatures = [ "default" "log" "server" "threadpool" ]; }; "time" = rec { crateName = "time"; @@ -10827,7 +12000,7 @@ rec { "time" = [ "tokio/time" ]; "tokio-util" = [ "dep:tokio-util" ]; }; - resolvedDefaultFeatures = [ "default" "time" ]; + resolvedDefaultFeatures = [ "default" "net" "time" ]; }; "tokio-util" = rec { crateName = "tokio-util"; @@ -10889,7 +12062,280 @@ rec { }; resolvedDefaultFeatures = [ "codec" "default" "io" "slab" "time" ]; }; - "tower" = rec { + "tonic" = rec { + crateName = "tonic"; + version = "0.12.3"; + edition = "2021"; + sha256 = "0ljd1lfjpw0vrm5wbv15x6nq2i38llsanls5rkzmdn2n0wrmnz47"; + authors = [ + "Lucio Franco " + ]; + dependencies = [ + { + name = "async-stream"; + packageId = "async-stream"; + optional = true; + } + { + name = "async-trait"; + packageId = "async-trait"; + optional = true; + } + { + name = "axum"; + packageId = "axum 0.7.9"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "base64"; + packageId = "base64 0.22.1"; + } + { + name = "bytes"; + packageId = "bytes"; + } + { + name = "flate2"; + packageId = "flate2"; + optional = true; + } + { + name = "h2"; + packageId = "h2"; + optional = true; + } + { + name = "http"; + packageId = "http"; + } + { + name = "http-body"; + packageId = "http-body"; + } + { + name = "http-body-util"; + packageId = "http-body-util"; + } + { + name = "hyper"; + packageId = "hyper"; + optional = true; + features = [ "http1" "http2" ]; + } + { + name = "hyper-timeout"; + packageId = "hyper-timeout"; + optional = true; + } + { + name = "hyper-util"; + packageId = "hyper-util"; + optional = true; + features = [ "tokio" ]; + } + { + name = "percent-encoding"; + packageId = "percent-encoding"; + } + { + name = "pin-project"; + packageId = "pin-project"; + } + { + name = "prost"; + packageId = "prost"; + optional = true; + usesDefaultFeatures = false; + features = [ "std" ]; + } + { + name = "socket2"; + packageId = "socket2"; + optional = true; + features = [ "all" ]; + } + { + name = "tokio"; + packageId = "tokio"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "tokio-stream"; + packageId = "tokio-stream"; + usesDefaultFeatures = false; + } + { + name = "tower"; + packageId = "tower 0.4.13"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "tower-layer"; + packageId = "tower-layer"; + } + { + name = "tower-service"; + packageId = "tower-service"; + } + { + name = "tracing"; + packageId = "tracing"; + } + ]; + devDependencies = [ + { + name = "tokio"; + packageId = "tokio"; + features = [ "rt" "macros" ]; + } + { + name = "tower"; + packageId = "tower 0.4.13"; + features = [ "full" ]; + } + ]; + features = { + "channel" = [ "dep:hyper" "hyper?/client" "dep:hyper-util" "hyper-util?/client-legacy" "dep:tower" "tower?/balance" "tower?/buffer" "tower?/discover" "tower?/limit" "tower?/util" "dep:tokio" "tokio?/time" "dep:hyper-timeout" ]; + "codegen" = [ "dep:async-trait" ]; + "default" = [ "transport" "codegen" "prost" ]; + "gzip" = [ "dep:flate2" ]; + "prost" = [ "dep:prost" ]; + "router" = [ "dep:axum" "dep:tower" "tower?/util" ]; + "server" = [ "router" "dep:async-stream" "dep:h2" "dep:hyper" "hyper?/server" "dep:hyper-util" "hyper-util?/service" "hyper-util?/server-auto" "dep:socket2" "dep:tokio" "tokio?/macros" "tokio?/net" "tokio?/time" "tokio-stream/net" "dep:tower" "tower?/util" "tower?/limit" ]; + "tls" = [ "dep:rustls-pemfile" "dep:tokio-rustls" "dep:tokio" "tokio?/rt" "tokio?/macros" ]; + "tls-native-roots" = [ "tls" "channel" "dep:rustls-native-certs" ]; + "tls-roots" = [ "tls-native-roots" ]; + "tls-webpki-roots" = [ "tls" "channel" "dep:webpki-roots" ]; + "transport" = [ "server" "channel" ]; + "zstd" = [ "dep:zstd" ]; + }; + resolvedDefaultFeatures = [ "channel" "codegen" "gzip" "prost" "router" "server" "transport" ]; + }; + "tower 0.4.13" = rec { + crateName = "tower"; + version = "0.4.13"; + edition = "2018"; + sha256 = "073wncyqav4sak1p755hf6vl66njgfc1z1g1di9rxx3cvvh9pymq"; + authors = [ + "Tower Maintainers " + ]; + dependencies = [ + { + name = "futures-core"; + packageId = "futures-core"; + optional = true; + } + { + name = "futures-util"; + packageId = "futures-util"; + optional = true; + usesDefaultFeatures = false; + features = [ "alloc" ]; + } + { + name = "indexmap"; + packageId = "indexmap 1.9.3"; + optional = true; + } + { + name = "pin-project"; + packageId = "pin-project"; + optional = true; + } + { + name = "pin-project-lite"; + packageId = "pin-project-lite"; + optional = true; + } + { + name = "rand"; + packageId = "rand"; + optional = true; + features = [ "small_rng" ]; + } + { + name = "slab"; + packageId = "slab"; + optional = true; + } + { + name = "tokio"; + packageId = "tokio"; + optional = true; + features = [ "sync" ]; + } + { + name = "tokio-util"; + packageId = "tokio-util"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "tower-layer"; + packageId = "tower-layer"; + } + { + name = "tower-service"; + packageId = "tower-service"; + } + { + name = "tracing"; + packageId = "tracing"; + optional = true; + usesDefaultFeatures = false; + features = [ "std" ]; + } + ]; + devDependencies = [ + { + name = "pin-project-lite"; + packageId = "pin-project-lite"; + } + { + name = "tokio"; + packageId = "tokio"; + features = [ "macros" "sync" "test-util" "rt-multi-thread" ]; + } + ]; + features = { + "__common" = [ "futures-core" "pin-project-lite" ]; + "balance" = [ "discover" "load" "ready-cache" "make" "rand" "slab" ]; + "buffer" = [ "__common" "tokio/sync" "tokio/rt" "tokio-util" "tracing" ]; + "default" = [ "log" ]; + "discover" = [ "__common" ]; + "filter" = [ "__common" "futures-util" ]; + "full" = [ "balance" "buffer" "discover" "filter" "hedge" "limit" "load" "load-shed" "make" "ready-cache" "reconnect" "retry" "spawn-ready" "steer" "timeout" "util" ]; + "futures-core" = [ "dep:futures-core" ]; + "futures-util" = [ "dep:futures-util" ]; + "hdrhistogram" = [ "dep:hdrhistogram" ]; + "hedge" = [ "util" "filter" "futures-util" "hdrhistogram" "tokio/time" "tracing" ]; + "indexmap" = [ "dep:indexmap" ]; + "limit" = [ "__common" "tokio/time" "tokio/sync" "tokio-util" "tracing" ]; + "load" = [ "__common" "tokio/time" "tracing" ]; + "load-shed" = [ "__common" ]; + "log" = [ "tracing/log" ]; + "make" = [ "futures-util" "pin-project-lite" "tokio/io-std" ]; + "pin-project" = [ "dep:pin-project" ]; + "pin-project-lite" = [ "dep:pin-project-lite" ]; + "rand" = [ "dep:rand" ]; + "ready-cache" = [ "futures-core" "futures-util" "indexmap" "tokio/sync" "tracing" "pin-project-lite" ]; + "reconnect" = [ "make" "tokio/io-std" "tracing" ]; + "retry" = [ "__common" "tokio/time" ]; + "slab" = [ "dep:slab" ]; + "spawn-ready" = [ "__common" "futures-util" "tokio/sync" "tokio/rt" "util" "tracing" ]; + "timeout" = [ "pin-project-lite" "tokio/time" ]; + "tokio" = [ "dep:tokio" ]; + "tokio-stream" = [ "dep:tokio-stream" ]; + "tokio-util" = [ "dep:tokio-util" ]; + "tracing" = [ "dep:tracing" ]; + "util" = [ "__common" "futures-util" "pin-project" ]; + }; + resolvedDefaultFeatures = [ "__common" "balance" "buffer" "discover" "futures-core" "futures-util" "indexmap" "limit" "load" "make" "pin-project" "pin-project-lite" "rand" "ready-cache" "slab" "tokio" "tokio-util" "tracing" "util" ]; + }; + "tower 0.5.2" = rec { crateName = "tower"; version = "0.5.2"; edition = "2018"; @@ -11306,9 +12752,9 @@ rec { }; "tracing-opentelemetry" = rec { crateName = "tracing-opentelemetry"; - version = "0.24.0"; + version = "0.29.0"; edition = "2021"; - sha256 = "1r74gddb72ax88ypr9vwmxmjbgcn201cgv6axh5b92pj5d4h727n"; + sha256 = "0dnca0b7bxbp6gd64skkvzy3p58yjh35kvnxpggz7sfwd4jjs7vj"; libName = "tracing_opentelemetry"; dependencies = [ { @@ -11394,10 +12840,11 @@ rec { "async-trait" = [ "dep:async-trait" ]; "default" = [ "tracing-log" "metrics" ]; "futures-util" = [ "dep:futures-util" ]; + "lazy_static" = [ "dep:lazy_static" ]; "metrics" = [ "opentelemetry/metrics" "opentelemetry_sdk/metrics" "smallvec" ]; - "metrics_gauge_unstable" = [ "opentelemetry/otel_unstable" ]; "smallvec" = [ "dep:smallvec" ]; "thiserror" = [ "dep:thiserror" ]; + "thiserror-1" = [ "dep:thiserror-1" ]; "tracing-log" = [ "dep:tracing-log" ]; }; resolvedDefaultFeatures = [ "default" "metrics" "smallvec" "tracing-log" ]; diff --git a/Cargo.toml b/Cargo.toml index 807dbb6f..16060bd2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,6 +10,11 @@ edition = "2021" repository = "https://github.com/stackabletech/opa-operator" [workspace.dependencies] +product-config = { git = "https://github.com/stackabletech/product-config.git", tag = "0.7.0" } +stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", tag = "stackable-operator-0.89.1" } +stackable-telemetry = { git = "https://github.com/stackabletech/operator-rs.git", tag = "stackable-telemetry-0.4.0" } +stackable-versioned = { git = "https://github.com/stackabletech/operator-rs.git", features = ["k8s"], tag = "stackable-versioned-0.6.0" } + anyhow = "1.0" axum = "0.8" base64 = "0.22" @@ -26,15 +31,12 @@ ldap3 = { version = "0.11", features = ["gssapi", "tls"] } moka = { version = "0.12", features = ["future"] } native-tls = "0.2.12" pin-project = "1.1" -product-config = { git = "https://github.com/stackabletech/product-config.git", tag = "0.7.0" } reqwest = { version = "0.12", features = ["json"] } rustls-pemfile = "2.1" semver = "1.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" snafu = "0.8" -stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", tag = "stackable-operator-0.87.0" } -stackable-versioned = { git = "https://github.com/stackabletech/operator-rs.git", features = ["k8s"], tag = "stackable-versioned-0.6.0" } strum = { version = "0.27", features = ["derive"] } tar = "0.4" tokio = { version = "1.40", features = ["full"] } diff --git a/crate-hashes.json b/crate-hashes.json index 04e0d15a..6161c677 100644 --- a/crate-hashes.json +++ b/crate-hashes.json @@ -1,7 +1,8 @@ { - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.87.0#stackable-operator-derive@0.3.1": "0asgwj93drwvqsgd5c563qawjc3avb42nav0i5dgs4zv8bldx6x0", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.87.0#stackable-operator@0.87.0": "0asgwj93drwvqsgd5c563qawjc3avb42nav0i5dgs4zv8bldx6x0", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.87.0#stackable-shared@0.0.1": "0asgwj93drwvqsgd5c563qawjc3avb42nav0i5dgs4zv8bldx6x0", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.89.1#stackable-operator-derive@0.3.1": "1hrxrybc6197ibx0m2wfxlg5pdg4hanf6xvslzrhsp77a04pb0y9", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.89.1#stackable-operator@0.89.1": "1hrxrybc6197ibx0m2wfxlg5pdg4hanf6xvslzrhsp77a04pb0y9", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.89.1#stackable-shared@0.0.1": "1hrxrybc6197ibx0m2wfxlg5pdg4hanf6xvslzrhsp77a04pb0y9", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-telemetry-0.4.0#stackable-telemetry@0.4.0": "0hcm64fb2ngyalq8rci5lrr881prg023pq9cd1sfr79iynbr6a26", "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-versioned-0.6.0#k8s-version@0.1.2": "0asgwj93drwvqsgd5c563qawjc3avb42nav0i5dgs4zv8bldx6x0", "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-versioned-0.6.0#stackable-versioned-macros@0.6.0": "0asgwj93drwvqsgd5c563qawjc3avb42nav0i5dgs4zv8bldx6x0", "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-versioned-0.6.0#stackable-versioned@0.6.0": "0asgwj93drwvqsgd5c563qawjc3avb42nav0i5dgs4zv8bldx6x0", diff --git a/rust/bundle-builder/Cargo.toml b/rust/bundle-builder/Cargo.toml index dbb99ced..486b68d5 100644 --- a/rust/bundle-builder/Cargo.toml +++ b/rust/bundle-builder/Cargo.toml @@ -12,6 +12,8 @@ publish = false [dependencies] stackable-opa-regorule-library = { path = "../regorule-library" } +stackable-operator.workspace = true +stackable-telemetry.workspace = true axum.workspace = true clap.workspace = true @@ -19,7 +21,6 @@ flate2.workspace = true futures.workspace = true hyper.workspace = true snafu.workspace = true -stackable-operator.workspace = true tar.workspace = true tokio.workspace = true tracing.workspace = true diff --git a/rust/bundle-builder/src/main.rs b/rust/bundle-builder/src/main.rs index 2f2c0bb9..7f7ea1a2 100644 --- a/rust/bundle-builder/src/main.rs +++ b/rust/bundle-builder/src/main.rs @@ -1,6 +1,7 @@ use std::{ collections::{BTreeMap, BTreeSet}, num::TryFromIntError, + ops::Deref as _, sync::{Arc, Mutex}, }; @@ -14,6 +15,7 @@ use futures::{ }; use snafu::{ResultExt, Snafu}; use stackable_operator::{ + cli::RollingPeriod, k8s_openapi::api::core::v1::ConfigMap, kube::{ api::ObjectMeta, @@ -23,11 +25,16 @@ use stackable_operator::{ }, }, }; +use stackable_telemetry::{Tracing, tracing::settings::Settings}; use tokio::net::TcpListener; +use tracing::level_filters::LevelFilter; const OPERATOR_NAME: &str = "opa.stackable.tech"; pub const APP_NAME: &str = "opa-bundle-builder"; +// TODO (@NickLarsenNZ): Change the variable to `CONSOLE_LOG` +pub const ENV_VAR_CONSOLE_LOG: &str = "OPA_BUNDLE_BUILDER_LOG"; + #[derive(clap::Parser)] pub struct Args { #[clap(flatten)] @@ -60,17 +67,62 @@ enum StartupError { #[snafu(display("failed to run server"))] RunServer { source: std::io::Error }, + + #[snafu(display("failed to initialize stackable-telemetry"))] + TracingInit { + source: stackable_telemetry::tracing::Error, + }, } #[tokio::main] async fn main() -> Result<(), StartupError> { let args = Args::parse(); - stackable_operator::logging::initialize_logging( - "OPA_BUNDLE_BUILDER_LOG", - APP_NAME, - args.common.tracing_target, - ); + let _tracing_guard = Tracing::builder() + .service_name("opa-bundle-builder") + .with_console_output(( + ENV_VAR_CONSOLE_LOG, + LevelFilter::INFO, + !args.common.telemetry_arguments.no_console_output, + )) + // NOTE (@NickLarsenNZ): Before stackable-telemetry was used, the log directory was + // set via an env: `OPA_BUNDLE_BUILDER_LOG_DIRECTORY`. + // See: https://github.com/stackabletech/operator-rs/blob/f035997fca85a54238c8de895389cc50b4d421e2/crates/stackable-operator/src/logging/mod.rs#L40 + // Now it will be `ROLLING_LOGS` (or via `--rolling-logs `). + .with_file_output( + args.common + .telemetry_arguments + .rolling_logs + .map(|log_directory| { + let rotation_period = args + .common + .telemetry_arguments + .rolling_logs_period + .unwrap_or(RollingPeriod::Never) + .deref() + .clone(); + + Settings::builder() + .with_environment_variable(ENV_VAR_CONSOLE_LOG) + .with_default_level(LevelFilter::INFO) + .file_log_settings_builder(log_directory, "tracing-rs.log") + .with_rotation_period(rotation_period) + .build() + }), + ) + .with_otlp_log_exporter(( + "OTLP_LOG", + LevelFilter::DEBUG, + args.common.telemetry_arguments.otlp_logs, + )) + .with_otlp_trace_exporter(( + "OTLP_TRACE", + LevelFilter::DEBUG, + args.common.telemetry_arguments.otlp_traces, + )) + .build() + .init() + .context(TracingInitSnafu)?; let client = stackable_operator::client::initialize_operator(None, &args.common.cluster_info_opts) diff --git a/rust/operator-binary/Cargo.toml b/rust/operator-binary/Cargo.toml index f4bfaabd..2a53aba6 100644 --- a/rust/operator-binary/Cargo.toml +++ b/rust/operator-binary/Cargo.toml @@ -9,6 +9,11 @@ repository.workspace = true publish = false [dependencies] +product-config.workspace = true +stackable-operator.workspace = true +stackable-telemetry.workspace = true +stackable-versioned.workspace = true + anyhow.workspace = true clap.workspace = true const_format.workspace = true @@ -16,13 +21,10 @@ fnv.workspace = true futures.workspace = true indoc.workspace = true pin-project.workspace = true -product-config.workspace = true semver.workspace = true serde_json.workspace = true serde.workspace = true snafu.workspace = true -stackable-operator.workspace = true -stackable-versioned.workspace = true strum.workspace = true tokio.workspace = true tracing.workspace = true diff --git a/rust/operator-binary/src/main.rs b/rust/operator-binary/src/main.rs index 3389bbd7..a9a6dd20 100644 --- a/rust/operator-binary/src/main.rs +++ b/rust/operator-binary/src/main.rs @@ -1,12 +1,12 @@ -use std::sync::Arc; +use std::{ops::Deref as _, sync::Arc}; use clap::Parser; use futures::StreamExt; use product_config::ProductConfigManager; -use stackable_opa_operator::crd::{APP_NAME, OPERATOR_NAME, OpaCluster, v1alpha1}; +use stackable_opa_operator::crd::{OPERATOR_NAME, OpaCluster, v1alpha1}; use stackable_operator::{ YamlSchema, - cli::{Command, ProductOperatorRun}, + cli::{Command, ProductOperatorRun, RollingPeriod}, client::{self, Client}, k8s_openapi::api::{ apps::v1::DaemonSet, @@ -25,6 +25,8 @@ use stackable_operator::{ namespace::WatchNamespace, shared::yaml::SerializeOptions, }; +use stackable_telemetry::{Tracing, tracing::settings::Settings}; +use tracing::level_filters::LevelFilter; use crate::controller::OPA_FULL_CONTROLLER_NAME; @@ -37,6 +39,9 @@ pub mod built_info { include!(concat!(env!("OUT_DIR"), "/built.rs")); } +// TODO (@NickLarsenNZ): Change the variable to `CONSOLE_LOG` +pub const ENV_VAR_CONSOLE_LOG: &str = "OPA_OPERATOR_LOG"; + #[derive(Parser)] #[clap(about, author)] struct Opts { @@ -68,15 +73,47 @@ async fn main() -> anyhow::Result<()> { ProductOperatorRun { product_config, watch_namespace, - tracing_target, + telemetry_arguments, cluster_info_opts, }, }) => { - stackable_operator::logging::initialize_logging( - "OPA_OPERATOR_LOG", - APP_NAME, - tracing_target, - ); + let _tracing_guard = Tracing::builder() + .service_name("opa-operator") + .with_console_output(( + ENV_VAR_CONSOLE_LOG, + LevelFilter::INFO, + !telemetry_arguments.no_console_output, + )) + // NOTE (@NickLarsenNZ): Before stackable-telemetry was used, the log directory was + // set via an env: `OPA_OPERATOR_LOG_DIRECTORY`. + // See: https://github.com/stackabletech/operator-rs/blob/f035997fca85a54238c8de895389cc50b4d421e2/crates/stackable-operator/src/logging/mod.rs#L40 + // Now it will be `ROLLING_LOGS` (or via `--rolling-logs `). + .with_file_output(telemetry_arguments.rolling_logs.map(|log_directory| { + let rotation_period = telemetry_arguments + .rolling_logs_period + .unwrap_or(RollingPeriod::Never) + .deref() + .clone(); + + Settings::builder() + .with_environment_variable(ENV_VAR_CONSOLE_LOG) + .with_default_level(LevelFilter::INFO) + .file_log_settings_builder(log_directory, "tracing-rs.log") + .with_rotation_period(rotation_period) + .build() + })) + .with_otlp_log_exporter(( + "OTLP_LOG", + LevelFilter::DEBUG, + telemetry_arguments.otlp_logs, + )) + .with_otlp_trace_exporter(( + "OTLP_TRACE", + LevelFilter::DEBUG, + telemetry_arguments.otlp_traces, + )) + .build() + .init()?; tracing::info!( built_info.pkg_version = built_info::PKG_VERSION, diff --git a/rust/user-info-fetcher/Cargo.toml b/rust/user-info-fetcher/Cargo.toml index faf97d5b..31183b26 100644 --- a/rust/user-info-fetcher/Cargo.toml +++ b/rust/user-info-fetcher/Cargo.toml @@ -10,6 +10,8 @@ publish = false [dependencies] stackable-opa-operator = { path = "../operator-binary" } +stackable-operator.workspace = true +stackable-telemetry.workspace = true axum.workspace = true base64.workspace = true @@ -27,7 +29,6 @@ semver.workspace = true serde.workspace = true serde_json.workspace = true snafu.workspace = true -stackable-operator.workspace = true tokio.workspace = true tracing.workspace = true url.workspace = true diff --git a/rust/user-info-fetcher/src/main.rs b/rust/user-info-fetcher/src/main.rs index b9af0899..b5ec3a23 100644 --- a/rust/user-info-fetcher/src/main.rs +++ b/rust/user-info-fetcher/src/main.rs @@ -1,6 +1,7 @@ use std::{ collections::HashMap, fmt::Display, + ops::Deref as _, path::{Path, PathBuf}, sync::Arc, }; @@ -13,7 +14,10 @@ use reqwest::ClientBuilder; use serde::{Deserialize, Serialize}; use snafu::{ResultExt, Snafu}; use stackable_opa_operator::crd::user_info_fetcher::v1alpha1; +use stackable_operator::cli::RollingPeriod; +use stackable_telemetry::{Tracing, tracing::settings::Settings}; use tokio::net::TcpListener; +use tracing::level_filters::LevelFilter; mod backend; mod http_error; @@ -21,6 +25,9 @@ mod utils; pub const APP_NAME: &str = "opa-user-info-fetcher"; +// TODO (@NickLarsenNZ): Change the variable to `CONSOLE_LOG` +pub const ENV_VAR_CONSOLE_LOG: &str = "OPA_OPERATOR_LOG"; + #[derive(clap::Parser)] pub struct Args { #[clap(long, env)] @@ -70,6 +77,11 @@ enum StartupError { #[snafu(display("failed to configure TLS"))] ConfigureTls { source: utils::tls::Error }, + + #[snafu(display("failed to initialize stackable-telemetry"))] + TracingInit { + source: stackable_telemetry::tracing::Error, + }, } async fn read_config_file(path: &Path) -> Result { @@ -83,11 +95,51 @@ async fn read_config_file(path: &Path) -> Result { async fn main() -> Result<(), StartupError> { let args = Args::parse(); - stackable_operator::logging::initialize_logging( - "OPA_OPERATOR_LOG", - APP_NAME, - args.common.tracing_target, - ); + let _tracing_guard = Tracing::builder() + .service_name("user-info-fetcher") + .with_console_output(( + ENV_VAR_CONSOLE_LOG, + LevelFilter::INFO, + !args.common.telemetry_arguments.no_console_output, + )) + // NOTE (@NickLarsenNZ): Before stackable-telemetry was used, the log directory was + // set via an env: `OPA_OPERATOR_LOG_DIRECTORY`. + // See: https://github.com/stackabletech/operator-rs/blob/f035997fca85a54238c8de895389cc50b4d421e2/crates/stackable-operator/src/logging/mod.rs#L40 + // Now it will be `ROLLING_LOGS` (or via `--rolling-logs `). + .with_file_output( + args.common + .telemetry_arguments + .rolling_logs + .map(|log_directory| { + let rotation_period = args + .common + .telemetry_arguments + .rolling_logs_period + .unwrap_or(RollingPeriod::Never) + .deref() + .clone(); + + Settings::builder() + .with_environment_variable(ENV_VAR_CONSOLE_LOG) + .with_default_level(LevelFilter::INFO) + .file_log_settings_builder(log_directory, "tracing-rs.log") + .with_rotation_period(rotation_period) + .build() + }), + ) + .with_otlp_log_exporter(( + "OTLP_LOG", + LevelFilter::DEBUG, + args.common.telemetry_arguments.otlp_logs, + )) + .with_otlp_trace_exporter(( + "OTLP_TRACE", + LevelFilter::DEBUG, + args.common.telemetry_arguments.otlp_traces, + )) + .build() + .init() + .context(TracingInitSnafu)?; let shutdown_requested = tokio::signal::ctrl_c().map(|_| ()); #[cfg(unix)] From 7cc43a6ba42074f579dc0250b137838636025ef6 Mon Sep 17 00:00:00 2001 From: Nick Larsen Date: Fri, 4 Apr 2025 13:12:07 +0200 Subject: [PATCH 3/8] chore(user-info-fetcher): Emit startup event --- Cargo.lock | 1 + Cargo.nix | 7 +++++++ rust/user-info-fetcher/Cargo.toml | 3 +++ rust/user-info-fetcher/build.rs | 3 +++ rust/user-info-fetcher/src/main.rs | 13 +++++++++++++ 5 files changed, 27 insertions(+) create mode 100644 rust/user-info-fetcher/build.rs diff --git a/Cargo.lock b/Cargo.lock index 5c3396cb..c300933b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3186,6 +3186,7 @@ version = "0.0.0-dev" dependencies = [ "axum 0.8.1", "base64 0.22.1", + "built", "byteorder", "clap", "futures", diff --git a/Cargo.nix b/Cargo.nix index a4384737..9f362fb7 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -10751,6 +10751,13 @@ rec { packageId = "uuid"; } ]; + buildDependencies = [ + { + name = "built"; + packageId = "built"; + features = [ "chrono" "git2" ]; + } + ]; }; "stackable-operator" = rec { diff --git a/rust/user-info-fetcher/Cargo.toml b/rust/user-info-fetcher/Cargo.toml index 31183b26..8a997246 100644 --- a/rust/user-info-fetcher/Cargo.toml +++ b/rust/user-info-fetcher/Cargo.toml @@ -33,3 +33,6 @@ tokio.workspace = true tracing.workspace = true url.workspace = true uuid.workspace = true + +[build-dependencies] +built.workspace = true diff --git a/rust/user-info-fetcher/build.rs b/rust/user-info-fetcher/build.rs new file mode 100644 index 00000000..fa809bfd --- /dev/null +++ b/rust/user-info-fetcher/build.rs @@ -0,0 +1,3 @@ +fn main() { + built::write_built_file().unwrap(); +} diff --git a/rust/user-info-fetcher/src/main.rs b/rust/user-info-fetcher/src/main.rs index b5ec3a23..00773feb 100644 --- a/rust/user-info-fetcher/src/main.rs +++ b/rust/user-info-fetcher/src/main.rs @@ -23,6 +23,10 @@ mod backend; mod http_error; mod utils; +pub mod built_info { + include!(concat!(env!("OUT_DIR"), "/built.rs")); +} + pub const APP_NAME: &str = "opa-user-info-fetcher"; // TODO (@NickLarsenNZ): Change the variable to `CONSOLE_LOG` @@ -141,6 +145,15 @@ async fn main() -> Result<(), StartupError> { .init() .context(TracingInitSnafu)?; + tracing::info!( + built_info.pkg_version = built_info::PKG_VERSION, + built_info.git_version = built_info::GIT_VERSION, + built_info.target = built_info::TARGET, + built_info.built_time_utc = built_info::BUILT_TIME_UTC, + built_info.rustc_version = built_info::RUSTC_VERSION, + "Starting user-info-fetcher", + ); + let shutdown_requested = tokio::signal::ctrl_c().map(|_| ()); #[cfg(unix)] let shutdown_requested = { From c6758172eb94582d76ce7860501e8bbe5788409c Mon Sep 17 00:00:00 2001 From: Nick Larsen Date: Fri, 4 Apr 2025 13:12:16 +0200 Subject: [PATCH 4/8] chore(bundle-builder): Emit startup event --- Cargo.lock | 1 + Cargo.nix | 7 +++++++ rust/bundle-builder/Cargo.toml | 3 +++ rust/bundle-builder/build.rs | 3 +++ rust/bundle-builder/src/main.rs | 13 +++++++++++++ 5 files changed, 27 insertions(+) create mode 100644 rust/bundle-builder/build.rs diff --git a/Cargo.lock b/Cargo.lock index c300933b..397ce312 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3138,6 +3138,7 @@ name = "stackable-opa-bundle-builder" version = "0.0.0-dev" dependencies = [ "axum 0.8.1", + "built", "clap", "flate2", "futures", diff --git a/Cargo.nix b/Cargo.nix index 9f362fb7..8bcafffb 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -10521,6 +10521,13 @@ rec { packageId = "tracing"; } ]; + buildDependencies = [ + { + name = "built"; + packageId = "built"; + features = [ "chrono" "git2" ]; + } + ]; }; "stackable-opa-operator" = rec { diff --git a/rust/bundle-builder/Cargo.toml b/rust/bundle-builder/Cargo.toml index 486b68d5..f2cff003 100644 --- a/rust/bundle-builder/Cargo.toml +++ b/rust/bundle-builder/Cargo.toml @@ -24,3 +24,6 @@ snafu.workspace = true tar.workspace = true tokio.workspace = true tracing.workspace = true + +[build-dependencies] +built.workspace = true diff --git a/rust/bundle-builder/build.rs b/rust/bundle-builder/build.rs new file mode 100644 index 00000000..fa809bfd --- /dev/null +++ b/rust/bundle-builder/build.rs @@ -0,0 +1,3 @@ +fn main() { + built::write_built_file().unwrap(); +} diff --git a/rust/bundle-builder/src/main.rs b/rust/bundle-builder/src/main.rs index 7f7ea1a2..395b1714 100644 --- a/rust/bundle-builder/src/main.rs +++ b/rust/bundle-builder/src/main.rs @@ -29,6 +29,10 @@ use stackable_telemetry::{Tracing, tracing::settings::Settings}; use tokio::net::TcpListener; use tracing::level_filters::LevelFilter; +pub mod built_info { + include!(concat!(env!("OUT_DIR"), "/built.rs")); +} + const OPERATOR_NAME: &str = "opa.stackable.tech"; pub const APP_NAME: &str = "opa-bundle-builder"; @@ -124,6 +128,15 @@ async fn main() -> Result<(), StartupError> { .init() .context(TracingInitSnafu)?; + tracing::info!( + built_info.pkg_version = built_info::PKG_VERSION, + built_info.git_version = built_info::GIT_VERSION, + built_info.target = built_info::TARGET, + built_info.built_time_utc = built_info::BUILT_TIME_UTC, + built_info.rustc_version = built_info::RUSTC_VERSION, + "Starting bundle-builder", + ); + let client = stackable_operator::client::initialize_operator(None, &args.common.cluster_info_opts) .await From 2d1f5adce84caa39ad900b01550c86213d8615f4 Mon Sep 17 00:00:00 2001 From: Nick Larsen Date: Tue, 8 Apr 2025 10:04:50 +0200 Subject: [PATCH 5/8] fix: Set correct env var (ROLLING_LOGS_DIR) for bundle-builder pod --- rust/operator-binary/src/controller.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/operator-binary/src/controller.rs b/rust/operator-binary/src/controller.rs index b731b21a..23282c7e 100644 --- a/rust/operator-binary/src/controller.rs +++ b/rust/operator-binary/src/controller.rs @@ -816,7 +816,7 @@ fn build_server_rolegroup_daemonset( bundle_builder_log_level(merged_config).to_string(), ) .add_env_var( - "OPA_BUNDLE_BUILDER_LOG_DIRECTORY", + "ROLLING_LOGS_DIR", format!("{STACKABLE_LOG_DIR}/{bundle_builder_container_name}"), ) .add_volume_mount(BUNDLES_VOLUME_NAME, BUNDLES_DIR) From a818b61e038a2764c9f5852378152badb32a29ef Mon Sep 17 00:00:00 2001 From: Nick Larsen Date: Tue, 8 Apr 2025 10:09:22 +0200 Subject: [PATCH 6/8] chore: Update changelog --- CHANGELOG.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6a43b8a8..2839ec32 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,23 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +### Added + +- Log the startup event for bundle-builder and user-info-fetcher ([#703]). + +### Changed + +- Replace stackable-operator `initialize_logging` with stackable-telemetry `Tracing` ([#703]). + - BREAKING: operator-binary: The file log directory was set by `OPA_OPERATOR_LOG_DIRECTORY`, + and is now set by `ROLLING_LOGS_DIR` (or via `--rolling-logs `). + - BREAKING: bundle-builder: The file log directory was set by `OPA_BUNDLE_BUILDER_LOG_DIRECTORY`, + and is now set by `ROLLING_LOGS_DIR` (or via `--rolling-logs `). + - BREAKING: user-info-fetcher: The file log directory was set by `OPA_OPERATOR_LOG_DIRECTORY`, + and is now set by `ROLLING_LOGS_DIR` (or via `--rolling-logs `). + - Replace stackable-operator `print_startup_string` with `tracing::info!` with fields. + +[#703]: https://github.com/stackabletech/opa-operator/pull/703 + ## [25.3.0] - 2025-03-21 ### Added From f36176380129b682c0af031b3a223b578371119d Mon Sep 17 00:00:00 2001 From: Nick Larsen Date: Tue, 8 Apr 2025 10:40:38 +0200 Subject: [PATCH 7/8] chore: Correct changelog entry --- CHANGELOG.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2839ec32..6171ef16 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,11 +12,11 @@ All notable changes to this project will be documented in this file. - Replace stackable-operator `initialize_logging` with stackable-telemetry `Tracing` ([#703]). - BREAKING: operator-binary: The file log directory was set by `OPA_OPERATOR_LOG_DIRECTORY`, - and is now set by `ROLLING_LOGS_DIR` (or via `--rolling-logs `). + and is now set by `ROLLING_LOGS` (or via `--rolling-logs `). - BREAKING: bundle-builder: The file log directory was set by `OPA_BUNDLE_BUILDER_LOG_DIRECTORY`, - and is now set by `ROLLING_LOGS_DIR` (or via `--rolling-logs `). + and is now set by `ROLLING_LOGS` (or via `--rolling-logs `). - BREAKING: user-info-fetcher: The file log directory was set by `OPA_OPERATOR_LOG_DIRECTORY`, - and is now set by `ROLLING_LOGS_DIR` (or via `--rolling-logs `). + and is now set by `ROLLING_LOGS` (or via `--rolling-logs `). - Replace stackable-operator `print_startup_string` with `tracing::info!` with fields. [#703]: https://github.com/stackabletech/opa-operator/pull/703 From 95b9de8e6299759315f81ba244f87e499baab80d Mon Sep 17 00:00:00 2001 From: Nick <10092581+NickLarsenNZ@users.noreply.github.com> Date: Tue, 8 Apr 2025 12:01:18 +0200 Subject: [PATCH 8/8] Apply suggestion Co-authored-by: Techassi --- rust/operator-binary/src/controller.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/operator-binary/src/controller.rs b/rust/operator-binary/src/controller.rs index 23282c7e..a6db20fb 100644 --- a/rust/operator-binary/src/controller.rs +++ b/rust/operator-binary/src/controller.rs @@ -816,7 +816,7 @@ fn build_server_rolegroup_daemonset( bundle_builder_log_level(merged_config).to_string(), ) .add_env_var( - "ROLLING_LOGS_DIR", + "ROLLING_LOGS", format!("{STACKABLE_LOG_DIR}/{bundle_builder_container_name}"), ) .add_volume_mount(BUNDLES_VOLUME_NAME, BUNDLES_DIR)