diff --git a/Cargo.lock b/Cargo.lock index 1449577..aca86a2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1492,7 +1492,7 @@ dependencies = [ [[package]] name = "k8s-version" version = "0.1.2" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1" +source = "git+https://github.com/stackabletech//operator-rs.git?branch=main#dddd78fdc1bffb766caa30d5891bccad40073990" dependencies = [ "darling", "regex", @@ -1780,9 +1780,9 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "opentelemetry" -version = "0.28.0" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "236e667b670a5cdf90c258f5a55794ec5ac5027e960c224bff8367a59e1e6426" +checksum = "9e87237e2775f74896f9ad219d26a2081751187eb7c9f5c58dde20a23b95d16c" dependencies = [ "futures-core", "futures-sink", @@ -1794,9 +1794,9 @@ dependencies = [ [[package]] name = "opentelemetry-appender-tracing" -version = "0.28.1" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c513c7af3bec30113f3d4620134ff923295f1e9c580fda2b8abe0831f925ddc0" +checksum = "e716f864eb23007bdd9dc4aec381e188a1cee28eecf22066772b5fd822b9727d" dependencies = [ "opentelemetry", "tracing", @@ -1806,9 +1806,9 @@ dependencies = [ [[package]] name = "opentelemetry-http" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8863faf2910030d139fb48715ad5ff2f35029fc5f244f6d5f689ddcf4d26253" +checksum = "46d7ab32b827b5b495bd90fa95a6cb65ccc293555dcc3199ae2937d2d237c8ed" dependencies = [ "async-trait", "bytes", @@ -1820,11 +1820,10 @@ dependencies = [ [[package]] name = "opentelemetry-otlp" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bef114c6d41bea83d6dc60eb41720eedd0261a67af57b66dd2b84ac46c01d91" +checksum = "d899720fe06916ccba71c01d04ecd77312734e2de3467fd30d9d580c8ce85656" dependencies = [ - "async-trait", "futures-core", "http", "opentelemetry", @@ -1841,9 +1840,9 @@ dependencies = [ [[package]] name = "opentelemetry-proto" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f8870d3024727e99212eb3bb1762ec16e255e3e6f58eeb3dc8db1aa226746d" +checksum = "8c40da242381435e18570d5b9d50aca2a4f4f4d8e146231adb4e7768023309b3" dependencies = [ "opentelemetry", "opentelemetry_sdk", @@ -1853,18 +1852,17 @@ dependencies = [ [[package]] name = "opentelemetry_sdk" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84dfad6042089c7fc1f6118b7040dc2eb4ab520abbf410b79dc481032af39570" +checksum = "afdefb21d1d47394abc1ba6c57363ab141be19e27cc70d0e422b7f303e4d290b" dependencies = [ - "async-trait", "futures-channel", "futures-executor", "futures-util", "glob", "opentelemetry", "percent-encoding", - "rand", + "rand 0.9.1", "serde_json", "thiserror 2.0.12", "tokio", @@ -2143,8 +2141,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", ] [[package]] @@ -2154,7 +2162,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", ] [[package]] @@ -2166,6 +2184,15 @@ dependencies = [ "getrandom 0.2.15", ] +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.1", +] + [[package]] name = "redox_syscall" version = "0.5.10" @@ -2719,7 +2746,7 @@ dependencies = [ [[package]] name = "stackable-operator" version = "0.92.0" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1" +source = "git+https://github.com/stackabletech//operator-rs.git?branch=main#dddd78fdc1bffb766caa30d5891bccad40073990" dependencies = [ "chrono", "clap", @@ -2756,7 +2783,7 @@ dependencies = [ [[package]] name = "stackable-operator-derive" version = "0.3.1" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1" +source = "git+https://github.com/stackabletech//operator-rs.git?branch=main#dddd78fdc1bffb766caa30d5891bccad40073990" dependencies = [ "darling", "proc-macro2", @@ -2767,7 +2794,7 @@ dependencies = [ [[package]] name = "stackable-shared" version = "0.0.1" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1" +source = "git+https://github.com/stackabletech//operator-rs.git?branch=main#dddd78fdc1bffb766caa30d5891bccad40073990" dependencies = [ "kube", "semver", @@ -2779,7 +2806,7 @@ dependencies = [ [[package]] name = "stackable-telemetry" version = "0.6.0" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1" +source = "git+https://github.com/stackabletech//operator-rs.git?branch=main#dddd78fdc1bffb766caa30d5891bccad40073990" dependencies = [ "axum 0.8.3", "clap", @@ -2802,7 +2829,7 @@ dependencies = [ [[package]] name = "stackable-versioned" version = "0.7.1" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1" +source = "git+https://github.com/stackabletech//operator-rs.git?branch=main#dddd78fdc1bffb766caa30d5891bccad40073990" dependencies = [ "stackable-versioned-macros", ] @@ -2810,7 +2837,7 @@ dependencies = [ [[package]] name = "stackable-versioned-macros" version = "0.7.1" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1" +source = "git+https://github.com/stackabletech//operator-rs.git?branch=main#dddd78fdc1bffb766caa30d5891bccad40073990" dependencies = [ "convert_case", "darling", @@ -3137,7 +3164,7 @@ dependencies = [ "indexmap 1.9.3", "pin-project", "pin-project-lite", - "rand", + "rand 0.8.5", "slab", "tokio", "tokio-util", @@ -3251,9 +3278,9 @@ dependencies = [ [[package]] name = "tracing-opentelemetry" -version = "0.29.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721f2d2569dce9f3dfbbddee5906941e953bfcdf736a62da3377f5751650cc36" +checksum = "fd8e764bd6f5813fd8bebc3117875190c5b0415be8f7f8059bffb6ecd979c444" dependencies = [ "js-sys", "once_cell", diff --git a/Cargo.nix b/Cargo.nix index a86bbeb..cac8dea 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -2904,6 +2904,7 @@ rec { "rustc-dep-of-std" = [ "dep:compiler_builtins" "dep:core" ]; "wasm_js" = [ "dep:wasm-bindgen" "dep:js-sys" ]; }; + resolvedDefaultFeatures = [ "std" ]; }; "gimli" = rec { crateName = "gimli"; @@ -4708,9 +4709,9 @@ rec { edition = "2024"; workspace_member = null; src = pkgs.fetchgit { - url = "https://github.com/stackabletech/operator-rs.git"; - rev = "5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1"; - sha256 = "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw"; + url = "https://github.com/stackabletech//operator-rs.git"; + rev = "dddd78fdc1bffb766caa30d5891bccad40073990"; + sha256 = "0r0p4p4nyid6gjwq3mx9c5xp9xhk77dpwhhb51w00sknhg5p9qz7"; }; libName = "k8s_version"; authors = [ @@ -5783,9 +5784,9 @@ rec { }; "opentelemetry" = rec { crateName = "opentelemetry"; - version = "0.28.0"; + version = "0.29.1"; edition = "2021"; - sha256 = "09k43sgaarw3zx5j434ngq1canpcjibsbxaqqa8dyp0acxxncvi3"; + sha256 = "0v6ijlxs486yip2zbjdpgqc525q8l8k9s8ddz6b4ixvm4xz271wy"; dependencies = [ { name = "futures-core"; @@ -5821,7 +5822,8 @@ rec { } ]; features = { - "default" = [ "trace" "metrics" "logs" "internal-logs" ]; + "default" = [ "trace" "metrics" "logs" "internal-logs" "futures" ]; + "futures" = [ "futures-core" "futures-sink" "pin-project-lite" ]; "futures-core" = [ "dep:futures-core" ]; "futures-sink" = [ "dep:futures-sink" ]; "internal-logs" = [ "tracing" ]; @@ -5829,16 +5831,16 @@ rec { "spec_unstable_logs_enabled" = [ "logs" ]; "testing" = [ "trace" ]; "thiserror" = [ "dep:thiserror" ]; - "trace" = [ "pin-project-lite" "futures-sink" "futures-core" "thiserror" ]; + "trace" = [ "futures" "thiserror" ]; "tracing" = [ "dep:tracing" ]; }; - resolvedDefaultFeatures = [ "default" "futures-core" "futures-sink" "internal-logs" "logs" "metrics" "pin-project-lite" "spec_unstable_logs_enabled" "thiserror" "trace" "tracing" ]; + resolvedDefaultFeatures = [ "default" "futures" "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"; + version = "0.29.1"; edition = "2021"; - sha256 = "1h6x4pwk225yi8mxl3sqkhg5ya93z57i68267lzi2c7c7fpwf4y5"; + sha256 = "0zbjp4idhprbfxk21wpcivicx8c8w60w7bn4kpfpn013xdjgh5p7"; libName = "opentelemetry_appender_tracing"; dependencies = [ { @@ -5865,11 +5867,17 @@ rec { } ]; devDependencies = [ + { + name = "tracing"; + packageId = "tracing"; + usesDefaultFeatures = false; + features = [ "std" ]; + } { name = "tracing-subscriber"; packageId = "tracing-subscriber"; usesDefaultFeatures = false; - features = [ "registry" "std" "env-filter" ]; + features = [ "env-filter" "registry" "std" "fmt" ]; } ]; features = { @@ -5883,9 +5891,9 @@ rec { }; "opentelemetry-http" = rec { crateName = "opentelemetry-http"; - version = "0.28.0"; + version = "0.29.0"; edition = "2021"; - sha256 = "0lv2sbsdr7b8bxnly92zzhlm1wzjbynib1xlkw9hs0qh56pkz1m8"; + sha256 = "1vf86z9d4dr9msck3k2xan9w5k35rfk9bylhpnav9d97p0rapms6"; libName = "opentelemetry_http"; dependencies = [ { @@ -5934,15 +5942,11 @@ rec { }; "opentelemetry-otlp" = rec { crateName = "opentelemetry-otlp"; - version = "0.28.0"; + version = "0.29.0"; edition = "2021"; - sha256 = "148xq13ar11bvmk7pxbslrhh5pgf40bv83n6dlysigj1dm613vsv"; + sha256 = "0mjnx260qn4x1p9pyip35m7764kkszn087f0f6xcq5k9w07p56fq"; libName = "opentelemetry_otlp"; dependencies = [ - { - name = "async-trait"; - packageId = "async-trait"; - } { name = "futures-core"; packageId = "futures-core"; @@ -6017,6 +6021,12 @@ rec { usesDefaultFeatures = false; features = [ "macros" "rt-multi-thread" ]; } + { + name = "tonic"; + packageId = "tonic"; + usesDefaultFeatures = false; + features = [ "server" ]; + } ]; features = { "default" = [ "http-proto" "reqwest-blocking-client" "trace" "metrics" "logs" "internal-logs" ]; @@ -6053,9 +6063,9 @@ rec { }; "opentelemetry-proto" = rec { crateName = "opentelemetry-proto"; - version = "0.28.0"; + version = "0.29.0"; edition = "2021"; - sha256 = "0vbl4si1mny87pmqxxg6wday45pcc8bvpcrf46cpwwi4606qgy2n"; + sha256 = "1cq96c16hxsfvcd26ip1v3sg9952mi89snqdawc5whw14cjdlh4c"; libName = "opentelemetry_proto"; dependencies = [ { @@ -6085,7 +6095,7 @@ rec { "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" = [ "gen-tonic-messages" "tonic/channel" ]; "gen-tonic-messages" = [ "tonic" "prost" ]; "hex" = [ "dep:hex" ]; "internal-logs" = [ "tracing" ]; @@ -6106,15 +6116,10 @@ rec { }; "opentelemetry_sdk" = rec { crateName = "opentelemetry_sdk"; - version = "0.28.0"; + version = "0.29.0"; edition = "2021"; - sha256 = "0w4mycm070f4knvi1x5v199apd1fvi0712qiyv0pz70889havpw4"; + sha256 = "02r99lz30zrb8870vivww8cvwhdi78v5fv5sq6mr8wyls4hzppmg"; dependencies = [ - { - name = "async-trait"; - packageId = "async-trait"; - optional = true; - } { name = "futures-channel"; packageId = "futures-channel"; @@ -6145,10 +6150,10 @@ rec { } { name = "rand"; - packageId = "rand"; + packageId = "rand 0.9.1"; optional = true; usesDefaultFeatures = false; - features = [ "std" "std_rng" "small_rng" ]; + features = [ "std" "std_rng" "small_rng" "os_rng" "thread_rng" ]; } { name = "serde_json"; @@ -6180,10 +6185,9 @@ rec { } ]; features = { - "async-std" = [ "dep:async-std" ]; - "async-trait" = [ "dep:async-trait" ]; "default" = [ "trace" "metrics" "logs" "internal-logs" ]; "experimental_logs_batch_log_processor_with_async_runtime" = [ "logs" ]; + "experimental_logs_concurrent_log_processor" = [ "logs" ]; "experimental_metrics_disable_name_validation" = [ "metrics" ]; "experimental_metrics_periodicreader_with_async_runtime" = [ "metrics" ]; "experimental_trace_batch_span_processor_with_async_runtime" = [ "trace" ]; @@ -6192,25 +6196,24 @@ rec { "internal-logs" = [ "tracing" ]; "jaeger_remote_sampler" = [ "trace" "opentelemetry-http" "http" "serde" "serde_json" "url" ]; "logs" = [ "opentelemetry/logs" "serde_json" ]; - "metrics" = [ "opentelemetry/metrics" "glob" "async-trait" ]; + "metrics" = [ "opentelemetry/metrics" "glob" ]; "opentelemetry-http" = [ "dep:opentelemetry-http" ]; "percent-encoding" = [ "dep:percent-encoding" ]; "rand" = [ "dep:rand" ]; - "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" ]; + "testing" = [ "opentelemetry/testing" "trace" "metrics" "logs" "rt-tokio" "rt-tokio-current-thread" "tokio/macros" "tokio/rt-multi-thread" ]; "tokio" = [ "dep:tokio" ]; "tokio-stream" = [ "dep:tokio-stream" ]; "trace" = [ "opentelemetry/trace" "rand" "percent-encoding" ]; "tracing" = [ "dep:tracing" ]; "url" = [ "dep:url" ]; }; - 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" ]; + resolvedDefaultFeatures = [ "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" = rec { crateName = "ordered-float"; @@ -6954,7 +6957,7 @@ rec { }; resolvedDefaultFeatures = [ "default" "proc-macro" ]; }; - "rand" = rec { + "rand 0.8.5" = rec { crateName = "rand"; version = "0.8.5"; edition = "2018"; @@ -6973,13 +6976,13 @@ rec { } { name = "rand_chacha"; - packageId = "rand_chacha"; + packageId = "rand_chacha 0.3.1"; optional = true; usesDefaultFeatures = false; } { name = "rand_core"; - packageId = "rand_core"; + packageId = "rand_core 0.6.4"; } ]; features = { @@ -6998,7 +7001,40 @@ rec { }; resolvedDefaultFeatures = [ "alloc" "default" "getrandom" "libc" "rand_chacha" "small_rng" "std" "std_rng" ]; }; - "rand_chacha" = rec { + "rand 0.9.1" = rec { + crateName = "rand"; + version = "0.9.1"; + edition = "2021"; + sha256 = "15yxfcxbgmwba5cv7mjg9bhc1r5c9483dfcdfspg62x4jk8dkgwz"; + authors = [ + "The Rand Project Developers" + "The Rust Project Developers" + ]; + dependencies = [ + { + name = "rand_chacha"; + packageId = "rand_chacha 0.9.0"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "rand_core"; + packageId = "rand_core 0.9.3"; + usesDefaultFeatures = false; + } + ]; + features = { + "default" = [ "std" "std_rng" "os_rng" "small_rng" "thread_rng" ]; + "log" = [ "dep:log" ]; + "os_rng" = [ "rand_core/os_rng" ]; + "serde" = [ "dep:serde" "rand_core/serde" ]; + "std" = [ "rand_core/std" "rand_chacha?/std" "alloc" ]; + "std_rng" = [ "dep:rand_chacha" ]; + "thread_rng" = [ "std" "std_rng" "os_rng" ]; + }; + resolvedDefaultFeatures = [ "alloc" "os_rng" "small_rng" "std" "std_rng" "thread_rng" ]; + }; + "rand_chacha 0.3.1" = rec { crateName = "rand_chacha"; version = "0.3.1"; edition = "2018"; @@ -7017,7 +7053,7 @@ rec { } { name = "rand_core"; - packageId = "rand_core"; + packageId = "rand_core 0.6.4"; } ]; features = { @@ -7028,7 +7064,44 @@ rec { }; resolvedDefaultFeatures = [ "std" ]; }; - "rand_core" = rec { + "rand_chacha 0.9.0" = rec { + crateName = "rand_chacha"; + version = "0.9.0"; + edition = "2021"; + sha256 = "1jr5ygix7r60pz0s1cv3ms1f6pd1i9pcdmnxzzhjc3zn3mgjn0nk"; + authors = [ + "The Rand Project Developers" + "The Rust Project Developers" + "The CryptoCorrosion Contributors" + ]; + dependencies = [ + { + name = "ppv-lite86"; + packageId = "ppv-lite86"; + usesDefaultFeatures = false; + features = [ "simd" ]; + } + { + name = "rand_core"; + packageId = "rand_core 0.9.3"; + } + ]; + devDependencies = [ + { + name = "rand_core"; + packageId = "rand_core 0.9.3"; + features = [ "os_rng" ]; + } + ]; + features = { + "default" = [ "std" ]; + "os_rng" = [ "rand_core/os_rng" ]; + "serde" = [ "dep:serde" ]; + "std" = [ "ppv-lite86/std" "rand_core/std" ]; + }; + resolvedDefaultFeatures = [ "std" ]; + }; + "rand_core 0.6.4" = rec { crateName = "rand_core"; version = "0.6.4"; edition = "2018"; @@ -7052,6 +7125,29 @@ rec { }; resolvedDefaultFeatures = [ "alloc" "getrandom" "std" ]; }; + "rand_core 0.9.3" = rec { + crateName = "rand_core"; + version = "0.9.3"; + edition = "2021"; + sha256 = "0f3xhf16yks5ic6kmgxcpv1ngdhp48mmfy4ag82i1wnwh8ws3ncr"; + authors = [ + "The Rand Project Developers" + "The Rust Project Developers" + ]; + dependencies = [ + { + name = "getrandom"; + packageId = "getrandom 0.3.1"; + optional = true; + } + ]; + features = { + "os_rng" = [ "dep:getrandom" ]; + "serde" = [ "dep:serde" ]; + "std" = [ "getrandom?/std" ]; + }; + resolvedDefaultFeatures = [ "os_rng" "std" ]; + }; "redox_syscall" = rec { crateName = "redox_syscall"; version = "0.5.10"; @@ -8970,9 +9066,9 @@ rec { edition = "2024"; workspace_member = null; src = pkgs.fetchgit { - url = "https://github.com/stackabletech/operator-rs.git"; - rev = "5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1"; - sha256 = "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw"; + url = "https://github.com/stackabletech//operator-rs.git"; + rev = "dddd78fdc1bffb766caa30d5891bccad40073990"; + sha256 = "0r0p4p4nyid6gjwq3mx9c5xp9xhk77dpwhhb51w00sknhg5p9qz7"; }; libName = "stackable_operator"; authors = [ @@ -9129,9 +9225,9 @@ rec { edition = "2024"; workspace_member = null; src = pkgs.fetchgit { - url = "https://github.com/stackabletech/operator-rs.git"; - rev = "5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1"; - sha256 = "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw"; + url = "https://github.com/stackabletech//operator-rs.git"; + rev = "dddd78fdc1bffb766caa30d5891bccad40073990"; + sha256 = "0r0p4p4nyid6gjwq3mx9c5xp9xhk77dpwhhb51w00sknhg5p9qz7"; }; procMacro = true; libName = "stackable_operator_derive"; @@ -9164,9 +9260,9 @@ rec { edition = "2024"; workspace_member = null; src = pkgs.fetchgit { - url = "https://github.com/stackabletech/operator-rs.git"; - rev = "5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1"; - sha256 = "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw"; + url = "https://github.com/stackabletech//operator-rs.git"; + rev = "dddd78fdc1bffb766caa30d5891bccad40073990"; + sha256 = "0r0p4p4nyid6gjwq3mx9c5xp9xhk77dpwhhb51w00sknhg5p9qz7"; }; libName = "stackable_shared"; authors = [ @@ -9205,9 +9301,9 @@ rec { edition = "2024"; workspace_member = null; src = pkgs.fetchgit { - url = "https://github.com/stackabletech/operator-rs.git"; - rev = "5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1"; - sha256 = "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw"; + url = "https://github.com/stackabletech//operator-rs.git"; + rev = "dddd78fdc1bffb766caa30d5891bccad40073990"; + sha256 = "0r0p4p4nyid6gjwq3mx9c5xp9xhk77dpwhhb51w00sknhg5p9qz7"; }; libName = "stackable_telemetry"; authors = [ @@ -9310,9 +9406,9 @@ rec { edition = "2024"; workspace_member = null; src = pkgs.fetchgit { - url = "https://github.com/stackabletech/operator-rs.git"; - rev = "5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1"; - sha256 = "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw"; + url = "https://github.com/stackabletech//operator-rs.git"; + rev = "dddd78fdc1bffb766caa30d5891bccad40073990"; + sha256 = "0r0p4p4nyid6gjwq3mx9c5xp9xhk77dpwhhb51w00sknhg5p9qz7"; }; libName = "stackable_versioned"; authors = [ @@ -9336,9 +9432,9 @@ rec { edition = "2024"; workspace_member = null; src = pkgs.fetchgit { - url = "https://github.com/stackabletech/operator-rs.git"; - rev = "5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1"; - sha256 = "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw"; + url = "https://github.com/stackabletech//operator-rs.git"; + rev = "dddd78fdc1bffb766caa30d5891bccad40073990"; + sha256 = "0r0p4p4nyid6gjwq3mx9c5xp9xhk77dpwhhb51w00sknhg5p9qz7"; }; procMacro = true; libName = "stackable_versioned_macros"; @@ -10472,7 +10568,7 @@ rec { } { name = "rand"; - packageId = "rand"; + packageId = "rand 0.8.5"; optional = true; features = [ "small_rng" ]; } @@ -10972,9 +11068,9 @@ rec { }; "tracing-opentelemetry" = rec { crateName = "tracing-opentelemetry"; - version = "0.29.0"; + version = "0.30.0"; edition = "2021"; - sha256 = "0dnca0b7bxbp6gd64skkvzy3p58yjh35kvnxpggz7sfwd4jjs7vj"; + sha256 = "0i64g7cyrdpzkc2zixz8bd0v1icha63ifcdwpvc3z0gmsr5pd3px"; libName = "tracing_opentelemetry"; dependencies = [ { diff --git a/Cargo.toml b/Cargo.toml index a23fa91..dab9c72 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -38,4 +38,4 @@ walkdir = "2.5.0" [patch."https://github.com/stackabletech/operator-rs.git"] # stackable-operator = { path = "../operator-rs/crates/stackable-operator" } -# stackable-operator = { git = "https://github.com/stackabletech//operator-rs.git", branch = "main" } +stackable-operator = { git = "https://github.com/stackabletech//operator-rs.git", branch = "main" } diff --git a/crate-hashes.json b/crate-hashes.json index 9dcf61e..1fa2d3f 100644 --- a/crate-hashes.json +++ b/crate-hashes.json @@ -1,10 +1,10 @@ { - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#k8s-version@0.1.2": "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#stackable-operator-derive@0.3.1": "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#stackable-operator@0.92.0": "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#stackable-shared@0.0.1": "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#stackable-telemetry@0.6.0": "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#stackable-versioned-macros@0.7.1": "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#stackable-versioned@0.7.1": "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw", + "git+https://github.com/stackabletech//operator-rs.git?branch=main#k8s-version@0.1.2": "0r0p4p4nyid6gjwq3mx9c5xp9xhk77dpwhhb51w00sknhg5p9qz7", + "git+https://github.com/stackabletech//operator-rs.git?branch=main#stackable-operator-derive@0.3.1": "0r0p4p4nyid6gjwq3mx9c5xp9xhk77dpwhhb51w00sknhg5p9qz7", + "git+https://github.com/stackabletech//operator-rs.git?branch=main#stackable-operator@0.92.0": "0r0p4p4nyid6gjwq3mx9c5xp9xhk77dpwhhb51w00sknhg5p9qz7", + "git+https://github.com/stackabletech//operator-rs.git?branch=main#stackable-shared@0.0.1": "0r0p4p4nyid6gjwq3mx9c5xp9xhk77dpwhhb51w00sknhg5p9qz7", + "git+https://github.com/stackabletech//operator-rs.git?branch=main#stackable-telemetry@0.6.0": "0r0p4p4nyid6gjwq3mx9c5xp9xhk77dpwhhb51w00sknhg5p9qz7", + "git+https://github.com/stackabletech//operator-rs.git?branch=main#stackable-versioned-macros@0.7.1": "0r0p4p4nyid6gjwq3mx9c5xp9xhk77dpwhhb51w00sknhg5p9qz7", + "git+https://github.com/stackabletech//operator-rs.git?branch=main#stackable-versioned@0.7.1": "0r0p4p4nyid6gjwq3mx9c5xp9xhk77dpwhhb51w00sknhg5p9qz7", "git+https://github.com/stackabletech/product-config.git?tag=0.7.0#product-config@0.7.0": "0gjsm80g6r75pm3824dcyiz4ysq1ka4c1if6k1mjm9cnd5ym0gny" } \ No newline at end of file diff --git a/rust/operator-binary/src/csi_server/controller.rs b/rust/operator-binary/src/csi_server/controller.rs index 99fbf84..8c75e3a 100644 --- a/rust/operator-binary/src/csi_server/controller.rs +++ b/rust/operator-binary/src/csi_server/controller.rs @@ -2,7 +2,7 @@ use csi_grpc as csi; use serde::{Deserialize, de::IntoDeserializer}; use snafu::{OptionExt, ResultExt, Snafu}; use stackable_operator::{ - commons::listener::{Listener, ListenerClass, ServiceType}, + crd::listener::v1alpha1, k8s_openapi::api::core::v1::PersistentVolumeClaim, kube::{core::DynamicObject, runtime::reflector::ObjectRef}, }; @@ -36,7 +36,9 @@ enum CreateVolumeError { #[snafu(display("failed to decode volume context"))] DecodeVolumeContext { source: serde::de::value::Error }, #[snafu(display("{listener} does not specify a listener class"))] - NoListenerClass { listener: ObjectRef }, + NoListenerClass { + listener: ObjectRef, + }, } impl From for Status { @@ -99,10 +101,10 @@ impl csi::v1::controller_server::Controller for ListenerOperatorController { ListenerSelector::Listener(listener_name) => { let listener = self .client - .get::(&listener_name, &ns) + .get::(&listener_name, &ns) .await .with_context(|_| GetObjectSnafu { - obj: ObjectRef::::new(&listener_name) + obj: ObjectRef::::new(&listener_name) .within(&ns) .erase(), })?; @@ -118,10 +120,10 @@ impl csi::v1::controller_server::Controller for ListenerOperatorController { }; let listener_class = self .client - .get::(&listener_class_name, &()) + .get::(&listener_class_name, &()) .await .with_context(|_| GetObjectSnafu { - obj: ObjectRef::::new(&listener_class_name) + obj: ObjectRef::::new(&listener_class_name) .within(&ns) .erase(), })?; @@ -134,7 +136,7 @@ impl csi::v1::controller_server::Controller for ListenerOperatorController { accessible_topology: match listener_class.spec.service_type { // Pick the top node (as selected by the CSI client) and "stick" to that // Since we want clients to have a stable address to connect to - ServiceType::NodePort => request + v1alpha1::ServiceType::NodePort => request .accessibility_requirements .unwrap_or_default() .preferred @@ -142,7 +144,9 @@ impl csi::v1::controller_server::Controller for ListenerOperatorController { .take(1) .collect(), // Load balancers and services of type ClusterIP have no relationship to any particular node, so don't try to be sticky - ServiceType::LoadBalancer | ServiceType::ClusterIP => Vec::new(), + v1alpha1::ServiceType::LoadBalancer | v1alpha1::ServiceType::ClusterIP => { + Vec::new() + } }, }), })) diff --git a/rust/operator-binary/src/csi_server/node.rs b/rust/operator-binary/src/csi_server/node.rs index 62a1d82..46cc7e1 100644 --- a/rust/operator-binary/src/csi_server/node.rs +++ b/rust/operator-binary/src/csi_server/node.rs @@ -5,10 +5,7 @@ use serde::{Deserialize, de::IntoDeserializer}; use snafu::{OptionExt, ResultExt, Snafu}; use stackable_operator::{ builder::meta::OwnerReferenceBuilder, - commons::listener::{ - Listener, ListenerClass, ListenerIngress, ListenerPort, ListenerSpec, PodListener, - PodListenerScope, PodListeners, PodListenersSpec, - }, + crd::listener::v1alpha1, k8s_openapi::api::core::v1::{Node, PersistentVolume, PersistentVolumeClaim, Pod, Volume}, kube::{ core::{DynamicObject, ObjectMeta}, @@ -63,17 +60,19 @@ enum PublishVolumeError { #[snafu(display("failed to generate {listener}'s PersistentVolume selector"))] ListenerPvReference { source: ListenerPersistentVolumeLabelError, - listener: ObjectRef, + listener: ObjectRef, }, #[snafu(display("failed to generate {listener}'s pod selector"))] ListenerPodSelector { source: ListenerMountedPodLabelError, - listener: ObjectRef, + listener: ObjectRef, }, #[snafu(display("{listener} has no associated ListenerClass"))] - ListenerHasNoClass { listener: ObjectRef }, + ListenerHasNoClass { + listener: ObjectRef, + }, #[snafu(display("{pod} has not been scheduled to a node yet"))] PodHasNoNode { pod: ObjectRef }, @@ -86,7 +85,7 @@ enum PublishVolumeError { #[snafu(display("failed to apply {listener}"))] ApplyListener { source: stackable_operator::client::Error, - listener: ObjectRef, + listener: ObjectRef, }, #[snafu(display("failed to add listener label to {pv}"))] @@ -114,7 +113,7 @@ enum PublishVolumeError { WritePodListeners { source: stackable_operator::client::Error, create_error: stackable_operator::client::Error, - pod_listeners: ObjectRef, + pod_listeners: ObjectRef, }, #[snafu(display("failed to find Pod volume corresponding for {pvc}"))] @@ -244,17 +243,17 @@ impl csi::v1::node_server::Node for ListenerOperatorNode { let listener = match listener_selector { ListenerSelector::Listener(listener_name) => self .client - .get::(&listener_name, &ns) + .get::(&listener_name, &ns) .await .with_context(|_| GetObjectSnafu { obj: { - ObjectRef::::new(&listener_name) + ObjectRef::::new(&listener_name) .within(&ns) .erase() }, })?, ListenerSelector::ListenerClass(listener_class_name) => { - let listener = Listener { + let listener = v1alpha1::Listener { metadata: ObjectMeta { namespace: Some(ns.clone()), name: Some(pvc_name.to_string()), @@ -269,7 +268,7 @@ impl csi::v1::node_server::Node for ListenerOperatorNode { labels: pvc.metadata.labels, ..Default::default() }, - spec: ListenerSpec { + spec: v1alpha1::ListenerSpec { class_name: Some(listener_class_name), ports: Some( pod.spec @@ -277,7 +276,7 @@ impl csi::v1::node_server::Node for ListenerOperatorNode { .flat_map(|ps| &ps.containers) .flat_map(|ctr| &ctr.ports) .flatten() - .map(|port| ListenerPort { + .map(|port| v1alpha1::ListenerPort { name: port .name .clone() @@ -420,9 +419,9 @@ impl csi::v1::node_server::Node for ListenerOperatorNode { /// (and so can't be found in `Endpoints`). async fn local_listener_addresses_for_pod( client: &stackable_operator::client::Client, - listener: &Listener, + listener: &v1alpha1::Listener, pod: &Pod, -) -> Result, PublishVolumeError> { +) -> Result, PublishVolumeError> { use publish_volume_error::*; if let Some(node_ports) = listener @@ -452,15 +451,15 @@ async fn local_listener_addresses_for_pod( listener: ObjectRef::from_obj(listener), })?; let listener_class = client - .get::(listener_class_name, &()) + .get::(listener_class_name, &()) .await .with_context(|_| GetObjectSnafu { - obj: ObjectRef::::new(listener_class_name).erase(), + obj: ObjectRef::::new(listener_class_name).erase(), })?; Ok(node_primary_addresses(&node) .pick(listener_class.spec.resolve_preferred_address_type()) - .map(|(address, address_type)| ListenerIngress { + .map(|(address, address_type)| v1alpha1::ListenerIngress { // nodes: Some(vec![node_name.to_string()]), address: address.to_string(), address_type, @@ -484,8 +483,8 @@ async fn publish_pod_listener( pod: &Pod, pod_name: &str, pvc_name: &str, - listener: &Listener, - listener_addresses: &[ListenerIngress], + listener: &v1alpha1::Listener, + listener_addresses: &[v1alpha1::ListenerIngress], ) -> Result<(), PublishVolumeError> { use publish_volume_error::*; let listener_pod_volume = pod @@ -508,7 +507,7 @@ async fn publish_pod_listener( .with_context(|| FindPodVolumeForPvcSnafu { pvc: ObjectRef::::new(pvc_name), })?; - let pod_listeners = PodListeners { + let pod_listeners = v1alpha1::PodListeners { metadata: ObjectMeta { name: pod.metadata.uid.as_deref().map(|uid| format!("pod-{uid}")), namespace: pod.metadata.namespace.clone(), @@ -520,17 +519,17 @@ async fn publish_pod_listener( ]), ..Default::default() }, - spec: PodListenersSpec { - listeners: [(listener_pod_volume.name.clone(), PodListener { + spec: v1alpha1::PodListenersSpec { + listeners: [(listener_pod_volume.name.clone(), v1alpha1::PodListener { scope: if listener .status .as_ref() .and_then(|s| s.node_ports.as_ref()) .is_some() { - PodListenerScope::Node + v1alpha1::PodListenerScope::Node } else { - PodListenerScope::Cluster + v1alpha1::PodListenerScope::Cluster }, ingress_addresses: Some(listener_addresses.to_vec()), })] @@ -556,7 +555,7 @@ mod pod_dir { use std::path::Path; use snafu::{OptionExt, ResultExt, Snafu}; - use stackable_operator::commons::listener::ListenerIngress; + use stackable_operator::crd::listener::v1alpha1; #[derive(Snafu, Debug)] pub enum Error { @@ -570,7 +569,7 @@ mod pod_dir { pub async fn write_listener_info_to_pod_dir( target_path: &Path, - listener_addrs: &[ListenerIngress], + listener_addrs: &[v1alpha1::ListenerIngress], ) -> Result<(), Error> { let addrs_path = target_path.join("addresses"); tokio::fs::create_dir_all(&addrs_path).await?; diff --git a/rust/operator-binary/src/listener_controller.rs b/rust/operator-binary/src/listener_controller.rs index a5203b5..f4b87f7 100644 --- a/rust/operator-binary/src/listener_controller.rs +++ b/rust/operator-binary/src/listener_controller.rs @@ -14,10 +14,7 @@ use stackable_operator::k8s_openapi::api::core::v1::Pod; use stackable_operator::{ builder::meta::ObjectMetaBuilder, cluster_resources::{ClusterResourceApplyStrategy, ClusterResources}, - commons::listener::{ - AddressType, Listener, ListenerClass, ListenerIngress, ListenerPort, ListenerSpec, - ListenerStatus, ServiceType, - }, + crd::listener::v1alpha1, iter::TryFromIterator, k8s_openapi::{ api::core::v1::{Endpoints, Node, PersistentVolume, Service, ServicePort, ServiceSpec}, @@ -52,7 +49,7 @@ pub const FULL_CONTROLLER_NAME: &str = concatcp!(CONTROLLER_NAME, '.', OPERATOR_ pub async fn run(client: stackable_operator::client::Client) { let controller = controller::Controller::new( - client.get_all_api::>(), + client.get_all_api::>(), watcher::Config::default(), ); let listener_store = controller.store(); @@ -66,7 +63,7 @@ pub async fn run(client: stackable_operator::client::Client) { watcher::Config::default(), ) .watches( - client.get_all_api::>(), + client.get_all_api::>(), watcher::Config::default(), { let listener_store = listener_store.clone(); @@ -112,7 +109,9 @@ pub async fn run(client: stackable_operator::client::Client) { labels .get(PV_LABEL_LISTENER_NAMESPACE) .zip(labels.get(PV_LABEL_LISTENER_NAME)) - .map(|(ns, name)| ObjectRef::>::new(name).within(ns)) + .map(|(ns, name)| { + ObjectRef::>::new(name).within(ns) + }) }, ) .shutdown_on_signal() @@ -187,7 +186,7 @@ pub enum Error { #[snafu(display("failed to validate annotations specified by {listener_class}"))] ValidateListenerClassAnnotations { source: stackable_operator::kvp::AnnotationError, - listener_class: ObjectRef, + listener_class: ObjectRef, }, #[snafu(display("failed to build cluster resource labels"))] @@ -254,7 +253,7 @@ impl ReconcilerError for Error { } pub async fn reconcile( - listener: Arc>, + listener: Arc>, ctx: Arc, ) -> Result { tracing::info!("Starting reconcile"); @@ -283,10 +282,10 @@ pub async fn reconcile( .context(NoListenerClassSnafu)?; let listener_class = ctx .client - .get::(listener_class_name, &()) + .get::(listener_class_name, &()) .await .with_context(|_| GetObjectSnafu { - obj: ObjectRef::::new(listener_class_name).erase(), + obj: ObjectRef::::new(listener_class_name).erase(), })?; let pod_ports = listener .spec @@ -294,7 +293,7 @@ pub async fn reconcile( .iter() .flatten() .map( - |ListenerPort { + |v1alpha1::ListenerPort { name, port, protocol, @@ -315,13 +314,13 @@ pub async fn reconcile( // ClusterIP services have no external traffic to apply policies to let external_traffic_policy = match listener_class.spec.service_type { - ServiceType::NodePort | ServiceType::LoadBalancer => Some( + v1alpha1::ServiceType::NodePort | v1alpha1::ServiceType::LoadBalancer => Some( listener_class .spec .service_external_traffic_policy .to_string(), ), - ServiceType::ClusterIP => None, + v1alpha1::ServiceType::ClusterIP => None, }; let svc = Service { @@ -359,9 +358,9 @@ pub async fn reconcile( // We explicitly match here and do not implement `ToString` as there might be more (non vanilla k8s Service // types) in the future. type_: Some(match listener_class.spec.service_type { - ServiceType::NodePort => "NodePort".to_string(), - ServiceType::LoadBalancer => "LoadBalancer".to_string(), - ServiceType::ClusterIP => "ClusterIP".to_string(), + v1alpha1::ServiceType::NodePort => "NodePort".to_string(), + v1alpha1::ServiceType::LoadBalancer => "LoadBalancer".to_string(), + v1alpha1::ServiceType::ClusterIP => "ClusterIP".to_string(), }), ports: Some(pod_ports.into_values().collect()), external_traffic_policy, @@ -385,10 +384,10 @@ pub async fn reconcile( let nodes: Vec; let kubernetes_service_fqdn: String; - let addresses: Vec<(&str, AddressType)>; + let addresses: Vec<(&str, v1alpha1::AddressType)>; let ports: BTreeMap; match listener_class.spec.service_type { - ServiceType::NodePort => { + v1alpha1::ServiceType::NodePort => { let node_names = node_names_for_nodeport_listener(&ctx.client, listener, ns, &svc_name).await?; nodes = try_join_all(node_names.iter().map(|node_name| async { @@ -413,7 +412,7 @@ pub async fn reconcile( .filter_map(|port| Some((port.name.clone()?, port.node_port?))) .collect(); } - ServiceType::LoadBalancer => { + v1alpha1::ServiceType::LoadBalancer => { addresses = svc .status .iter() @@ -436,19 +435,19 @@ pub async fn reconcile( .filter_map(|port| Some((port.name.clone()?, port.port))) .collect(); } - ServiceType::ClusterIP => { + v1alpha1::ServiceType::ClusterIP => { let cluster_domain = &cluster_info.cluster_domain; addresses = match preferred_address_type { - AddressType::Ip => svc + v1alpha1::AddressType::Ip => svc .spec .iter() .flat_map(|s| &s.cluster_ips) .flatten() - .map(|addr| (&**addr, AddressType::Ip)) + .map(|addr| (&**addr, v1alpha1::AddressType::Ip)) .collect::>(), - AddressType::Hostname => { + v1alpha1::AddressType::Hostname => { kubernetes_service_fqdn = format!("{svc_name}.{ns}.svc.{cluster_domain}"); - vec![(&kubernetes_service_fqdn, AddressType::Hostname)] + vec![(&kubernetes_service_fqdn, v1alpha1::AddressType::Hostname)] } }; ports = svc @@ -462,29 +461,30 @@ pub async fn reconcile( } }; - let listener_status_meta = Listener { + let listener_status_meta = v1alpha1::Listener { metadata: ObjectMeta { name: listener.metadata.name.clone(), namespace: listener.metadata.namespace.clone(), uid: listener.metadata.uid.clone(), ..Default::default() }, - spec: ListenerSpec::default(), + spec: v1alpha1::ListenerSpec::default(), status: None, }; - let listener_status = ListenerStatus { + let listener_status = v1alpha1::ListenerStatus { service_name: svc.metadata.name, ingress_addresses: Some( addresses .into_iter() - .map(|(address, address_type)| ListenerIngress { + .map(|(address, address_type)| v1alpha1::ListenerIngress { address: address.to_string(), address_type, ports: ports.clone(), }) .collect(), ), - node_ports: (listener_class.spec.service_type == ServiceType::NodePort).then_some(ports), + node_ports: (listener_class.spec.service_type == v1alpha1::ServiceType::NodePort) + .then_some(ports), }; cluster_resources @@ -514,7 +514,7 @@ pub fn error_policy(_obj: Arc, error: &Error, _ctx: Arc) -> controlle /// Should only be used for [`NodePort`](`ServiceType::NodePort`) [`Listener`]s. async fn node_names_for_nodeport_listener( client: &stackable_operator::client::Client, - listener: &Listener, + listener: &v1alpha1::Listener, namespace: &str, service_name: &str, ) -> Result> { @@ -594,7 +594,7 @@ pub enum ListenerMountedPodLabelError { /// /// Listener-Op's CSI Node driver is responsible for adding this to the relevant [`Pod`]s. pub fn listener_mounted_pod_label( - listener: &Listener, + listener: &v1alpha1::Listener, ) -> Result<(String, String), ListenerMountedPodLabelError> { use listener_mounted_pod_label_error::*; let uid = listener.metadata.uid.as_deref().context(NoUidSnafu)?; @@ -625,7 +625,7 @@ const PV_LABEL_LISTENER_NAME: &str = "listeners.stackable.tech/listener-name"; /// A label that identifies which [`Listener`] corresponds to a given [`PersistentVolume`]. pub fn listener_persistent_volume_label( - listener: &Listener, + listener: &v1alpha1::Listener, ) -> Result, ListenerPersistentVolumeLabelError> { use listener_persistent_volume_label_error::*; Ok([ diff --git a/rust/operator-binary/src/main.rs b/rust/operator-binary/src/main.rs index e7cc7f5..42be31a 100644 --- a/rust/operator-binary/src/main.rs +++ b/rust/operator-binary/src/main.rs @@ -10,8 +10,9 @@ use csi_server::{ }; use futures::{FutureExt, TryStreamExt, pin_mut}; use stackable_operator::{ - self, CustomResourceExt, - commons::listener::{Listener, ListenerClass, PodListeners}, + self, YamlSchema, + crd::listener::{Listener, ListenerClass, PodListeners}, + shared::yaml::SerializeOptions, telemetry::{Tracing, tracing::TelemetryOptions}, utils::cluster_info::KubernetesClusterInfoOpts, }; @@ -70,9 +71,12 @@ async fn main() -> anyhow::Result<()> { let opts = Opts::parse(); match opts.cmd { stackable_operator::cli::Command::Crd => { - ListenerClass::print_yaml_schema(built_info::PKG_VERSION)?; - Listener::print_yaml_schema(built_info::PKG_VERSION)?; - PodListeners::print_yaml_schema(built_info::PKG_VERSION)?; + ListenerClass::merged_crd(ListenerClass::V1Alpha1)? + .print_yaml_schema(built_info::PKG_VERSION, SerializeOptions::default())?; + Listener::merged_crd(Listener::V1Alpha1)? + .print_yaml_schema(built_info::PKG_VERSION, SerializeOptions::default())?; + PodListeners::merged_crd(PodListeners::V1Alpha1)? + .print_yaml_schema(built_info::PKG_VERSION, SerializeOptions::default())?; } stackable_operator::cli::Command::Run(ListenerOperatorRun { csi_endpoint, diff --git a/rust/operator-binary/src/utils/address.rs b/rust/operator-binary/src/utils/address.rs index f044680..445823d 100644 --- a/rust/operator-binary/src/utils/address.rs +++ b/rust/operator-binary/src/utils/address.rs @@ -1,4 +1,4 @@ -use stackable_operator::{commons::listener::AddressType, k8s_openapi::api::core::v1::Node}; +use stackable_operator::{crd::listener::v1alpha1, k8s_openapi::api::core::v1::Node}; /// The primary addresses of an entity, for each type of address. #[derive(Debug, Clone, Copy)] @@ -9,12 +9,15 @@ pub struct AddressCandidates<'a> { impl<'a> AddressCandidates<'a> { /// Tries to pick the preferred [`AddressType`], falling back if it is not available. - pub fn pick(&self, preferred_address_type: AddressType) -> Option<(&'a str, AddressType)> { - let ip = self.ip.zip(Some(AddressType::Ip)); - let hostname = self.hostname.zip(Some(AddressType::Hostname)); + pub fn pick( + &self, + preferred_address_type: v1alpha1::AddressType, + ) -> Option<(&'a str, v1alpha1::AddressType)> { + let ip = self.ip.zip(Some(v1alpha1::AddressType::Ip)); + let hostname = self.hostname.zip(Some(v1alpha1::AddressType::Hostname)); match preferred_address_type { - AddressType::Ip => ip.or(hostname), - AddressType::Hostname => hostname.or(ip), + v1alpha1::AddressType::Ip => ip.or(hostname), + v1alpha1::AddressType::Hostname => hostname.or(ip), } } } @@ -43,7 +46,7 @@ pub fn node_primary_addresses(node: &Node) -> AddressCandidates { #[cfg(test)] mod tests { use stackable_operator::{ - commons::listener::AddressType, + crd::listener::v1alpha1, k8s_openapi::api::core::v1::{Node, NodeAddress, NodeStatus}, }; @@ -54,12 +57,12 @@ mod tests { let node = node_from_addresses(vec![("InternalIP", "10.1.2.3"), ("ExternalIP", "1.2.3.4")]); let node_primary_address = node_primary_addresses(&node); assert_eq!( - node_primary_address.pick(AddressType::Ip), - Some(("1.2.3.4", AddressType::Ip)) + node_primary_address.pick(v1alpha1::AddressType::Ip), + Some(("1.2.3.4", v1alpha1::AddressType::Ip)) ); assert_eq!( - node_primary_address.pick(AddressType::Hostname), - Some(("1.2.3.4", AddressType::Ip)) + node_primary_address.pick(v1alpha1::AddressType::Hostname), + Some(("1.2.3.4", v1alpha1::AddressType::Ip)) ); } @@ -71,12 +74,12 @@ mod tests { ]); let node_primary_address = node_primary_addresses(&node); assert_eq!( - node_primary_address.pick(AddressType::Ip), - Some(("first-hostname", AddressType::Hostname)) + node_primary_address.pick(v1alpha1::AddressType::Ip), + Some(("first-hostname", v1alpha1::AddressType::Hostname)) ); assert_eq!( - node_primary_address.pick(AddressType::Hostname), - Some(("first-hostname", AddressType::Hostname)) + node_primary_address.pick(v1alpha1::AddressType::Hostname), + Some(("first-hostname", v1alpha1::AddressType::Hostname)) ); } @@ -89,12 +92,12 @@ mod tests { ]); let node_primary_address = node_primary_addresses(&node); assert_eq!( - node_primary_address.pick(AddressType::Ip), - Some(("1.2.3.4", AddressType::Ip)) + node_primary_address.pick(v1alpha1::AddressType::Ip), + Some(("1.2.3.4", v1alpha1::AddressType::Ip)) ); assert_eq!( - node_primary_address.pick(AddressType::Hostname), - Some(("node-0", AddressType::Hostname)) + node_primary_address.pick(v1alpha1::AddressType::Hostname), + Some(("node-0", v1alpha1::AddressType::Hostname)) ); }