From 4dcdafc79e1b21657514bd63282a5cfb5b054429 Mon Sep 17 00:00:00 2001 From: Sebastian Bernauer Date: Tue, 1 Oct 2024 09:13:45 +0200 Subject: [PATCH] chore: Update to operator-rs 0.80.0 --- CHANGELOG.md | 1 + Cargo.lock | 459 +++++---- Cargo.nix | 905 ++++++++++++------ Cargo.toml | 2 +- crate-hashes.json | 4 +- deploy/helm/spark-k8s-operator/crds/crds.yaml | 102 +- rust/crd/src/history.rs | 33 +- rust/crd/src/lib.rs | 63 +- rust/crd/src/s3logdir.rs | 201 ++-- rust/crd/src/tlscerts.rs | 26 +- .../src/history/history_controller.rs | 83 +- .../src/spark_k8s_controller.rs | 293 +++--- 12 files changed, 1317 insertions(+), 855 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b1171d3b..1e449409 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ All notable changes to this project will be documented in this file. ### Fixed +- BREAKING: The fields `connection` and `host` on `S3Connection` as well as `bucketName` on `S3Bucket`are now mandatory ([#XXX]). - Fix `envOverrides` for SparkApplication and SparkHistoryServer ([#451]). - Ensure SparkApplications can only create a single submit Job. Fix for #457 ([#460]). diff --git a/Cargo.lock b/Cargo.lock index a010f65b..90b76cf7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,18 +4,18 @@ version = 3 [[package]] name = "addr2line" -version = "0.22.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" +checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375" dependencies = [ "gimli", ] [[package]] -name = "adler" -version = "1.0.2" +name = "adler2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] name = "ahash" @@ -96,7 +96,7 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" dependencies = [ - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -106,14 +106,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" dependencies = [ "anstyle", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] name = "anyhow" -version = "1.0.86" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" [[package]] name = "async-broadcast" @@ -146,25 +146,25 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] name = "async-trait" -version = "0.1.81" +version = "0.1.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "backoff" @@ -179,17 +179,17 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.73" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", - "cc", "cfg-if", "libc", "miniz_oxide", "object", "rustc-demangle", + "windows-targets", ] [[package]] @@ -264,18 +264,19 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.1" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" +checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" [[package]] name = "cc" -version = "1.1.10" +version = "1.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9e8aabfac534be767c909e0690571677d49f41bd8465ae876fe043d52ba5292" +checksum = "3bbb537bb4a30b90362caddba8f360c0a56bc13d3a5570028e7197204cb54a17" dependencies = [ "jobserver", "libc", + "shlex", ] [[package]] @@ -299,9 +300,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.15" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d8838454fda655dafd3accb2b6e2bea645b9e4078abe84a22ceb947235c5cc" +checksum = "b0956a43b323ac1afaffc053ed5c4b7c1f1800bacd1683c353aabbb752515dd3" dependencies = [ "clap_builder", "clap_derive", @@ -309,9 +310,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.15" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "216aec2b177652e3846684cbfe25c9964d18ec45234f0f5da5157b207ed1aab6" +checksum = "4d72166dd41634086d5803a47eb71ae740e61d84709c36f3c34110173db3961b" dependencies = [ "anstream", "anstyle", @@ -321,14 +322,14 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.13" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" +checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -354,18 +355,18 @@ dependencies = [ [[package]] name = "const_format" -version = "0.2.32" +version = "0.2.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3a214c7af3d04997541b18d432afaff4c455e79e2029079647e72fc2bd27673" +checksum = "50c655d81ff1114fb0dcdea9225ea9f0cc712a6f8d189378e82bdf62a473a64b" dependencies = [ "const_format_proc_macros", ] [[package]] name = "const_format_proc_macros" -version = "0.2.32" +version = "0.2.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7f6ff08fd20f4f299298a28e2dfa8a8ba1036e6cd2460ac1de7b425d76f2500" +checksum = "eff1a44b93f47b1bac19a27932f5c591e43d1ba357ee4f61526c8a25603f0eb1" dependencies = [ "proc-macro2", "quote", @@ -390,9 +391,9 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" dependencies = [ "libc", ] @@ -443,7 +444,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -454,18 +455,18 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] name = "delegate" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e018fccbeeb50ff26562ece792ed06659b9c2dae79ece77c4456bb10d9bf79b" +checksum = "5060bb0febb73fa907273f8a7ed17ab4bf831d585eac835b28ec24a1e2460956" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -582,8 +583,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "531e46835a22af56d1e3b66f04844bed63158bc094a628bec1d321d9b4c44bf2" dependencies = [ "bit-set", - "regex-automata 0.4.7", - "regex-syntax 0.8.4", + "regex-automata 0.4.8", + "regex-syntax 0.8.5", ] [[package]] @@ -672,7 +673,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -735,9 +736,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.29.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" +checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" [[package]] name = "git2" @@ -810,7 +811,7 @@ version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" dependencies = [ - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -849,9 +850,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.9.4" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" [[package]] name = "httpdate" @@ -892,7 +893,7 @@ dependencies = [ "hyper-rustls", "hyper-util", "pin-project-lite", - "rustls-native-certs", + "rustls-native-certs 0.7.3", "tokio", "tokio-rustls", "tower-service", @@ -900,9 +901,9 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.2" +version = "0.27.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" +checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" dependencies = [ "futures-util", "http", @@ -910,7 +911,7 @@ dependencies = [ "hyper-util", "log", "rustls", - "rustls-native-certs", + "rustls-native-certs 0.8.0", "rustls-pki-types", "tokio", "tokio-rustls", @@ -932,9 +933,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.7" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde7055719c54e36e95e8719f95883f22072a48ede39db7fc17a4e1d5281e9b9" +checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" dependencies = [ "bytes", "futures-channel", @@ -945,16 +946,15 @@ dependencies = [ "pin-project-lite", "socket2", "tokio", - "tower", "tower-service", "tracing", ] [[package]] name = "iana-time-zone" -version = "0.1.60" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -991,9 +991,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.3.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3fc2e30ba82dd1b3911c8de1ffc143c74a914a14e99514d7637e3099df5ea0" +checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" dependencies = [ "equivalent", "hashbrown", @@ -1054,9 +1054,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" dependencies = [ "wasm-bindgen", ] @@ -1101,9 +1101,9 @@ dependencies = [ [[package]] name = "k8s-openapi" -version = "0.22.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19501afb943ae5806548bc3ebd7f3374153ca057a38f480ef30adfde5ef09755" +checksum = "9c8847402328d8301354c94d605481f25a6bdc1ed65471fd96af8eca71141b13" dependencies = [ "base64 0.22.1", "chrono", @@ -1115,9 +1115,9 @@ dependencies = [ [[package]] name = "kube" -version = "0.93.1" +version = "0.95.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0365920075af1a2d23619c1ca801c492f2400157de42627f041a061716e76416" +checksum = "fa21063c854820a77c5d7f8deeb7ffa55246d8304e4bcd8cce2956752c6604f8" dependencies = [ "k8s-openapi", "kube-client", @@ -1128,9 +1128,9 @@ dependencies = [ [[package]] name = "kube-client" -version = "0.93.1" +version = "0.95.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d81336eb3a5b10a40c97a5a97ad66622e92bad942ce05ee789edd730aa4f8603" +checksum = "31c2355f5c9d8a11900e71a6fe1e47abd5ec45bf971eb4b162ffe97b46db9bb7" dependencies = [ "base64 0.22.1", "bytes", @@ -1166,9 +1166,9 @@ dependencies = [ [[package]] name = "kube-core" -version = "0.93.1" +version = "0.95.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cce373a74d787d439063cdefab0f3672860bd7bac01a38e39019177e764a0fe6" +checksum = "f3030bd91c9db544a50247e7d48d7db9cf633c172732dce13351854526b1e666" dependencies = [ "chrono", "form_urlencoded", @@ -1177,28 +1177,29 @@ dependencies = [ "k8s-openapi", "schemars", "serde", + "serde-value", "serde_json", "thiserror", ] [[package]] name = "kube-derive" -version = "0.93.1" +version = "0.95.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04a26c9844791e127329be5dce9298b03f9e2ff5939076d5438c92dea5eb78f2" +checksum = "fa98be978eddd70a773aa8e86346075365bfb7eb48783410852dbf7cb57f0c27" dependencies = [ "darling", "proc-macro2", "quote", "serde_json", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] name = "kube-runtime" -version = "0.93.1" +version = "0.95.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b84733c0fed6085c9210b43ffb96248676c1e800d0ba38d15043275a792ffa4" +checksum = "5895cb8aa641ac922408f128b935652b34c2995f16ad7db0984f6caa50217914" dependencies = [ "ahash", "async-broadcast", @@ -1230,9 +1231,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.155" +version = "0.2.159" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" [[package]] name = "libgit2-sys" @@ -1248,9 +1249,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.18" +version = "1.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c15da26e5af7e25c90b37a2d75cdbf940cf4a55316de9d84c679c9b8bfabf82e" +checksum = "d2d16453e800a8cf6dd2fc3eb4bc99b786a9b90c663b8559a5b1a041bf89e472" dependencies = [ "cc", "libc", @@ -1297,11 +1298,11 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "miniz_oxide" -version = "0.7.4" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" dependencies = [ - "adler", + "adler2", ] [[package]] @@ -1313,7 +1314,7 @@ dependencies = [ "hermit-abi", "libc", "wasi", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -1353,18 +1354,21 @@ dependencies = [ [[package]] name = "object" -version = "0.36.3" +version = "0.36.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27b64972346851a39438c60b341ebc01bba47464ae329e55cf343eb93964efd9" +checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "82881c4be219ab5faaf2ad5e5e5ecdff8c66bd7402ca3160975c93b24961afd1" +dependencies = [ + "portable-atomic", +] [[package]] name = "openssl-probe" @@ -1422,7 +1426,7 @@ dependencies = [ "lazy_static", "once_cell", "opentelemetry", - "ordered-float 4.2.2", + "ordered-float 4.3.0", "percent-encoding", "rand", "thiserror", @@ -1441,9 +1445,9 @@ dependencies = [ [[package]] name = "ordered-float" -version = "4.2.2" +version = "4.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a91171844676f8c7990ce64959210cd2eaef32c2612c50f9fae9f8aaa6065a6" +checksum = "44d501f1a72f71d3c063a6bbc8f7271fa73aa09fe5d6283b6571e2ed176a2537" dependencies = [ "num-traits", ] @@ -1456,9 +1460,9 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "parking" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" @@ -1501,9 +1505,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.11" +version = "2.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd53dff83f26735fdc1ca837098ccf133605d794cdae66acfc2bfac3ec809d95" +checksum = "fdbef9d1d47087a895abd220ed25eb4ad973a5e26f6a4367b038c25e28dfc2d9" dependencies = [ "memchr", "thiserror", @@ -1512,9 +1516,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.7.11" +version = "2.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a548d2beca6773b1c244554d36fcf8548a8a58e74156968211567250e48e49a" +checksum = "4d3a6e3394ec80feb3b6393c725571754c6188490265c61aaf260810d6b95aa0" dependencies = [ "pest", "pest_generator", @@ -1522,22 +1526,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.11" +version = "2.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c93a82e8d145725dcbaf44e5ea887c8a869efdcc28706df2d08c69e17077183" +checksum = "94429506bde1ca69d1b5601962c73f4172ab4726571a59ea95931218cb0e930e" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] name = "pest_meta" -version = "2.7.11" +version = "2.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a941429fea7e08bedec25e4f6785b6ffaacc6b755da98df5ef3e7dcf4a124c4f" +checksum = "ac8a071862e93690b6e34e9a5fb8e33ff3734473ac0245b27232222c4906a33f" dependencies = [ "once_cell", "pest", @@ -1561,7 +1565,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -1578,9 +1582,15 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" + +[[package]] +name = "portable-atomic" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" [[package]] name = "powerfmt" @@ -1599,9 +1609,9 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" dependencies = [ "toml_edit", ] @@ -1627,15 +1637,15 @@ dependencies = [ "serde", "serde_json", "serde_yaml", - "snafu 0.8.4", + "snafu 0.8.5", "xml-rs", ] [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -1672,23 +1682,23 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.3" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" dependencies = [ "bitflags 2.6.0", ] [[package]] name = "regex" -version = "1.10.6" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.7", - "regex-syntax 0.8.4", + "regex-automata 0.4.8", + "regex-syntax 0.8.5", ] [[package]] @@ -1702,13 +1712,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.4", + "regex-syntax 0.8.5", ] [[package]] @@ -1719,9 +1729,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "relative-path" @@ -1741,7 +1751,7 @@ dependencies = [ "libc", "spin", "untrusted", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -1770,7 +1780,7 @@ dependencies = [ "regex", "relative-path", "rustc_version", - "syn 2.0.74", + "syn 2.0.79", "unicode-ident", ] @@ -1782,18 +1792,18 @@ checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc_version" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ "semver", ] [[package]] name = "rustls" -version = "0.23.12" +version = "0.23.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" +checksum = "f2dabaac7466917e566adb06783a81ca48944c6898a1b08b9374106dd671f4c8" dependencies = [ "log", "once_cell", @@ -1806,9 +1816,22 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.7.1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5" +dependencies = [ + "openssl-probe", + "rustls-pemfile", + "rustls-pki-types", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-native-certs" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a88d6d420651b496bdd98684116959239430022a115c1240e6c3993be0b15fba" +checksum = "fcaf18a4f2be7326cd874a5fa579fae794320a0f388d365dca7e480e55f83f8a" dependencies = [ "openssl-probe", "rustls-pemfile", @@ -1819,25 +1842,24 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "2.1.3" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" dependencies = [ - "base64 0.22.1", "rustls-pki-types", ] [[package]] name = "rustls-pki-types" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" +checksum = "0e696e35370c65c9c541198af4543ccd580cf17fc25d8e05c5a242b202488c55" [[package]] name = "rustls-webpki" -version = "0.102.6" +version = "0.102.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" dependencies = [ "ring", "rustls-pki-types", @@ -1858,11 +1880,11 @@ checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "schannel" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" dependencies = [ - "windows-sys", + "windows-sys 0.59.0", ] [[package]] @@ -1887,7 +1909,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -1921,9 +1943,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.1" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" +checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" dependencies = [ "core-foundation-sys", "libc", @@ -1937,9 +1959,9 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.206" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b3e4cd94123dd520a128bcd11e34d9e9e423e7e3e50425cb1b4b1e3549d0284" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" dependencies = [ "serde_derive", ] @@ -1956,13 +1978,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.206" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fabfb6138d2383ea8208cf98ccf69cdfb1aff4088460681d84189aa259762f97" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -1973,14 +1995,14 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] name = "serde_json" -version = "1.0.124" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66ad62847a56b3dba58cc891acd13884b9c61138d330c0d7b6181713d4fce38d" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" dependencies = [ "itoa", "memchr", @@ -2032,6 +2054,12 @@ dependencies = [ "lazy_static", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "signal-hook-registry" version = "1.4.2" @@ -2068,11 +2096,11 @@ dependencies = [ [[package]] name = "snafu" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b835cb902660db3415a672d862905e791e54d306c6e8189168c7f3d9ae1c79d" +checksum = "223891c85e2a29c3fe8fb900c1fae5e69c2e42415e3177752e8718475efa5019" dependencies = [ - "snafu-derive 0.8.4", + "snafu-derive 0.8.5", ] [[package]] @@ -2088,14 +2116,14 @@ dependencies = [ [[package]] name = "snafu-derive" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d1e02fca405f6280643174a50c942219f0bbf4dbf7d480f1dd864d6f211ae5" +checksum = "03c3c6b7927ffe7ecaa769ee0e3994da3b8cafc8f444578982c83ecb161af917" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -2105,7 +2133,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -2116,8 +2144,8 @@ checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" [[package]] name = "stackable-operator" -version = "0.74.0" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.74.0#c77a5423b66bc1667b63af7d8bec00de88a5303f" +version = "0.78.0" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.78.0#8b0172ded942499845ebf647ef1b17ccfc7bdbb3" dependencies = [ "chrono", "clap", @@ -2127,6 +2155,7 @@ dependencies = [ "dockerfile-parser", "either", "futures 0.3.30", + "indexmap", "json-patch", "k8s-openapi", "kube", @@ -2139,7 +2168,7 @@ dependencies = [ "serde", "serde_json", "serde_yaml", - "snafu 0.8.4", + "snafu 0.8.5", "stackable-operator-derive", "strum", "tokio", @@ -2153,12 +2182,12 @@ dependencies = [ [[package]] name = "stackable-operator-derive" version = "0.3.1" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.74.0#c77a5423b66bc1667b63af7d8bec00de88a5303f" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.78.0#8b0172ded942499845ebf647ef1b17ccfc7bdbb3" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -2172,7 +2201,7 @@ dependencies = [ "serde", "serde_json", "serde_yaml", - "snafu 0.8.4", + "snafu 0.8.5", "stackable-operator", "strum", "tracing", @@ -2191,7 +2220,7 @@ dependencies = [ "serde", "serde_json", "serde_yaml", - "snafu 0.8.4", + "snafu 0.8.5", "stackable-operator", "stackable-spark-k8s-crd", "strum", @@ -2225,7 +2254,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -2247,9 +2276,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.74" +version = "2.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fceb41e3d546d0bd83421d3409b1460cc7444cd389341a4c880fe7a042cb3d7" +checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" dependencies = [ "proc-macro2", "quote", @@ -2258,22 +2287,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.63" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.63" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -2356,9 +2385,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.39.2" +version = "1.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daa4fb1bc778bd6f04cbfc4bb2d06a7396a8f299dc33ea1900cedaa316f467b1" +checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" dependencies = [ "backtrace", "bytes", @@ -2369,7 +2398,7 @@ dependencies = [ "signal-hook-registry", "socket2", "tokio-macros", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -2380,7 +2409,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -2396,9 +2425,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" dependencies = [ "futures-core", "pin-project-lite", @@ -2407,9 +2436,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.11" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" dependencies = [ "bytes", "futures-core", @@ -2427,9 +2456,9 @@ checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" [[package]] name = "toml_edit" -version = "0.21.1" +version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ "indexmap", "toml_datetime", @@ -2474,15 +2503,15 @@ dependencies = [ [[package]] name = "tower-layer" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] name = "tower-service" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" @@ -2516,7 +2545,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -2615,9 +2644,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "ucd-trie" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" [[package]] name = "unicode-bidi" @@ -2627,24 +2656,24 @@ checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-normalization" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" dependencies = [ "tinyvec", ] [[package]] name = "unicode-xid" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "unsafe-libyaml" @@ -2711,34 +2740,35 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2746,22 +2776,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" [[package]] name = "web-time" @@ -2813,6 +2843,15 @@ dependencies = [ "windows-targets", ] +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets", +] + [[package]] name = "windows-targets" version = "0.52.6" @@ -2879,18 +2918,18 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.5.40" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" dependencies = [ "memchr", ] [[package]] name = "xml-rs" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "539a77ee7c0de333dcc6da69b177380a0b81e0dacfa4f7344c465a36871ee601" +checksum = "af4e2e2f7cba5a093896c1e150fbfe177d1883e7448200efb81d40b9d339ef26" [[package]] name = "zerocopy" @@ -2910,7 +2949,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] diff --git a/Cargo.nix b/Cargo.nix index aa0ba54d..a51be45a 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -85,9 +85,10 @@ rec { crates = { "addr2line" = rec { crateName = "addr2line"; - version = "0.22.0"; + version = "0.24.1"; edition = "2018"; - sha256 = "0y66f1sa27i9kvmlh76ynk60rxfrmkba9ja8x527h32wdb206ibf"; + crateBin = []; + sha256 = "0xfkfsk45dwps3jq4n5ikk7v15i6g51cpnnivxgl1ga28j71vyzm"; dependencies = [ { name = "gimli"; @@ -97,28 +98,29 @@ rec { } ]; features = { + "all" = [ "bin" ]; "alloc" = [ "dep:alloc" ]; + "bin" = [ "loader" "rustc-demangle" "cpp_demangle" "smallvec" "dep:clap" ]; "compiler_builtins" = [ "dep:compiler_builtins" ]; "core" = [ "dep:core" ]; "cpp_demangle" = [ "dep:cpp_demangle" ]; - "default" = [ "rustc-demangle" "cpp_demangle" "std-object" "fallible-iterator" "smallvec" "memmap2" ]; + "default" = [ "rustc-demangle" "cpp_demangle" "loader" "fallible-iterator" "smallvec" ]; "fallible-iterator" = [ "dep:fallible-iterator" ]; - "memmap2" = [ "dep:memmap2" ]; - "object" = [ "dep:object" ]; + "loader" = [ "std" "dep:object" "dep:memmap2" "dep:typed-arena" ]; "rustc-demangle" = [ "dep:rustc-demangle" ]; "rustc-dep-of-std" = [ "core" "alloc" "compiler_builtins" "gimli/rustc-dep-of-std" ]; "smallvec" = [ "dep:smallvec" ]; "std" = [ "gimli/std" ]; - "std-object" = [ "std" "object" "object/std" "object/compression" "gimli/endian-reader" ]; }; }; - "adler" = rec { - crateName = "adler"; - version = "1.0.2"; - edition = "2015"; - sha256 = "1zim79cvzd5yrkzl3nyfx0avijwgk9fqv3yrscdy1cc79ih02qpj"; + "adler2" = rec { + crateName = "adler2"; + version = "2.0.0"; + edition = "2021"; + sha256 = "09r6drylvgy8vv8k20lnbvwq8gp09h7smfn6h1rxsy15pgh629si"; authors = [ "Jonas Schievink " + "oyvindln " ]; features = { "compiler_builtins" = [ "dep:compiler_builtins" ]; @@ -328,7 +330,7 @@ rec { dependencies = [ { name = "windows-sys"; - packageId = "windows-sys"; + packageId = "windows-sys 0.52.0"; target = { target, features }: (target."windows" or false); features = [ "Win32_System_Console" "Win32_Foundation" ]; } @@ -348,7 +350,7 @@ rec { } { name = "windows-sys"; - packageId = "windows-sys"; + packageId = "windows-sys 0.52.0"; target = { target, features }: (target."windows" or false); features = [ "Win32_System_Console" "Win32_Foundation" ]; } @@ -357,9 +359,9 @@ rec { }; "anyhow" = rec { crateName = "anyhow"; - version = "1.0.86"; + version = "1.0.89"; edition = "2018"; - sha256 = "1nk301x8qhpdaks6a9zvcp7yakjqnczjmqndbg7vk4494d3d1ldk"; + sha256 = "1xh1vg89n56h6nqikcmgbpmkixjds33492klrp9m96xrbmhgizc6"; authors = [ "David Tolnay " ]; @@ -446,7 +448,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.74"; + packageId = "syn 2.0.79"; features = [ "full" "visit-mut" ]; } ]; @@ -454,9 +456,9 @@ rec { }; "async-trait" = rec { crateName = "async-trait"; - version = "0.1.81"; + version = "0.1.83"; edition = "2021"; - sha256 = "01w10ad3984czxrmc8ckdrabhmsv80aynfxibjnqwz1dr3f2h33f"; + sha256 = "1p8q8gm4fv2fdka8hwy2w3f8df7p5inixqi7rlmbnky3wmysw73j"; procMacro = true; libName = "async_trait"; authors = [ @@ -473,18 +475,18 @@ rec { } { name = "syn"; - packageId = "syn 2.0.74"; + packageId = "syn 2.0.79"; usesDefaultFeatures = false; - features = [ "full" "visit-mut" "parsing" "printing" "proc-macro" ]; + features = [ "full" "parsing" "printing" "proc-macro" "visit-mut" ]; } ]; }; "autocfg" = rec { crateName = "autocfg"; - version = "1.3.0"; + version = "1.4.0"; edition = "2015"; - sha256 = "1c3njkfzpil03k92q0mij5y1pkhhfr4j3bf0h53bgl2vs85lsjqc"; + sha256 = "09lz3by90d2hphbq56znag9v87gfpd9gb8nr82hll8z6x2nhprdc"; authors = [ "Josh Stone " ]; @@ -526,9 +528,9 @@ rec { }; "backtrace" = rec { crateName = "backtrace"; - version = "0.3.73"; + version = "0.3.74"; edition = "2021"; - sha256 = "02iffg2pkg5nc36pgml8il7f77s138hhjw9f9l56v5zqlilk5hjw"; + sha256 = "06pfif7nwx66qf2zaanc2fcq7m64i91ki9imw9xd3bnz5hrwp0ld"; authors = [ "The Rust Project Developers" ]; @@ -566,11 +568,10 @@ rec { name = "rustc-demangle"; packageId = "rustc-demangle"; } - ]; - buildDependencies = [ { - name = "cc"; - packageId = "cc"; + name = "windows-targets"; + packageId = "windows-targets"; + target = { target, features }: (target."windows" or false); } ]; features = { @@ -578,8 +579,6 @@ rec { "default" = [ "std" ]; "serde" = [ "dep:serde" ]; "serialize-serde" = [ "serde" ]; - "verify-winapi" = [ "winapi/dbghelp" "winapi/handleapi" "winapi/libloaderapi" "winapi/memoryapi" "winapi/minwindef" "winapi/processthreadsapi" "winapi/synchapi" "winapi/tlhelp32" "winapi/winbase" "winapi/winnt" "winapi/winnls" "winapi/stringapiset" ]; - "winapi" = [ "dep:winapi" ]; }; resolvedDefaultFeatures = [ "default" "std" ]; }; @@ -761,9 +760,9 @@ rec { }; "bytes" = rec { crateName = "bytes"; - version = "1.7.1"; + version = "1.7.2"; edition = "2018"; - sha256 = "0l5sf69avjxcw41cznyzxsnymwmkpmk08q0sm7fgicvvn0ysa643"; + sha256 = "1wzs7l57iwqmrszdpr2mmqf1b1hgvpxafc30imxhnry0zfl9m3a2"; authors = [ "Carl Lerche " "Sean McArthur " @@ -776,9 +775,9 @@ rec { }; "cc" = rec { crateName = "cc"; - version = "1.1.10"; + version = "1.1.23"; edition = "2018"; - sha256 = "14jjp993s17yfvl5linq3gs4jzb7f42nkq09r5kyfjskmjzsms79"; + sha256 = "05sanm6215viiq170m9s7p0np9f0c3rsinxd5hv902x3nixm7frv"; authors = [ "Alex Crichton " ]; @@ -796,6 +795,10 @@ rec { usesDefaultFeatures = false; target = { target, features }: (target."unix" or false); } + { + name = "shlex"; + packageId = "shlex"; + } ]; features = { "parallel" = [ "dep:libc" "dep:jobserver" ]; @@ -880,10 +883,10 @@ rec { }; "clap" = rec { crateName = "clap"; - version = "4.5.15"; + version = "4.5.18"; edition = "2021"; crateBin = []; - sha256 = "1k656mr99srcla2bx2h7wjwlb9mywavb5k1szpd5b9pxaj287n0i"; + sha256 = "1lsxa59bgfxaag1q65ndp801h7vw9dffsly0zzx1mb13nd1nm5dh"; dependencies = [ { name = "clap_builder"; @@ -921,9 +924,9 @@ rec { }; "clap_builder" = rec { crateName = "clap_builder"; - version = "4.5.15"; + version = "4.5.18"; edition = "2021"; - sha256 = "1dmas5z20yqmlmfhykr38pn1hkcnr4jzxjw4cs2f6lkn2wmyqsi1"; + sha256 = "06wnncyif421qgrkd73hhhfych773avpx903b1nhhd0nsinicwjd"; dependencies = [ { name = "anstream"; @@ -960,9 +963,9 @@ rec { }; "clap_derive" = rec { crateName = "clap_derive"; - version = "4.5.13"; + version = "4.5.18"; edition = "2021"; - sha256 = "1860xq3rbgwsqwcj9rd14cky9iiywwx86j7fvvngdjixbyfka7ah"; + sha256 = "1ardb26bvcpg72q9myr7yir3a8c83gx7vxk1cccabsd9n73s1ija"; procMacro = true; dependencies = [ { @@ -979,7 +982,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.74"; + packageId = "syn 2.0.79"; features = [ "full" ]; } ]; @@ -1030,9 +1033,9 @@ rec { }; "const_format" = rec { crateName = "const_format"; - version = "0.2.32"; + version = "0.2.33"; edition = "2021"; - sha256 = "0wvns8mzqwkyciwr00p2g5g4ak7zz8m473di85srj11xmz3i98p3"; + sha256 = "0jx6ffj65prbx1w9664ddwm73k7hm5g25afyvjq4y4gi3zc5bijh"; authors = [ "rodrimati1992 " ]; @@ -1062,9 +1065,9 @@ rec { }; "const_format_proc_macros" = rec { crateName = "const_format_proc_macros"; - version = "0.2.32"; + version = "0.2.33"; edition = "2021"; - sha256 = "0015dzbjbd773nn6096dwqv11fm8m3gy4a4a56cz5x10zl4gzxn7"; + sha256 = "1c8f7xh2b2kca9hlzvjplcdkvr4iqpsk4yd236n1nyzljd5s9wgg"; procMacro = true; authors = [ "rodrimati1992 " @@ -1139,9 +1142,9 @@ rec { }; "cpufeatures" = rec { crateName = "cpufeatures"; - version = "0.2.12"; + version = "0.2.14"; edition = "2018"; - sha256 = "012m7rrak4girqlii3jnqwrr73gv1i980q4wra5yyyhvzwk5xzjk"; + sha256 = "1q3qd9qkw94vs7n5i0y3zz2cqgzcxvdgyb54ryngwmjhfbgrg1k0"; authors = [ "RustCrypto Developers" ]; @@ -1283,7 +1286,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.74"; + packageId = "syn 2.0.79"; features = [ "full" "extra-traits" ]; } ]; @@ -1313,16 +1316,16 @@ rec { } { name = "syn"; - packageId = "syn 2.0.74"; + packageId = "syn 2.0.79"; } ]; }; "delegate" = rec { crateName = "delegate"; - version = "0.12.0"; + version = "0.13.0"; edition = "2018"; - sha256 = "16zpkc6v2ss5qivwx7p7vb1bjnb6s0p7kkifaqkgyl7bpv68y0af"; + sha256 = "0mh98via297c51dq7b2yb0fq7gxlgb8px2iz4w3sjgxpxc7vnq2h"; procMacro = true; authors = [ "Godfrey Chan " @@ -1339,7 +1342,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.74"; + packageId = "syn 2.0.79"; features = [ "full" "visit-mut" ]; } ]; @@ -1635,13 +1638,13 @@ rec { } { name = "regex-automata"; - packageId = "regex-automata 0.4.7"; + packageId = "regex-automata 0.4.8"; usesDefaultFeatures = false; features = [ "alloc" "syntax" "meta" "nfa" "dfa" "hybrid" ]; } { name = "regex-syntax"; - packageId = "regex-syntax 0.8.4"; + packageId = "regex-syntax 0.8.5"; usesDefaultFeatures = false; } ]; @@ -1884,7 +1887,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.74"; + packageId = "syn 2.0.79"; features = [ "full" ]; } ]; @@ -2087,9 +2090,9 @@ rec { }; "gimli" = rec { crateName = "gimli"; - version = "0.29.0"; + version = "0.31.0"; edition = "2018"; - sha256 = "1zgzprnjaawmg6zyic4f2q2hc39kdhn116qnkqpgvsasgc3x9v20"; + sha256 = "0r1d55xdi1k2l5ah9p0n23i93pm47cl8apjm8rwgqd1j7yi5w21j"; features = { "default" = [ "read-all" "write" ]; "endian-reader" = [ "read" "dep:stable_deref_trait" ]; @@ -2287,7 +2290,7 @@ rec { dependencies = [ { name = "windows-sys"; - packageId = "windows-sys"; + packageId = "windows-sys 0.52.0"; target = { target, features }: (target."windows" or false); features = [ "Win32_Foundation" "Win32_UI_Shell" "Win32_System_Com" ]; } @@ -2384,9 +2387,9 @@ rec { }; "httparse" = rec { crateName = "httparse"; - version = "1.9.4"; + version = "1.9.5"; edition = "2018"; - sha256 = "1nc2s1pziq5ncl39xm7ybdhpnw5xsm505smqirr0py2v2550pk0g"; + sha256 = "0ip9v8m9lvgvq1lznl31wvn0ch1v254na7lhid9p29yx9rbx6wbx"; authors = [ "Sean McArthur " ]; @@ -2547,7 +2550,7 @@ rec { } { name = "rustls-native-certs"; - packageId = "rustls-native-certs"; + packageId = "rustls-native-certs 0.7.3"; optional = true; } { @@ -2598,9 +2601,9 @@ rec { }; "hyper-rustls" = rec { crateName = "hyper-rustls"; - version = "0.27.2"; + version = "0.27.3"; edition = "2021"; - sha256 = "0ma1wyfnqnkz7zyr7wpply3xfvlijd0rqqhb6ajs28c9jhnbxr2y"; + sha256 = "0cxkph8hsmbz693a8ih2ciy7h0xbac844rpm981y6c0iqfsxpbq8"; libName = "hyper_rustls"; dependencies = [ { @@ -2635,7 +2638,7 @@ rec { } { name = "rustls-native-certs"; - packageId = "rustls-native-certs"; + packageId = "rustls-native-certs 0.8.0"; optional = true; } { @@ -2742,9 +2745,9 @@ rec { }; "hyper-util" = rec { crateName = "hyper-util"; - version = "0.1.7"; + version = "0.1.9"; edition = "2021"; - sha256 = "1fg9h591skksq5zxnffyisj7487jhdcgj6c7bvlkckn535bhbryd"; + sha256 = "12yhradh0bpwa9jjyyq6shrrcx9fxbdkrq06xj7ccfhqkyq6waa1"; libName = "hyper_util"; authors = [ "Sean McArthur " @@ -2792,13 +2795,6 @@ rec { optional = true; usesDefaultFeatures = false; } - { - name = "tower"; - packageId = "tower"; - optional = true; - usesDefaultFeatures = false; - features = [ "make" "util" ]; - } { name = "tower-service"; packageId = "tower-service"; @@ -2829,24 +2825,24 @@ rec { } ]; features = { - "client" = [ "hyper/client" "dep:tracing" "dep:futures-channel" "dep:tower" "dep:tower-service" ]; + "client" = [ "hyper/client" "dep:tracing" "dep:futures-channel" "dep:tower-service" ]; "client-legacy" = [ "client" "dep:socket2" "tokio/sync" ]; "full" = [ "client" "client-legacy" "server" "server-auto" "server-graceful" "service" "http1" "http2" "tokio" ]; "http1" = [ "hyper/http1" ]; "http2" = [ "hyper/http2" ]; "server" = [ "hyper/server" ]; "server-auto" = [ "server" "http1" "http2" ]; - "server-graceful" = [ "server" "tokio/sync" ]; - "service" = [ "dep:tower" "dep:tower-service" ]; + "server-graceful" = [ "server" "tokio/sync" "futures-util/alloc" ]; + "service" = [ "dep:tower-service" ]; "tokio" = [ "dep:tokio" "tokio/net" "tokio/rt" "tokio/time" ]; }; resolvedDefaultFeatures = [ "client" "client-legacy" "default" "http1" "tokio" ]; }; "iana-time-zone" = rec { crateName = "iana-time-zone"; - version = "0.1.60"; + version = "0.1.61"; edition = "2018"; - sha256 = "0hdid5xz3jznm04lysjm3vi93h3c523w0hcc3xba47jl3ddbpzz7"; + sha256 = "085jjsls330yj1fnwykfzmb2f10zp6l7w4fhq81ng81574ghhpi3"; libName = "iana_time_zone"; authors = [ "Andrew Straw " @@ -2872,12 +2868,12 @@ rec { { name = "js-sys"; packageId = "js-sys"; - target = { target, features }: ("wasm32" == target."arch" or null); + target = { target, features }: (("wasm32" == target."arch" or null) && ("unknown" == target."os" or null)); } { name = "wasm-bindgen"; packageId = "wasm-bindgen"; - target = { target, features }: ("wasm32" == target."arch" or null); + target = { target, features }: (("wasm32" == target."arch" or null) && ("unknown" == target."os" or null)); } { name = "windows-core"; @@ -2945,9 +2941,9 @@ rec { }; "indexmap" = rec { crateName = "indexmap"; - version = "2.3.0"; + version = "2.5.0"; edition = "2021"; - sha256 = "182yvyck0zk3swa9bs8l9a8lmis3q7zy338wj6rx2bd81giw4gyy"; + sha256 = "1r87dlvyg04fa9m4m6pkvwsdx54rx471fas66qff40bk5ym01fb8"; dependencies = [ { name = "equivalent"; @@ -3087,9 +3083,9 @@ rec { }; "js-sys" = rec { crateName = "js-sys"; - version = "0.3.69"; - edition = "2018"; - sha256 = "0v99rz97asnzapb0jsc3jjhvxpfxr7h7qd97yqyrf9i7viimbh99"; + version = "0.3.70"; + edition = "2021"; + sha256 = "0yp3rz7vrn9mmqdpkds426r1p9vs6i8mkxx8ryqdfadr0s2q0s0q"; libName = "js_sys"; authors = [ "The wasm-bindgen Developers" @@ -3223,10 +3219,10 @@ rec { }; "k8s-openapi" = rec { crateName = "k8s-openapi"; - version = "0.22.0"; + version = "0.23.0"; edition = "2021"; - links = "k8s-openapi-0.22.0"; - sha256 = "0mcpy1gdxpqayc74i3x3ayh3q5bl6dzvsgmw91jq1r9sjkxill0r"; + links = "k8s-openapi-0.23.0"; + sha256 = "04qv2iqwm3mgjvyp2m6n3vf6nnpjh5a60kf9ah9k1n184d04g24w"; libName = "k8s_openapi"; authors = [ "Arnav Singh " @@ -3268,17 +3264,17 @@ rec { } ]; features = { - "earliest" = [ "v1_24" ]; - "latest" = [ "v1_30" ]; + "earliest" = [ "v1_26" ]; + "latest" = [ "v1_31" ]; "schemars" = [ "dep:schemars" ]; }; - resolvedDefaultFeatures = [ "schemars" "v1_30" ]; + resolvedDefaultFeatures = [ "schemars" "v1_31" ]; }; "kube" = rec { crateName = "kube"; - version = "0.93.1"; + version = "0.95.0"; edition = "2021"; - sha256 = "05k4wwb1f1hs0izn4hnyaw0l1wljqh0sh74wc4ijs6mgfl094r83"; + sha256 = "1y04cqn7ami9rs6csjsf63c4clm5zyvyx3bzbmyaf828hly0c8gs"; authors = [ "clux " "Natalie Klestrup Röijezon " @@ -3321,34 +3317,35 @@ rec { ]; 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" ]; "derive" = [ "kube-derive" "kube-core/schema" ]; - "gzip" = [ "kube-client/gzip" ]; - "http-proxy" = [ "kube-client/http-proxy" ]; + "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" ]; - "oidc" = [ "kube-client/oidc" ]; - "openssl-tls" = [ "kube-client/openssl-tls" ]; + "oauth" = [ "kube-client/oauth" "client" ]; + "oidc" = [ "kube-client/oidc" "client" ]; + "openssl-tls" = [ "kube-client/openssl-tls" "client" ]; "runtime" = [ "kube-runtime" ]; - "rustls-tls" = [ "kube-client/rustls-tls" ]; - "socks5" = [ "kube-client/socks5" ]; - "unstable-client" = [ "kube-client/unstable-client" ]; - "unstable-runtime" = [ "kube-runtime/unstable-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" ]; "ws" = [ "kube-client/ws" "kube-core/ws" ]; }; resolvedDefaultFeatures = [ "client" "config" "derive" "jsonpatch" "kube-client" "kube-derive" "kube-runtime" "runtime" "rustls-tls" ]; }; "kube-client" = rec { crateName = "kube-client"; - version = "0.93.1"; + version = "0.95.0"; edition = "2021"; - sha256 = "00w69ym31mzdi7kmxq1cjjnjps92cvb7mad5jw6a842v7bmkc4yq"; + sha256 = "1dwvvd37psgzcaqv87lppx2yrmdb8wggx9ki1s8132lxbigkbhii"; libName = "kube_client"; authors = [ "clux " @@ -3539,6 +3536,7 @@ rec { features = { "__non_core" = [ "tracing" "serde_yaml" "base64" ]; "admission" = [ "kube-core/admission" ]; + "aws-lc-rs" = [ "rustls?/aws-lc-rs" ]; "base64" = [ "dep:base64" ]; "bytes" = [ "dep:bytes" ]; "chrono" = [ "dep:chrono" ]; @@ -3587,9 +3585,9 @@ rec { }; "kube-core" = rec { crateName = "kube-core"; - version = "0.93.1"; + version = "0.95.0"; edition = "2021"; - sha256 = "1rhg99v7w5qrj3ikh6n0pbbhp1kj6q7spvydcf846zbq9nkp7qyc"; + sha256 = "0rp6n4k4b1ai6ghxqci72wy67kxrgn6x9rs70ajl9dcx3kchn0zk"; libName = "kube_core"; authors = [ "clux " @@ -3631,6 +3629,10 @@ rec { packageId = "serde"; features = [ "derive" ]; } + { + name = "serde-value"; + packageId = "serde-value"; + } { name = "serde_json"; packageId = "serde_json"; @@ -3660,9 +3662,9 @@ rec { }; "kube-derive" = rec { crateName = "kube-derive"; - version = "0.93.1"; + version = "0.95.0"; edition = "2021"; - sha256 = "1wkqxfjxx4lc8gapd44kylprwgxhk29cwpdy55ri47kr8jc6r8h4"; + sha256 = "09qcgysprgrdhl838y28xfvvyrak0x367s5879vhmmyxisbvx67s"; procMacro = true; libName = "kube_derive"; authors = [ @@ -3689,7 +3691,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.74"; + packageId = "syn 2.0.79"; features = [ "extra-traits" ]; } ]; @@ -3697,9 +3699,9 @@ rec { }; "kube-runtime" = rec { crateName = "kube-runtime"; - version = "0.93.1"; + version = "0.95.0"; edition = "2021"; - sha256 = "197zjakpach42n6s62qdh0g6qrs8cawzyhqb474qaq7d1wy7711v"; + sha256 = "053r458alv2gk2q7vb8nbycw4d1bclsvja7i10j95b21ls5cp5aq"; libName = "kube_runtime"; authors = [ "clux " @@ -3831,9 +3833,9 @@ rec { }; "libc" = rec { crateName = "libc"; - version = "0.2.155"; + version = "0.2.159"; edition = "2015"; - sha256 = "0z44c53z54znna8n322k5iwg80arxxpdzjj5260pxxzc9a58icwp"; + sha256 = "1i9xpia0hn1y8dws7all8rqng6h3lc8ymlgslnljcvm376jrf7an"; authors = [ "The Rust Project Developers" ]; @@ -3891,10 +3893,10 @@ rec { }; "libz-sys" = rec { crateName = "libz-sys"; - version = "1.1.18"; + version = "1.1.20"; edition = "2018"; links = "z"; - sha256 = "0bpqmfzvijbrqs29vphnafjz834lpz6pabbsnf85rqppb9pa4pf1"; + sha256 = "0wp4i6zl385ilmcqafv61jwsk1mpk6yb8gpws9nwza00x19n9lfj"; libName = "libz_sys"; authors = [ "Alex Crichton " @@ -4030,17 +4032,17 @@ rec { }; "miniz_oxide" = rec { crateName = "miniz_oxide"; - version = "0.7.4"; - edition = "2018"; - sha256 = "024wv14aa75cvik7005s5y2nfc8zfidddbd7g55g7sjgnzfl18mq"; + version = "0.8.0"; + edition = "2021"; + sha256 = "1wadxkg6a6z4lr7kskapj5d8pxlx7cp1ifw4daqnkzqjxych5n72"; authors = [ "Frommi " "oyvindln " ]; dependencies = [ { - name = "adler"; - packageId = "adler"; + name = "adler2"; + packageId = "adler2"; usesDefaultFeatures = false; } ]; @@ -4049,7 +4051,7 @@ rec { "compiler_builtins" = [ "dep:compiler_builtins" ]; "core" = [ "dep:core" ]; "default" = [ "with-alloc" ]; - "rustc-dep-of-std" = [ "core" "alloc" "compiler_builtins" "adler/rustc-dep-of-std" ]; + "rustc-dep-of-std" = [ "core" "alloc" "compiler_builtins" "adler2/rustc-dep-of-std" ]; "simd" = [ "simd-adler32" ]; "simd-adler32" = [ "dep:simd-adler32" ]; }; @@ -4088,7 +4090,7 @@ rec { } { name = "windows-sys"; - packageId = "windows-sys"; + packageId = "windows-sys 0.52.0"; target = { target, features }: (target."windows" or false); features = [ "Wdk_Foundation" "Wdk_Storage_FileSystem" "Wdk_System_IO" "Win32_Foundation" "Win32_Networking_WinSock" "Win32_Storage_FileSystem" "Win32_System_IO" "Win32_System_WindowsProgramming" ]; } @@ -4185,9 +4187,9 @@ rec { }; "object" = rec { crateName = "object"; - version = "0.36.3"; + version = "0.36.4"; edition = "2018"; - sha256 = "1nggchwvjgilrxarwcmfcisa9fq1phg382y672aa6lb86ir4kdi7"; + sha256 = "02h7k38dwi8rndc3y81n6yjxijbss99p2jm9c0b6ak5c45c1lkq8"; dependencies = [ { name = "memchr"; @@ -4219,12 +4221,20 @@ rec { }; "once_cell" = rec { crateName = "once_cell"; - version = "1.19.0"; + version = "1.20.1"; edition = "2021"; - sha256 = "14kvw7px5z96dk4dwdm1r9cqhhy2cyj1l5n5b29mynbb8yr15nrz"; + sha256 = "1ldgc54v54swjxh33jh2fjynd37zrmg5wpmdyam5zaqrw95ir242"; authors = [ "Aleksey Kladov " ]; + dependencies = [ + { + name = "portable-atomic"; + packageId = "portable-atomic"; + optional = true; + usesDefaultFeatures = false; + } + ]; features = { "alloc" = [ "race" ]; "atomic-polyfill" = [ "critical-section" ]; @@ -4232,6 +4242,7 @@ rec { "default" = [ "std" ]; "parking_lot" = [ "dep:parking_lot_core" ]; "portable-atomic" = [ "dep:portable-atomic" ]; + "race" = [ "portable-atomic?/require-cas" ]; "std" = [ "alloc" ]; }; resolvedDefaultFeatures = [ "alloc" "default" "race" "std" ]; @@ -4435,7 +4446,7 @@ rec { } { name = "ordered-float"; - packageId = "ordered-float 4.2.2"; + packageId = "ordered-float 4.3.0"; } { name = "percent-encoding"; @@ -4523,11 +4534,11 @@ rec { }; resolvedDefaultFeatures = [ "default" "std" ]; }; - "ordered-float 4.2.2" = rec { + "ordered-float 4.3.0" = rec { crateName = "ordered-float"; - version = "4.2.2"; + version = "4.3.0"; edition = "2021"; - sha256 = "19k5c2m8m7xfkw7wa4i65krswbnd2299ar6fj1wqqvv78hc1g4aa"; + sha256 = "0dr5d8byvqkiclxjimp5kyh3m9qz4zvwifx6cg0d6w9glzqh3ma4"; libName = "ordered_float"; authors = [ "Jonathan Reem " @@ -4545,6 +4556,7 @@ rec { "borsh" = [ "dep:borsh" ]; "bytemuck" = [ "dep:bytemuck" ]; "default" = [ "std" ]; + "num-cmp" = [ "dep:num-cmp" ]; "proptest" = [ "dep:proptest" ]; "rand" = [ "dep:rand" ]; "randtest" = [ "rand/std" "rand/std_rng" ]; @@ -4572,9 +4584,9 @@ rec { }; "parking" = rec { crateName = "parking"; - version = "2.2.0"; + version = "2.2.1"; edition = "2018"; - sha256 = "1blwbkq6im1hfxp5wlbr475mw98rsyc0bbr2d5n16m38z253p0dv"; + sha256 = "1fnfgmzkfpjd69v4j9x737b1k8pnn054bvzcn5dm3pkgq595d3gk"; authors = [ "Stjepan Glavina " "The Rust Project Developers" @@ -4696,9 +4708,9 @@ rec { }; "pest" = rec { crateName = "pest"; - version = "2.7.11"; + version = "2.7.13"; edition = "2021"; - sha256 = "15cxh3nc7yibzjn6dbndjkbhadhkry60jdx83kf5ywr67zwdylyd"; + sha256 = "1nf2vwl5xhiqn1kl6skgwajp7naaxcjys86jmfasi1vhsk8zkgpx"; authors = [ "Dragoș Tiselice " ]; @@ -4722,6 +4734,7 @@ rec { features = { "default" = [ "std" "memchr" ]; "memchr" = [ "dep:memchr" ]; + "miette-error" = [ "std" "pretty-print" "dep:miette" "dep:thiserror" ]; "pretty-print" = [ "dep:serde" "dep:serde_json" ]; "std" = [ "ucd-trie/std" "dep:thiserror" ]; }; @@ -4729,9 +4742,9 @@ rec { }; "pest_derive" = rec { crateName = "pest_derive"; - version = "2.7.11"; + version = "2.7.13"; edition = "2021"; - sha256 = "16p49072arqm45l6j5blisjshj45rxpx6m254hf3nxx6xhmqsm1a"; + sha256 = "182sp7b10216mwdccr8296462k3mf5ap4g1rnsrzx07cjhrnwfjd"; procMacro = true; authors = [ "Dragoș Tiselice " @@ -4758,9 +4771,9 @@ rec { }; "pest_generator" = rec { crateName = "pest_generator"; - version = "2.7.11"; + version = "2.7.13"; edition = "2021"; - sha256 = "10vi0wbrxih85pghd1y2vkpnka68hyl5wkplpbf2amqlilpai4rw"; + sha256 = "03lk1v5ih4lkjpm5j6jp4r3snwj17z3n46b0np8nkjp1pl39ahll"; authors = [ "Dragoș Tiselice " ]; @@ -4784,7 +4797,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.74"; + packageId = "syn 2.0.79"; } ]; features = { @@ -4797,9 +4810,9 @@ rec { }; "pest_meta" = rec { crateName = "pest_meta"; - version = "2.7.11"; + version = "2.7.13"; edition = "2021"; - sha256 = "0ksc295cyz9yxzsqvaaxfmmwrapzns2nfksyqbgbw23yxagl4hd9"; + sha256 = "0gx30r4jq8ijfar4a0mcfd277wrzwfw5z6jfwfv90dp9c8c0g2mc"; authors = [ "Dragoș Tiselice " ]; @@ -4857,7 +4870,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.74"; + packageId = "syn 2.0.79"; features = [ "full" "visit-mut" ]; } ]; @@ -4884,15 +4897,28 @@ rec { }; "pkg-config" = rec { crateName = "pkg-config"; - version = "0.3.30"; - edition = "2015"; - sha256 = "1v07557dj1sa0aly9c90wsygc0i8xv5vnmyv0g94lpkvj8qb4cfj"; + version = "0.3.31"; + edition = "2018"; + sha256 = "1wk6yp2phl91795ia0lwkr3wl4a9xkrympvhqq8cxk4d75hwhglm"; libName = "pkg_config"; authors = [ "Alex Crichton " ]; }; + "portable-atomic" = rec { + crateName = "portable-atomic"; + version = "1.9.0"; + edition = "2018"; + sha256 = "1cmd87qj90panwsi350djb8lsxdryqkkxmimjcz7a1nsysini76c"; + libName = "portable_atomic"; + features = { + "critical-section" = [ "dep:critical-section" ]; + "default" = [ "fallback" ]; + "serde" = [ "dep:serde" ]; + }; + resolvedDefaultFeatures = [ "require-cas" ]; + }; "powerfmt" = rec { crateName = "powerfmt"; version = "0.2.0"; @@ -4930,9 +4956,9 @@ rec { }; "proc-macro-crate" = rec { crateName = "proc-macro-crate"; - version = "3.1.0"; + version = "3.2.0"; edition = "2021"; - sha256 = "110jcl9vnj92ihbhjqmkp19m8rzxc14a7i60knlmv99qlwfcadvd"; + sha256 = "0yzsqnavb3lmrcsmbrdjfrky9vcbl46v59xi9avn0796rb3likwf"; libName = "proc_macro_crate"; authors = [ "Bastian Köcher " @@ -5012,7 +5038,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.4"; + packageId = "snafu 0.8.5"; } { name = "xml-rs"; @@ -5023,9 +5049,9 @@ rec { }; "quote" = rec { crateName = "quote"; - version = "1.0.36"; + version = "1.0.37"; edition = "2018"; - sha256 = "19xcmh445bg6simirnnd4fvkmp6v2qiwxh5f6rw4a70h76pnm9qg"; + sha256 = "1brklraw2g34bxy9y4q1nbrccn7bv36ylihv12c9vlcii55x7fdm"; authors = [ "David Tolnay " ]; @@ -5142,9 +5168,9 @@ rec { }; "redox_syscall" = rec { crateName = "redox_syscall"; - version = "0.5.3"; - edition = "2018"; - sha256 = "1916m7abg9649gkif055pn5nsvqjhp70isy0v7gx1zgi01p8m41a"; + version = "0.5.7"; + edition = "2021"; + sha256 = "07vpgfr6a04k0x19zqr1xdlqm6fncik3zydbdi3f5g3l5k7zwvcv"; libName = "syscall"; authors = [ "Jeremy Soller " @@ -5157,14 +5183,16 @@ rec { ]; features = { "core" = [ "dep:core" ]; + "default" = [ "userspace" ]; "rustc-dep-of-std" = [ "core" "bitflags/rustc-dep-of-std" ]; }; + resolvedDefaultFeatures = [ "default" "userspace" ]; }; "regex" = rec { crateName = "regex"; - version = "1.10.6"; + version = "1.11.0"; edition = "2021"; - sha256 = "06cnlxwzyqfbw1za1i7ks89ns4i2kr0lpg5ykx56b8v7dd6df6a2"; + sha256 = "1n5imk7yxam409ik5nagsjpwqvbg3f0g0mznd5drf549x1g0w81q"; authors = [ "The Rust Project Developers" "Andrew Gallant " @@ -5184,13 +5212,13 @@ rec { } { name = "regex-automata"; - packageId = "regex-automata 0.4.7"; + packageId = "regex-automata 0.4.8"; usesDefaultFeatures = false; features = [ "alloc" "syntax" "meta" "nfa-pikevm" ]; } { name = "regex-syntax"; - packageId = "regex-syntax 0.8.4"; + packageId = "regex-syntax 0.8.5"; usesDefaultFeatures = false; } ]; @@ -5243,11 +5271,11 @@ rec { }; resolvedDefaultFeatures = [ "default" "regex-syntax" "std" ]; }; - "regex-automata 0.4.7" = rec { + "regex-automata 0.4.8" = rec { crateName = "regex-automata"; - version = "0.4.7"; + version = "0.4.8"; edition = "2021"; - sha256 = "1pwjdi4jckpbaivpl6x4v5g4crb37zr2wac93wlfsbzgqn6gbjiq"; + sha256 = "18wd530ndrmygi6xnz3sp345qi0hy2kdbsa89182nwbl6br5i1rn"; libName = "regex_automata"; authors = [ "The Rust Project Developers" @@ -5268,7 +5296,7 @@ rec { } { name = "regex-syntax"; - packageId = "regex-syntax 0.8.4"; + packageId = "regex-syntax 0.8.5"; optional = true; usesDefaultFeatures = false; } @@ -5319,11 +5347,11 @@ rec { }; resolvedDefaultFeatures = [ "default" "unicode" "unicode-age" "unicode-bool" "unicode-case" "unicode-gencat" "unicode-perl" "unicode-script" "unicode-segment" ]; }; - "regex-syntax 0.8.4" = rec { + "regex-syntax 0.8.5" = rec { crateName = "regex-syntax"; - version = "0.8.4"; + version = "0.8.5"; edition = "2021"; - sha256 = "16r0kjy20vx33dr4mhasj5l1f87czas714x2fz6zl0f8wwxa0rks"; + sha256 = "0p41p3hj9ww7blnbwbj9h7rwxzxg0c1hvrdycgys8rxyhqqw859b"; libName = "regex_syntax"; authors = [ "The Rust Project Developers" @@ -5388,7 +5416,7 @@ rec { } { name = "windows-sys"; - packageId = "windows-sys"; + packageId = "windows-sys 0.52.0"; target = { target, features }: (("aarch64" == target."arch" or null) && ("windows" == target."os" or null)); features = [ "Win32_Foundation" "Win32_System_Threading" ]; } @@ -5494,7 +5522,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.74"; + packageId = "syn 2.0.79"; features = [ "full" "parsing" "extra-traits" "visit" "visit-mut" ]; } { @@ -5531,13 +5559,9 @@ rec { }; "rustc_version" = rec { crateName = "rustc_version"; - version = "0.4.0"; + version = "0.4.1"; edition = "2018"; - sha256 = "0rpk9rcdk405xhbmgclsh4pai0svn49x35aggl4nhbkd4a2zb85z"; - authors = [ - "Dirkjan Ochtman " - "Marvin Löbel " - ]; + sha256 = "14lvdsmr5si5qbqzrajgb6vfn69k0sfygrvfvr2mps26xwi3mjyg"; dependencies = [ { name = "semver"; @@ -5548,9 +5572,9 @@ rec { }; "rustls" = rec { crateName = "rustls"; - version = "0.23.12"; + version = "0.23.13"; edition = "2021"; - sha256 = "0i5h0sw8j6bly8rilidb0snd5czpkyjhzqfcd890mz1f7628r3y5"; + sha256 = "1j7lf7b6s43ljf5v18cqd1698j6ah4x7h1nvd9b7x4b6fjnbmnpj"; dependencies = [ { name = "log"; @@ -5614,11 +5638,45 @@ rec { }; resolvedDefaultFeatures = [ "log" "logging" "ring" "std" "tls12" ]; }; - "rustls-native-certs" = rec { + "rustls-native-certs 0.7.3" = rec { crateName = "rustls-native-certs"; - version = "0.7.1"; + version = "0.7.3"; + edition = "2021"; + sha256 = "1r9ib5gwkfci2wbqnbh44nigvrfgxs4n1x89js82w97dxsab7gz5"; + libName = "rustls_native_certs"; + dependencies = [ + { + name = "openssl-probe"; + packageId = "openssl-probe"; + target = { target, features }: ((target."unix" or false) && (!("macos" == target."os" or null))); + } + { + name = "rustls-pemfile"; + packageId = "rustls-pemfile"; + } + { + name = "rustls-pki-types"; + packageId = "rustls-pki-types"; + rename = "pki-types"; + } + { + name = "schannel"; + packageId = "schannel"; + target = { target, features }: (target."windows" or false); + } + { + name = "security-framework"; + packageId = "security-framework"; + target = { target, features }: ("macos" == target."os" or null); + } + ]; + + }; + "rustls-native-certs 0.8.0" = rec { + crateName = "rustls-native-certs"; + version = "0.8.0"; edition = "2021"; - sha256 = "1fjzn7h3p6f3wr014p0i58131513b5li3146v6yrdd2i0r16v3d8"; + sha256 = "12izz1ahwj3yr9fkd39q1w535577z9wsapsahz6jcwxyyaj1ibzw"; libName = "rustls_native_certs"; dependencies = [ { @@ -5650,17 +5708,11 @@ rec { }; "rustls-pemfile" = rec { crateName = "rustls-pemfile"; - version = "2.1.3"; + version = "2.2.0"; edition = "2018"; - sha256 = "09bl873pkibmb2da49kkbm9jlagscjvzrv257q6k01p101my2vqr"; + sha256 = "0l3f3mrfkgdjrava7ibwzgwc4h3dljw3pdkbsi9rkwz3zvji9qyw"; libName = "rustls_pemfile"; dependencies = [ - { - name = "base64"; - packageId = "base64 0.22.1"; - usesDefaultFeatures = false; - features = [ "alloc" ]; - } { name = "rustls-pki-types"; packageId = "rustls-pki-types"; @@ -5669,15 +5721,15 @@ rec { ]; features = { "default" = [ "std" ]; - "std" = [ "base64/std" ]; + "std" = [ "pki-types/std" ]; }; resolvedDefaultFeatures = [ "default" "std" ]; }; "rustls-pki-types" = rec { crateName = "rustls-pki-types"; - version = "1.8.0"; + version = "1.9.0"; edition = "2021"; - sha256 = "1w6a1x8h61p5ddlnijfvj5fvs516h5xr5rw1pc0m8rgq8vk2q2pw"; + sha256 = "0mcc901b4hm2ql2qwpf2gzqhqn6d7iag92hr872wjr8c6wsnws8f"; libName = "rustls_pki_types"; features = { "default" = [ "alloc" ]; @@ -5689,9 +5741,9 @@ rec { }; "rustls-webpki" = rec { crateName = "rustls-webpki"; - version = "0.102.6"; + version = "0.102.8"; edition = "2021"; - sha256 = "0bl55zb5m78l45d8i5frracq96x8shsshmfwby1zsxm1zpa54swf"; + sha256 = "1sdy8ks86b7jpabpnb2px2s7f1sq8v0nqf6fnlvwzm4vfk41pjk4"; libName = "webpki"; dependencies = [ { @@ -5746,9 +5798,9 @@ rec { }; "schannel" = rec { crateName = "schannel"; - version = "0.1.23"; + version = "0.1.24"; edition = "2018"; - sha256 = "0d1m156bsjrws6xzzr1wyfyih9i22mb2csb5pc5kmkrvci2ibjgv"; + sha256 = "12wv1zwcs99rd4hnzc2fvmabvdihsvxq5780zxbxdqxnlbaszap9"; authors = [ "Steven Fackler " "Steffen Butzer " @@ -5756,14 +5808,14 @@ rec { dependencies = [ { name = "windows-sys"; - packageId = "windows-sys"; + packageId = "windows-sys 0.59.0"; features = [ "Win32_Foundation" "Win32_Security_Cryptography" "Win32_Security_Authentication_Identity" "Win32_Security_Credentials" "Win32_System_Memory" ]; } ]; devDependencies = [ { name = "windows-sys"; - packageId = "windows-sys"; + packageId = "windows-sys 0.59.0"; features = [ "Win32_System_SystemInformation" "Win32_System_Time" ]; } ]; @@ -5859,7 +5911,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.74"; + packageId = "syn 2.0.79"; features = [ "extra-traits" ]; } ]; @@ -5954,9 +6006,9 @@ rec { }; "security-framework-sys" = rec { crateName = "security-framework-sys"; - version = "2.11.1"; + version = "2.12.0"; edition = "2021"; - sha256 = "1byfpx39sbmndfjrlqqylcxdpn3mpjyb9d92dffzw24vkgz2knkm"; + sha256 = "1dml0lp9lrvvi01s011lyss5kzzsmakaamdwsxr0431jd4l2jjpa"; libName = "security_framework_sys"; authors = [ "Steven Fackler " @@ -5999,9 +6051,9 @@ rec { }; "serde" = rec { crateName = "serde"; - version = "1.0.206"; + version = "1.0.210"; edition = "2018"; - sha256 = "1102kmaf7cdln5f44l1ygqz457ly9pii3kcb28555p9387clqgjv"; + sha256 = "0flc0z8wgax1k4j5bf2zyq48bgzyv425jkd5w0i6wbh7f8j5kqy8"; authors = [ "Erick Tryzelaar " "David Tolnay " @@ -6054,9 +6106,9 @@ rec { }; "serde_derive" = rec { crateName = "serde_derive"; - version = "1.0.206"; + version = "1.0.210"; edition = "2015"; - sha256 = "15rgfrcs56hqhhfnhq4413sazcfzkkvcr66g121fm0r3il9vdgzs"; + sha256 = "07yzy4wafk79ps0hmbqmsqh5xjna4pm4q57wc847bb8gl3nh4f94"; procMacro = true; authors = [ "Erick Tryzelaar " @@ -6077,7 +6129,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.74"; + packageId = "syn 2.0.79"; usesDefaultFeatures = false; features = [ "clone-impls" "derive" "parsing" "printing" "proc-macro" ]; } @@ -6109,7 +6161,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.74"; + packageId = "syn 2.0.79"; usesDefaultFeatures = false; features = [ "clone-impls" "derive" "parsing" "printing" ]; } @@ -6118,9 +6170,9 @@ rec { }; "serde_json" = rec { crateName = "serde_json"; - version = "1.0.124"; + version = "1.0.128"; edition = "2021"; - sha256 = "13g3zka165qqnvbw0c6k708wdfc4738sr4f8ijjxpcsnga265bb6"; + sha256 = "1n43nia50ybpcfmh3gcw4lcc627qsg9nyakzwgkk9pm10xklbxbg"; authors = [ "Erick Tryzelaar " "David Tolnay " @@ -6290,6 +6342,24 @@ rec { "loom" = [ "dep:loom" ]; }; }; + "shlex" = rec { + crateName = "shlex"; + version = "1.3.0"; + edition = "2015"; + sha256 = "0r1y6bv26c1scpxvhg2cabimrmwgbp4p3wy6syj9n0c4s3q2znhg"; + authors = [ + "comex " + "Fenhl " + "Adrian Taylor " + "Alex Touchet " + "Daniel Parks " + "Garrett Berg " + ]; + features = { + "default" = [ "std" ]; + }; + resolvedDefaultFeatures = [ "default" "std" ]; + }; "signal-hook-registry" = rec { crateName = "signal-hook-registry"; version = "1.4.2"; @@ -6379,18 +6449,18 @@ rec { }; resolvedDefaultFeatures = [ "default" "guide" "std" ]; }; - "snafu 0.8.4" = rec { + "snafu 0.8.5" = rec { crateName = "snafu"; - version = "0.8.4"; + version = "0.8.5"; edition = "2018"; - sha256 = "17f7w6d3szwc2s4q2vkc616yb4g70llqcbb7b90v63b60awmr0rb"; + sha256 = "06ahz9g4f6475rspfcay8512x776wpxc205rizzc6a9abv492f12"; authors = [ "Jake Goulding " ]; dependencies = [ { name = "snafu-derive"; - packageId = "snafu-derive 0.8.4"; + packageId = "snafu-derive 0.8.5"; } ]; features = { @@ -6404,6 +6474,7 @@ rec { "pin-project" = [ "dep:pin-project" ]; "rust_1_61" = [ "snafu-derive/rust_1_61" ]; "rust_1_65" = [ "rust_1_61" ]; + "rust_1_81" = [ "rust_1_65" ]; "unstable-provider-api" = [ "snafu-derive/unstable-provider-api" ]; }; resolvedDefaultFeatures = [ "default" "rust_1_61" "rust_1_65" "std" ]; @@ -6436,11 +6507,11 @@ rec { features = { }; }; - "snafu-derive 0.8.4" = rec { + "snafu-derive 0.8.5" = rec { crateName = "snafu-derive"; - version = "0.8.4"; + version = "0.8.5"; edition = "2018"; - sha256 = "1r8s45plv1nxy60d9xyvyjxz0692jh6aax1icj064ps0r8py1l9q"; + sha256 = "05zr38bcngn8ha4mfi7lr2pqqfysjhwhxvk9lz57xzkzjavwdhq3"; procMacro = true; libName = "snafu_derive"; authors = [ @@ -6462,7 +6533,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.74"; + packageId = "syn 2.0.79"; features = [ "full" ]; } ]; @@ -6487,7 +6558,7 @@ rec { } { name = "windows-sys"; - packageId = "windows-sys"; + packageId = "windows-sys 0.52.0"; target = { target, features }: (target."windows" or false); features = [ "Win32_Foundation" "Win32_Networking_WinSock" "Win32_System_IO" "Win32_System_Threading" "Win32_System_WindowsProgramming" ]; } @@ -6523,13 +6594,13 @@ rec { }; "stackable-operator" = rec { crateName = "stackable-operator"; - version = "0.74.0"; + version = "0.78.0"; edition = "2021"; workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "c77a5423b66bc1667b63af7d8bec00de88a5303f"; - sha256 = "1g1a0v98wlcb36ibwv1nv75g3b3s1mjmaps443fc2w2maam94lya"; + rev = "8b0172ded942499845ebf647ef1b17ccfc7bdbb3"; + sha256 = "0nd05xk84s4jdd635ivvwp0lxqghxdxz45cf40xyx07k9bqq4fzg"; }; libName = "stackable_operator"; authors = [ @@ -6570,6 +6641,10 @@ rec { name = "futures"; packageId = "futures 0.3.30"; } + { + name = "indexmap"; + packageId = "indexmap"; + } { name = "json-patch"; packageId = "json-patch"; @@ -6578,7 +6653,7 @@ rec { name = "k8s-openapi"; packageId = "k8s-openapi"; usesDefaultFeatures = false; - features = [ "schemars" "v1_30" ]; + features = [ "schemars" "v1_31" ]; } { name = "kube"; @@ -6628,7 +6703,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.4"; + packageId = "snafu 0.8.5"; } { name = "stackable-operator-derive"; @@ -6678,8 +6753,8 @@ rec { workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "c77a5423b66bc1667b63af7d8bec00de88a5303f"; - sha256 = "1g1a0v98wlcb36ibwv1nv75g3b3s1mjmaps443fc2w2maam94lya"; + rev = "8b0172ded942499845ebf647ef1b17ccfc7bdbb3"; + sha256 = "0nd05xk84s4jdd635ivvwp0lxqghxdxz45cf40xyx07k9bqq4fzg"; }; procMacro = true; libName = "stackable_operator_derive"; @@ -6701,7 +6776,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.74"; + packageId = "syn 2.0.79"; } ]; @@ -6735,7 +6810,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.4"; + packageId = "snafu 0.8.5"; } { name = "stackable-operator"; @@ -6819,7 +6894,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.4"; + packageId = "snafu 0.8.5"; } { name = "stackable-operator"; @@ -6926,7 +7001,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.74"; + packageId = "syn 2.0.79"; features = [ "parsing" "extra-traits" ]; } ]; @@ -6979,11 +7054,11 @@ rec { }; resolvedDefaultFeatures = [ "clone-impls" "default" "derive" "extra-traits" "full" "parsing" "printing" "proc-macro" "quote" "visit" ]; }; - "syn 2.0.74" = rec { + "syn 2.0.79" = rec { crateName = "syn"; - version = "2.0.74"; + version = "2.0.79"; edition = "2021"; - sha256 = "1mxk5h27mzl0r2j434rqrm279k302jdl1lr16kc0nval7lgb9khz"; + sha256 = "147mk4sgigmvsb9l8qzj199ygf0fgb0bphwdsghn8205pz82q4w9"; authors = [ "David Tolnay " ]; @@ -7014,9 +7089,9 @@ rec { }; "thiserror" = rec { crateName = "thiserror"; - version = "1.0.63"; + version = "1.0.64"; edition = "2021"; - sha256 = "092p83mf4p1vkjb2j6h6z96dan4raq2simhirjv12slbndq26d60"; + sha256 = "114s8lmssxl0c2480s671am88vzlasbaikxbvfv8pyqrq6mzh2nm"; authors = [ "David Tolnay " ]; @@ -7030,9 +7105,9 @@ rec { }; "thiserror-impl" = rec { crateName = "thiserror-impl"; - version = "1.0.63"; + version = "1.0.64"; edition = "2021"; - sha256 = "0qd21l2jjrkvnpr5da3l3b58v4wmrkn6aa0h1z5dg6kb8rc8nmd4"; + sha256 = "1hvzmjx9iamln854l74qyhs0jl2pg3hhqzpqm9p8gszmf9v4x408"; procMacro = true; libName = "thiserror_impl"; authors = [ @@ -7049,7 +7124,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.74"; + packageId = "syn 2.0.79"; } ]; @@ -7288,9 +7363,9 @@ rec { }; "tokio" = rec { crateName = "tokio"; - version = "1.39.2"; + version = "1.40.0"; edition = "2021"; - sha256 = "1cb7yhba7nnf00cylcywk7rai5kkdb8b4jzwrc26zgbqqwdzp96s"; + sha256 = "166rllhfkyqp0fs7sxn6crv74iizi4wzd3cvxkcpmlk52qip1c72"; authors = [ "Tokio Contributors " ]; @@ -7346,7 +7421,7 @@ rec { } { name = "windows-sys"; - packageId = "windows-sys"; + packageId = "windows-sys 0.52.0"; optional = true; target = { target, features }: (target."windows" or false); } @@ -7364,7 +7439,7 @@ rec { } { name = "windows-sys"; - packageId = "windows-sys"; + packageId = "windows-sys 0.52.0"; target = {target, features}: (target."windows" or false); features = [ "Win32_Foundation" "Win32_Security_Authorization" ]; } @@ -7411,7 +7486,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.74"; + packageId = "syn 2.0.79"; features = [ "full" ]; } ]; @@ -7460,9 +7535,9 @@ rec { }; "tokio-stream" = rec { crateName = "tokio-stream"; - version = "0.1.15"; + version = "0.1.16"; edition = "2021"; - sha256 = "1brpbsqyg8yfmfc4y0j9zxvc8xsxjc31d48kb0g6jvpc1fgchyi6"; + sha256 = "1wc65gprcsyzqlr0k091glswy96kph90i32gffi4ksyh03hnqkjg"; libName = "tokio_stream"; authors = [ "Tokio Contributors " @@ -7504,9 +7579,9 @@ rec { }; "tokio-util" = rec { crateName = "tokio-util"; - version = "0.7.11"; + version = "0.7.12"; edition = "2021"; - sha256 = "1qcz30db6m8lxkl61b3nic4bim1symi636nhbb3rmi3i6xxv9xlw"; + sha256 = "0spc0g4irbnf2flgag22gfii87avqzibwfm0si0d1g0k9ijw7rv1"; libName = "tokio_util"; authors = [ "Tokio Contributors " @@ -7576,9 +7651,9 @@ rec { }; "toml_edit" = rec { crateName = "toml_edit"; - version = "0.21.1"; + version = "0.22.22"; edition = "2021"; - sha256 = "1qch02syrd9c8krcimfl72gyjz11fmjssh03hrg41dbqgzyk91ba"; + sha256 = "1xf7sxfzmnc45f75x302qrn5aph52vc8w226v59yhrm211i8vr2a"; authors = [ "Andronik Ordian " "Ed Page " @@ -7710,7 +7785,7 @@ rec { "tracing" = [ "dep:tracing" ]; "util" = [ "__common" "futures-util" "pin-project" ]; }; - resolvedDefaultFeatures = [ "__common" "buffer" "default" "filter" "futures-core" "futures-util" "log" "make" "pin-project" "pin-project-lite" "tokio" "tokio-util" "tracing" "util" ]; + resolvedDefaultFeatures = [ "__common" "buffer" "default" "filter" "futures-core" "futures-util" "log" "pin-project" "pin-project-lite" "tokio" "tokio-util" "tracing" "util" ]; }; "tower-http" = rec { crateName = "tower-http"; @@ -7819,9 +7894,9 @@ rec { }; "tower-layer" = rec { crateName = "tower-layer"; - version = "0.3.2"; + version = "0.3.3"; edition = "2018"; - sha256 = "1l7i17k9vlssrdg4s3b0ia5jjkmmxsvv8s9y9ih0jfi8ssz8s362"; + sha256 = "03kq92fdzxin51w8iqix06dcfgydyvx7yr6izjq0p626v9n2l70j"; libName = "tower_layer"; authors = [ "Tower Maintainers " @@ -7830,9 +7905,9 @@ rec { }; "tower-service" = rec { crateName = "tower-service"; - version = "0.3.2"; + version = "0.3.3"; edition = "2018"; - sha256 = "0lmfzmmvid2yp2l36mbavhmqgsvzqf7r2wiwz73ml4xmwaf1rg5n"; + sha256 = "1hzfkvkci33ra94xjx64vv3pp0sq346w06fpkcdwjcid7zhvdycd"; libName = "tower_service"; authors = [ "Tower Maintainers " @@ -7945,7 +8020,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.74"; + packageId = "syn 2.0.79"; usesDefaultFeatures = false; features = [ "full" "parsing" "printing" "visit-mut" "clone-impls" "extra-traits" "proc-macro" ]; } @@ -8343,9 +8418,9 @@ rec { }; "ucd-trie" = rec { crateName = "ucd-trie"; - version = "0.1.6"; + version = "0.1.7"; edition = "2021"; - sha256 = "1ff4yfksirqs37ybin9aw71aa5gva00hw7jdxbw8w668zy964r7d"; + sha256 = "0wc9p07sqwz320848i52nvyjvpsxkx3kv5bfbmm6s35809fdk5i8"; libName = "ucd_trie"; authors = [ "Andrew Gallant " @@ -8376,9 +8451,9 @@ rec { }; "unicode-ident" = rec { crateName = "unicode-ident"; - version = "1.0.12"; + version = "1.0.13"; edition = "2018"; - sha256 = "0jzf1znfpb2gx8nr8mvmyqs1crnv79l57nxnbiszc7xf7ynbjm1k"; + sha256 = "1zm1xylzsdfvm2a5ib9li3g5pp7qnkv4amhspydvgbmd9k6mc6z9"; libName = "unicode_ident"; authors = [ "David Tolnay " @@ -8387,9 +8462,9 @@ rec { }; "unicode-normalization" = rec { crateName = "unicode-normalization"; - version = "0.1.23"; + version = "0.1.24"; edition = "2018"; - sha256 = "1x81a50h2zxigj74b9bqjsirxxbyhmis54kg600xj213vf31cvd5"; + sha256 = "0mnrk809z3ix1wspcqy97ld5wxdb31f3xz6nsvg5qcv289ycjcsh"; libName = "unicode_normalization"; authors = [ "kwantam " @@ -8409,9 +8484,9 @@ rec { }; "unicode-xid" = rec { crateName = "unicode-xid"; - version = "0.2.4"; + version = "0.2.6"; edition = "2015"; - sha256 = "131dfzf7d8fsr1ivch34x42c2d1ik5ig3g78brxncnn0r1sdyqpr"; + sha256 = "0lzqaky89fq0bcrh6jj6bhlz37scfd8c7dsj5dq7y32if56c1hgb"; libName = "unicode_xid"; authors = [ "erick.tryzelaar " @@ -8565,9 +8640,9 @@ rec { }; "wasm-bindgen" = rec { crateName = "wasm-bindgen"; - version = "0.2.92"; - edition = "2018"; - sha256 = "1a4mcw13nsk3fr8fxjzf9kk1wj88xkfsmnm0pjraw01ryqfm7qjb"; + version = "0.2.93"; + edition = "2021"; + sha256 = "1dfr7pka5kwvky2fx82m9d060p842hc5fyyw8igryikcdb0xybm8"; libName = "wasm_bindgen"; authors = [ "The wasm-bindgen Developers" @@ -8577,6 +8652,10 @@ rec { name = "cfg-if"; packageId = "cfg-if"; } + { + name = "once_cell"; + packageId = "once_cell"; + } { name = "wasm-bindgen-macro"; packageId = "wasm-bindgen-macro"; @@ -8585,7 +8664,6 @@ rec { features = { "default" = [ "spans" "std" ]; "enable-interning" = [ "std" ]; - "gg-alloc" = [ "wasm-bindgen-test/gg-alloc" ]; "serde" = [ "dep:serde" ]; "serde-serialize" = [ "serde" "serde_json" "std" ]; "serde_json" = [ "dep:serde_json" ]; @@ -8597,9 +8675,9 @@ rec { }; "wasm-bindgen-backend" = rec { crateName = "wasm-bindgen-backend"; - version = "0.2.92"; - edition = "2018"; - sha256 = "1nj7wxbi49f0rw9d44rjzms26xlw6r76b2mrggx8jfbdjrxphkb1"; + version = "0.2.93"; + edition = "2021"; + sha256 = "0yypblaf94rdgqs5xw97499xfwgs1096yx026d6h88v563d9dqwx"; libName = "wasm_bindgen_backend"; authors = [ "The wasm-bindgen Developers" @@ -8627,7 +8705,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.74"; + packageId = "syn 2.0.79"; features = [ "full" ]; } { @@ -8642,9 +8720,9 @@ rec { }; "wasm-bindgen-macro" = rec { crateName = "wasm-bindgen-macro"; - version = "0.2.92"; - edition = "2018"; - sha256 = "09npa1srjjabd6nfph5yc03jb26sycjlxhy0c2a1pdrpx4yq5y51"; + version = "0.2.93"; + edition = "2021"; + sha256 = "1kycd1xfx4d9xzqknvzbiqhwb5fzvjqrrn88x692q1vblj8lqp2q"; procMacro = true; libName = "wasm_bindgen_macro"; authors = [ @@ -8668,9 +8746,9 @@ rec { }; "wasm-bindgen-macro-support" = rec { crateName = "wasm-bindgen-macro-support"; - version = "0.2.92"; - edition = "2018"; - sha256 = "1dqv2xs8zcyw4kjgzj84bknp2h76phmsb3n7j6hn396h4ssifkz9"; + version = "0.2.93"; + edition = "2021"; + sha256 = "0dp8w6jmw44srym6l752nkr3hkplyw38a2fxz5f3j1ch9p3l1hxg"; libName = "wasm_bindgen_macro_support"; authors = [ "The wasm-bindgen Developers" @@ -8686,7 +8764,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.74"; + packageId = "syn 2.0.79"; features = [ "visit" "full" ]; } { @@ -8706,10 +8784,10 @@ rec { }; "wasm-bindgen-shared" = rec { crateName = "wasm-bindgen-shared"; - version = "0.2.92"; - edition = "2018"; + version = "0.2.93"; + edition = "2021"; links = "wasm_bindgen"; - sha256 = "15kyavsrna2cvy30kg03va257fraf9x00ny554vxngvpyaa0q6dg"; + sha256 = "1104bny0hv40jfap3hp8jhs0q4ya244qcrvql39i38xlghq0lan6"; libName = "wasm_bindgen_shared"; authors = [ "The wasm-bindgen Developers" @@ -8805,7 +8883,7 @@ rec { }; resolvedDefaultFeatures = [ "default" ]; }; - "windows-sys" = rec { + "windows-sys 0.52.0" = rec { crateName = "windows-sys"; version = "0.52.0"; edition = "2021"; @@ -9051,7 +9129,266 @@ rec { "Win32_Web" = [ "Win32" ]; "Win32_Web_InternetExplorer" = [ "Win32_Web" ]; }; - resolvedDefaultFeatures = [ "Wdk" "Wdk_Foundation" "Wdk_Storage" "Wdk_Storage_FileSystem" "Wdk_System" "Wdk_System_IO" "Win32" "Win32_Foundation" "Win32_Networking" "Win32_Networking_WinSock" "Win32_Security" "Win32_Security_Authentication" "Win32_Security_Authentication_Identity" "Win32_Security_Credentials" "Win32_Security_Cryptography" "Win32_Storage" "Win32_Storage_FileSystem" "Win32_System" "Win32_System_Com" "Win32_System_Console" "Win32_System_IO" "Win32_System_Memory" "Win32_System_Pipes" "Win32_System_SystemServices" "Win32_System_Threading" "Win32_System_WindowsProgramming" "Win32_UI" "Win32_UI_Shell" "default" ]; + resolvedDefaultFeatures = [ "Wdk" "Wdk_Foundation" "Wdk_Storage" "Wdk_Storage_FileSystem" "Wdk_System" "Wdk_System_IO" "Win32" "Win32_Foundation" "Win32_Networking" "Win32_Networking_WinSock" "Win32_Security" "Win32_Storage" "Win32_Storage_FileSystem" "Win32_System" "Win32_System_Com" "Win32_System_Console" "Win32_System_IO" "Win32_System_Pipes" "Win32_System_SystemServices" "Win32_System_Threading" "Win32_System_WindowsProgramming" "Win32_UI" "Win32_UI_Shell" "default" ]; + }; + "windows-sys 0.59.0" = rec { + crateName = "windows-sys"; + version = "0.59.0"; + edition = "2021"; + sha256 = "0fw5672ziw8b3zpmnbp9pdv1famk74f1l9fcbc3zsrzdg56vqf0y"; + libName = "windows_sys"; + authors = [ + "Microsoft" + ]; + dependencies = [ + { + name = "windows-targets"; + packageId = "windows-targets"; + } + ]; + features = { + "Wdk" = [ "Win32_Foundation" ]; + "Wdk_Devices" = [ "Wdk" ]; + "Wdk_Devices_Bluetooth" = [ "Wdk_Devices" ]; + "Wdk_Devices_HumanInterfaceDevice" = [ "Wdk_Devices" ]; + "Wdk_Foundation" = [ "Wdk" ]; + "Wdk_Graphics" = [ "Wdk" ]; + "Wdk_Graphics_Direct3D" = [ "Wdk_Graphics" ]; + "Wdk_NetworkManagement" = [ "Wdk" ]; + "Wdk_NetworkManagement_Ndis" = [ "Wdk_NetworkManagement" ]; + "Wdk_NetworkManagement_WindowsFilteringPlatform" = [ "Wdk_NetworkManagement" ]; + "Wdk_Storage" = [ "Wdk" ]; + "Wdk_Storage_FileSystem" = [ "Wdk_Storage" ]; + "Wdk_Storage_FileSystem_Minifilters" = [ "Wdk_Storage_FileSystem" ]; + "Wdk_System" = [ "Wdk" ]; + "Wdk_System_IO" = [ "Wdk_System" ]; + "Wdk_System_Memory" = [ "Wdk_System" ]; + "Wdk_System_OfflineRegistry" = [ "Wdk_System" ]; + "Wdk_System_Registry" = [ "Wdk_System" ]; + "Wdk_System_SystemInformation" = [ "Wdk_System" ]; + "Wdk_System_SystemServices" = [ "Wdk_System" ]; + "Wdk_System_Threading" = [ "Wdk_System" ]; + "Win32" = [ "Win32_Foundation" ]; + "Win32_Data" = [ "Win32" ]; + "Win32_Data_HtmlHelp" = [ "Win32_Data" ]; + "Win32_Data_RightsManagement" = [ "Win32_Data" ]; + "Win32_Devices" = [ "Win32" ]; + "Win32_Devices_AllJoyn" = [ "Win32_Devices" ]; + "Win32_Devices_BiometricFramework" = [ "Win32_Devices" ]; + "Win32_Devices_Bluetooth" = [ "Win32_Devices" ]; + "Win32_Devices_Communication" = [ "Win32_Devices" ]; + "Win32_Devices_DeviceAndDriverInstallation" = [ "Win32_Devices" ]; + "Win32_Devices_DeviceQuery" = [ "Win32_Devices" ]; + "Win32_Devices_Display" = [ "Win32_Devices" ]; + "Win32_Devices_Enumeration" = [ "Win32_Devices" ]; + "Win32_Devices_Enumeration_Pnp" = [ "Win32_Devices_Enumeration" ]; + "Win32_Devices_Fax" = [ "Win32_Devices" ]; + "Win32_Devices_HumanInterfaceDevice" = [ "Win32_Devices" ]; + "Win32_Devices_PortableDevices" = [ "Win32_Devices" ]; + "Win32_Devices_Properties" = [ "Win32_Devices" ]; + "Win32_Devices_Pwm" = [ "Win32_Devices" ]; + "Win32_Devices_Sensors" = [ "Win32_Devices" ]; + "Win32_Devices_SerialCommunication" = [ "Win32_Devices" ]; + "Win32_Devices_Tapi" = [ "Win32_Devices" ]; + "Win32_Devices_Usb" = [ "Win32_Devices" ]; + "Win32_Devices_WebServicesOnDevices" = [ "Win32_Devices" ]; + "Win32_Foundation" = [ "Win32" ]; + "Win32_Gaming" = [ "Win32" ]; + "Win32_Globalization" = [ "Win32" ]; + "Win32_Graphics" = [ "Win32" ]; + "Win32_Graphics_Dwm" = [ "Win32_Graphics" ]; + "Win32_Graphics_Gdi" = [ "Win32_Graphics" ]; + "Win32_Graphics_GdiPlus" = [ "Win32_Graphics" ]; + "Win32_Graphics_Hlsl" = [ "Win32_Graphics" ]; + "Win32_Graphics_OpenGL" = [ "Win32_Graphics" ]; + "Win32_Graphics_Printing" = [ "Win32_Graphics" ]; + "Win32_Graphics_Printing_PrintTicket" = [ "Win32_Graphics_Printing" ]; + "Win32_Management" = [ "Win32" ]; + "Win32_Management_MobileDeviceManagementRegistration" = [ "Win32_Management" ]; + "Win32_Media" = [ "Win32" ]; + "Win32_Media_Audio" = [ "Win32_Media" ]; + "Win32_Media_DxMediaObjects" = [ "Win32_Media" ]; + "Win32_Media_KernelStreaming" = [ "Win32_Media" ]; + "Win32_Media_Multimedia" = [ "Win32_Media" ]; + "Win32_Media_Streaming" = [ "Win32_Media" ]; + "Win32_Media_WindowsMediaFormat" = [ "Win32_Media" ]; + "Win32_NetworkManagement" = [ "Win32" ]; + "Win32_NetworkManagement_Dhcp" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_Dns" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_InternetConnectionWizard" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_IpHelper" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_Multicast" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_Ndis" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_NetBios" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_NetManagement" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_NetShell" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_NetworkDiagnosticsFramework" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_P2P" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_QoS" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_Rras" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_Snmp" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_WNet" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_WebDav" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_WiFi" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_WindowsConnectionManager" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_WindowsFilteringPlatform" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_WindowsFirewall" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_WindowsNetworkVirtualization" = [ "Win32_NetworkManagement" ]; + "Win32_Networking" = [ "Win32" ]; + "Win32_Networking_ActiveDirectory" = [ "Win32_Networking" ]; + "Win32_Networking_Clustering" = [ "Win32_Networking" ]; + "Win32_Networking_HttpServer" = [ "Win32_Networking" ]; + "Win32_Networking_Ldap" = [ "Win32_Networking" ]; + "Win32_Networking_WebSocket" = [ "Win32_Networking" ]; + "Win32_Networking_WinHttp" = [ "Win32_Networking" ]; + "Win32_Networking_WinInet" = [ "Win32_Networking" ]; + "Win32_Networking_WinSock" = [ "Win32_Networking" ]; + "Win32_Networking_WindowsWebServices" = [ "Win32_Networking" ]; + "Win32_Security" = [ "Win32" ]; + "Win32_Security_AppLocker" = [ "Win32_Security" ]; + "Win32_Security_Authentication" = [ "Win32_Security" ]; + "Win32_Security_Authentication_Identity" = [ "Win32_Security_Authentication" ]; + "Win32_Security_Authorization" = [ "Win32_Security" ]; + "Win32_Security_Credentials" = [ "Win32_Security" ]; + "Win32_Security_Cryptography" = [ "Win32_Security" ]; + "Win32_Security_Cryptography_Catalog" = [ "Win32_Security_Cryptography" ]; + "Win32_Security_Cryptography_Certificates" = [ "Win32_Security_Cryptography" ]; + "Win32_Security_Cryptography_Sip" = [ "Win32_Security_Cryptography" ]; + "Win32_Security_Cryptography_UI" = [ "Win32_Security_Cryptography" ]; + "Win32_Security_DiagnosticDataQuery" = [ "Win32_Security" ]; + "Win32_Security_DirectoryServices" = [ "Win32_Security" ]; + "Win32_Security_EnterpriseData" = [ "Win32_Security" ]; + "Win32_Security_ExtensibleAuthenticationProtocol" = [ "Win32_Security" ]; + "Win32_Security_Isolation" = [ "Win32_Security" ]; + "Win32_Security_LicenseProtection" = [ "Win32_Security" ]; + "Win32_Security_NetworkAccessProtection" = [ "Win32_Security" ]; + "Win32_Security_WinTrust" = [ "Win32_Security" ]; + "Win32_Security_WinWlx" = [ "Win32_Security" ]; + "Win32_Storage" = [ "Win32" ]; + "Win32_Storage_Cabinets" = [ "Win32_Storage" ]; + "Win32_Storage_CloudFilters" = [ "Win32_Storage" ]; + "Win32_Storage_Compression" = [ "Win32_Storage" ]; + "Win32_Storage_DistributedFileSystem" = [ "Win32_Storage" ]; + "Win32_Storage_FileHistory" = [ "Win32_Storage" ]; + "Win32_Storage_FileSystem" = [ "Win32_Storage" ]; + "Win32_Storage_Imapi" = [ "Win32_Storage" ]; + "Win32_Storage_IndexServer" = [ "Win32_Storage" ]; + "Win32_Storage_InstallableFileSystems" = [ "Win32_Storage" ]; + "Win32_Storage_IscsiDisc" = [ "Win32_Storage" ]; + "Win32_Storage_Jet" = [ "Win32_Storage" ]; + "Win32_Storage_Nvme" = [ "Win32_Storage" ]; + "Win32_Storage_OfflineFiles" = [ "Win32_Storage" ]; + "Win32_Storage_OperationRecorder" = [ "Win32_Storage" ]; + "Win32_Storage_Packaging" = [ "Win32_Storage" ]; + "Win32_Storage_Packaging_Appx" = [ "Win32_Storage_Packaging" ]; + "Win32_Storage_ProjectedFileSystem" = [ "Win32_Storage" ]; + "Win32_Storage_StructuredStorage" = [ "Win32_Storage" ]; + "Win32_Storage_Vhd" = [ "Win32_Storage" ]; + "Win32_Storage_Xps" = [ "Win32_Storage" ]; + "Win32_System" = [ "Win32" ]; + "Win32_System_AddressBook" = [ "Win32_System" ]; + "Win32_System_Antimalware" = [ "Win32_System" ]; + "Win32_System_ApplicationInstallationAndServicing" = [ "Win32_System" ]; + "Win32_System_ApplicationVerifier" = [ "Win32_System" ]; + "Win32_System_ClrHosting" = [ "Win32_System" ]; + "Win32_System_Com" = [ "Win32_System" ]; + "Win32_System_Com_Marshal" = [ "Win32_System_Com" ]; + "Win32_System_Com_StructuredStorage" = [ "Win32_System_Com" ]; + "Win32_System_Com_Urlmon" = [ "Win32_System_Com" ]; + "Win32_System_ComponentServices" = [ "Win32_System" ]; + "Win32_System_Console" = [ "Win32_System" ]; + "Win32_System_CorrelationVector" = [ "Win32_System" ]; + "Win32_System_DataExchange" = [ "Win32_System" ]; + "Win32_System_DeploymentServices" = [ "Win32_System" ]; + "Win32_System_DeveloperLicensing" = [ "Win32_System" ]; + "Win32_System_Diagnostics" = [ "Win32_System" ]; + "Win32_System_Diagnostics_Ceip" = [ "Win32_System_Diagnostics" ]; + "Win32_System_Diagnostics_Debug" = [ "Win32_System_Diagnostics" ]; + "Win32_System_Diagnostics_Debug_Extensions" = [ "Win32_System_Diagnostics_Debug" ]; + "Win32_System_Diagnostics_Etw" = [ "Win32_System_Diagnostics" ]; + "Win32_System_Diagnostics_ProcessSnapshotting" = [ "Win32_System_Diagnostics" ]; + "Win32_System_Diagnostics_ToolHelp" = [ "Win32_System_Diagnostics" ]; + "Win32_System_Diagnostics_TraceLogging" = [ "Win32_System_Diagnostics" ]; + "Win32_System_DistributedTransactionCoordinator" = [ "Win32_System" ]; + "Win32_System_Environment" = [ "Win32_System" ]; + "Win32_System_ErrorReporting" = [ "Win32_System" ]; + "Win32_System_EventCollector" = [ "Win32_System" ]; + "Win32_System_EventLog" = [ "Win32_System" ]; + "Win32_System_EventNotificationService" = [ "Win32_System" ]; + "Win32_System_GroupPolicy" = [ "Win32_System" ]; + "Win32_System_HostCompute" = [ "Win32_System" ]; + "Win32_System_HostComputeNetwork" = [ "Win32_System" ]; + "Win32_System_HostComputeSystem" = [ "Win32_System" ]; + "Win32_System_Hypervisor" = [ "Win32_System" ]; + "Win32_System_IO" = [ "Win32_System" ]; + "Win32_System_Iis" = [ "Win32_System" ]; + "Win32_System_Ioctl" = [ "Win32_System" ]; + "Win32_System_JobObjects" = [ "Win32_System" ]; + "Win32_System_Js" = [ "Win32_System" ]; + "Win32_System_Kernel" = [ "Win32_System" ]; + "Win32_System_LibraryLoader" = [ "Win32_System" ]; + "Win32_System_Mailslots" = [ "Win32_System" ]; + "Win32_System_Mapi" = [ "Win32_System" ]; + "Win32_System_Memory" = [ "Win32_System" ]; + "Win32_System_Memory_NonVolatile" = [ "Win32_System_Memory" ]; + "Win32_System_MessageQueuing" = [ "Win32_System" ]; + "Win32_System_MixedReality" = [ "Win32_System" ]; + "Win32_System_Ole" = [ "Win32_System" ]; + "Win32_System_PasswordManagement" = [ "Win32_System" ]; + "Win32_System_Performance" = [ "Win32_System" ]; + "Win32_System_Performance_HardwareCounterProfiling" = [ "Win32_System_Performance" ]; + "Win32_System_Pipes" = [ "Win32_System" ]; + "Win32_System_Power" = [ "Win32_System" ]; + "Win32_System_ProcessStatus" = [ "Win32_System" ]; + "Win32_System_Recovery" = [ "Win32_System" ]; + "Win32_System_Registry" = [ "Win32_System" ]; + "Win32_System_RemoteDesktop" = [ "Win32_System" ]; + "Win32_System_RemoteManagement" = [ "Win32_System" ]; + "Win32_System_RestartManager" = [ "Win32_System" ]; + "Win32_System_Restore" = [ "Win32_System" ]; + "Win32_System_Rpc" = [ "Win32_System" ]; + "Win32_System_Search" = [ "Win32_System" ]; + "Win32_System_Search_Common" = [ "Win32_System_Search" ]; + "Win32_System_SecurityCenter" = [ "Win32_System" ]; + "Win32_System_Services" = [ "Win32_System" ]; + "Win32_System_SetupAndMigration" = [ "Win32_System" ]; + "Win32_System_Shutdown" = [ "Win32_System" ]; + "Win32_System_StationsAndDesktops" = [ "Win32_System" ]; + "Win32_System_SubsystemForLinux" = [ "Win32_System" ]; + "Win32_System_SystemInformation" = [ "Win32_System" ]; + "Win32_System_SystemServices" = [ "Win32_System" ]; + "Win32_System_Threading" = [ "Win32_System" ]; + "Win32_System_Time" = [ "Win32_System" ]; + "Win32_System_TpmBaseServices" = [ "Win32_System" ]; + "Win32_System_UserAccessLogging" = [ "Win32_System" ]; + "Win32_System_Variant" = [ "Win32_System" ]; + "Win32_System_VirtualDosMachines" = [ "Win32_System" ]; + "Win32_System_WindowsProgramming" = [ "Win32_System" ]; + "Win32_System_Wmi" = [ "Win32_System" ]; + "Win32_UI" = [ "Win32" ]; + "Win32_UI_Accessibility" = [ "Win32_UI" ]; + "Win32_UI_ColorSystem" = [ "Win32_UI" ]; + "Win32_UI_Controls" = [ "Win32_UI" ]; + "Win32_UI_Controls_Dialogs" = [ "Win32_UI_Controls" ]; + "Win32_UI_HiDpi" = [ "Win32_UI" ]; + "Win32_UI_Input" = [ "Win32_UI" ]; + "Win32_UI_Input_Ime" = [ "Win32_UI_Input" ]; + "Win32_UI_Input_KeyboardAndMouse" = [ "Win32_UI_Input" ]; + "Win32_UI_Input_Pointer" = [ "Win32_UI_Input" ]; + "Win32_UI_Input_Touch" = [ "Win32_UI_Input" ]; + "Win32_UI_Input_XboxController" = [ "Win32_UI_Input" ]; + "Win32_UI_InteractionContext" = [ "Win32_UI" ]; + "Win32_UI_Magnification" = [ "Win32_UI" ]; + "Win32_UI_Shell" = [ "Win32_UI" ]; + "Win32_UI_Shell_Common" = [ "Win32_UI_Shell" ]; + "Win32_UI_Shell_PropertiesSystem" = [ "Win32_UI_Shell" ]; + "Win32_UI_TabletPC" = [ "Win32_UI" ]; + "Win32_UI_TextServices" = [ "Win32_UI" ]; + "Win32_UI_WindowsAndMessaging" = [ "Win32_UI" ]; + "Win32_Web" = [ "Win32" ]; + "Win32_Web_InternetExplorer" = [ "Win32_Web" ]; + }; + resolvedDefaultFeatures = [ "Win32" "Win32_Foundation" "Win32_Security" "Win32_Security_Authentication" "Win32_Security_Authentication_Identity" "Win32_Security_Credentials" "Win32_Security_Cryptography" "Win32_System" "Win32_System_Memory" "default" ]; }; "windows-targets" = rec { crateName = "windows-targets"; @@ -9188,9 +9525,9 @@ rec { }; "winnow" = rec { crateName = "winnow"; - version = "0.5.40"; + version = "0.6.20"; edition = "2021"; - sha256 = "0xk8maai7gyxda673mmw3pj1hdizy5fpi7287vaywykkk19sk4zm"; + sha256 = "16y4i8z9vh8hazjxg5mvmq0c5i35wlk8rxi5gkq6cn5vlb0zxh9n"; dependencies = [ { name = "memchr"; @@ -9200,7 +9537,7 @@ rec { } ]; features = { - "debug" = [ "dep:anstream" "dep:anstyle" "dep:is-terminal" "dep:terminal_size" ]; + "debug" = [ "std" "dep:anstream" "dep:anstyle" "dep:is-terminal" "dep:terminal_size" ]; "default" = [ "std" ]; "simd" = [ "dep:memchr" ]; "std" = [ "alloc" "memchr?/std" ]; @@ -9210,10 +9547,10 @@ rec { }; "xml-rs" = rec { crateName = "xml-rs"; - version = "0.8.21"; + version = "0.8.22"; edition = "2021"; crateBin = []; - sha256 = "00g63s3kcnj69hsgg96gvbh822qa71vv2sfsqvf37qqdgkp7g6jk"; + sha256 = "09pg779vjh0xp3ph10j4wy1ihz8pzvxm1qf1jqw0jnmsghpjwkmg"; libName = "xml"; authors = [ "Vladimir Matveev " @@ -9283,7 +9620,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.74"; + packageId = "syn 2.0.79"; } ]; diff --git a/Cargo.toml b/Cargo.toml index 4b0466c9..081f83e7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,7 +21,7 @@ serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" serde_yaml = "0.9" snafu = "0.8" -stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", tag = "stackable-operator-0.74.0" } +stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", tag = "stackable-operator-0.78.0" } strum = { version = "0.26", features = ["derive"] } tokio = { version = "1.39", features = ["full"] } tracing = "0.1" diff --git a/crate-hashes.json b/crate-hashes.json index 8725a492..51bd7d5b 100644 --- a/crate-hashes.json +++ b/crate-hashes.json @@ -1,5 +1,5 @@ { - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.74.0#stackable-operator-derive@0.3.1": "1g1a0v98wlcb36ibwv1nv75g3b3s1mjmaps443fc2w2maam94lya", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.74.0#stackable-operator@0.74.0": "1g1a0v98wlcb36ibwv1nv75g3b3s1mjmaps443fc2w2maam94lya", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.78.0#stackable-operator-derive@0.3.1": "0nd05xk84s4jdd635ivvwp0lxqghxdxz45cf40xyx07k9bqq4fzg", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.78.0#stackable-operator@0.78.0": "0nd05xk84s4jdd635ivvwp0lxqghxdxz45cf40xyx07k9bqq4fzg", "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/deploy/helm/spark-k8s-operator/crds/crds.yaml b/deploy/helm/spark-k8s-operator/crds/crds.yaml index 5815d4c6..4e5a25d7 100644 --- a/deploy/helm/spark-k8s-operator/crds/crds.yaml +++ b/deploy/helm/spark-k8s-operator/crds/crds.yaml @@ -108,10 +108,6 @@ spec: nullable: true type: object x-kubernetes-preserve-unknown-fields: true - required: - - nodeAffinity - - podAffinity - - podAntiAffinity type: object logging: default: @@ -284,13 +280,14 @@ spec: description: The key to select. type: string name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + description: 'Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' type: string optional: description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key + - name type: object fieldRef: description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['''']`, `metadata.annotations['''']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.' @@ -326,13 +323,14 @@ spec: description: The key of the secret to select from. Must be a valid secret key. type: string name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + description: 'Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' type: string optional: description: Specify whether the Secret or its key must be defined type: boolean required: - key + - name type: object type: object required: @@ -380,10 +378,6 @@ spec: nullable: true type: object x-kubernetes-preserve-unknown-fields: true - required: - - nodeAffinity - - podAffinity - - podAntiAffinity type: object logging: default: @@ -630,7 +624,6 @@ spec: s3: properties: bucket: - description: An S3 bucket definition, it can either be a reference to an explicit S3Bucket object, or it can be an inline definition of a bucket. Read the [S3 resources concept documentation](https://docs.stackable.tech/home/nightly/concepts/s3) to learn more. oneOf: - required: - inline @@ -638,15 +631,13 @@ spec: - reference properties: inline: - description: An inline definition, containing the S3 bucket properties. + description: S3 bucket specification containing the bucket name and an inlined or referenced connection specification. Learn more on the [S3 concept documentation](https://docs.stackable.tech/home/nightly/concepts/s3). properties: bucketName: description: The name of the S3 bucket. - nullable: true type: string connection: description: The definition of an S3 connection, either inline or as a reference. - nullable: true oneOf: - required: - inline @@ -654,14 +645,14 @@ spec: - reference properties: inline: - description: Inline definition of an S3 connection. + description: S3 connection definition as a resource. Learn more on the [S3 concept documentation](https://docs.stackable.tech/home/nightly/concepts/s3). properties: accessStyle: + default: VirtualHosted description: Which access style to use. Defaults to virtual hosted-style as most of the data products out there. Have a look at the [AWS documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html). enum: - Path - VirtualHosted - nullable: true type: string credentials: description: If the S3 uses authentication you have to specify you S3 credentials. In the most cases a [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass) providing `accessKey` and `secretKey` is sufficient. @@ -671,6 +662,12 @@ spec: description: '[Scope](https://docs.stackable.tech/home/nightly/secret-operator/scope) of the [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass).' nullable: true properties: + listenerVolumes: + default: [] + description: The listener volume scope allows Node and Service scopes to be inferred from the applicable listeners. This must correspond to Volume names in the Pod that mount Listeners. + items: + type: string + type: array node: default: false description: The node scope is resolved to the name of the Kubernetes Node object that the Pod is running on. This will typically be the DNS name of the node. @@ -693,8 +690,7 @@ spec: - secretClass type: object host: - description: 'Hostname of the S3 server without any protocol or port. For example: `west1.my-cloud.com`.' - nullable: true + description: 'Host of the S3 server without any protocol or port. For example: `west1.my-cloud.com`.' type: string port: description: Port the S3 server listens on. If not specified the product will determine the port to use. @@ -703,7 +699,7 @@ spec: nullable: true type: integer tls: - description: If you want to use TLS when talking to S3 you can enable TLS encrypted communication with this setting. + description: Use a TLS connection. If not specified no TLS will be used. nullable: true properties: verification: @@ -742,14 +738,17 @@ spec: required: - verification type: object + required: + - host type: object reference: - description: A reference to an S3Connection resource. type: string type: object + required: + - bucketName + - connection type: object reference: - description: A reference to an S3 bucket object. This is simply the name of the `S3Bucket` resource. type: string type: object prefix: @@ -782,14 +781,14 @@ spec: - reference properties: inline: - description: Inline definition of an S3 connection. + description: S3 connection definition as a resource. Learn more on the [S3 concept documentation](https://docs.stackable.tech/home/nightly/concepts/s3). properties: accessStyle: + default: VirtualHosted description: Which access style to use. Defaults to virtual hosted-style as most of the data products out there. Have a look at the [AWS documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html). enum: - Path - VirtualHosted - nullable: true type: string credentials: description: If the S3 uses authentication you have to specify you S3 credentials. In the most cases a [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass) providing `accessKey` and `secretKey` is sufficient. @@ -799,6 +798,12 @@ spec: description: '[Scope](https://docs.stackable.tech/home/nightly/secret-operator/scope) of the [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass).' nullable: true properties: + listenerVolumes: + default: [] + description: The listener volume scope allows Node and Service scopes to be inferred from the applicable listeners. This must correspond to Volume names in the Pod that mount Listeners. + items: + type: string + type: array node: default: false description: The node scope is resolved to the name of the Kubernetes Node object that the Pod is running on. This will typically be the DNS name of the node. @@ -821,8 +826,7 @@ spec: - secretClass type: object host: - description: 'Hostname of the S3 server without any protocol or port. For example: `west1.my-cloud.com`.' - nullable: true + description: 'Host of the S3 server without any protocol or port. For example: `west1.my-cloud.com`.' type: string port: description: Port the S3 server listens on. If not specified the product will determine the port to use. @@ -831,7 +835,7 @@ spec: nullable: true type: integer tls: - description: If you want to use TLS when talking to S3 you can enable TLS encrypted communication with this setting. + description: Use a TLS connection. If not specified no TLS will be used. nullable: true properties: verification: @@ -870,9 +874,10 @@ spec: required: - verification type: object + required: + - host type: object reference: - description: A reference to an S3Connection resource. type: string type: object sparkConf: @@ -913,8 +918,10 @@ spec: description: LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + description: 'Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' type: string + required: + - name type: object nullable: true type: array @@ -1041,8 +1048,10 @@ spec: description: LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + description: 'Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' type: string + required: + - name type: object nullable: true type: array @@ -1064,7 +1073,6 @@ spec: s3: properties: bucket: - description: An S3 bucket definition, it can either be a reference to an explicit S3Bucket object, or it can be an inline definition of a bucket. Read the [S3 resources concept documentation](https://docs.stackable.tech/home/nightly/concepts/s3) to learn more. oneOf: - required: - inline @@ -1072,15 +1080,13 @@ spec: - reference properties: inline: - description: An inline definition, containing the S3 bucket properties. + description: S3 bucket specification containing the bucket name and an inlined or referenced connection specification. Learn more on the [S3 concept documentation](https://docs.stackable.tech/home/nightly/concepts/s3). properties: bucketName: description: The name of the S3 bucket. - nullable: true type: string connection: description: The definition of an S3 connection, either inline or as a reference. - nullable: true oneOf: - required: - inline @@ -1088,14 +1094,14 @@ spec: - reference properties: inline: - description: Inline definition of an S3 connection. + description: S3 connection definition as a resource. Learn more on the [S3 concept documentation](https://docs.stackable.tech/home/nightly/concepts/s3). properties: accessStyle: + default: VirtualHosted description: Which access style to use. Defaults to virtual hosted-style as most of the data products out there. Have a look at the [AWS documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html). enum: - Path - VirtualHosted - nullable: true type: string credentials: description: If the S3 uses authentication you have to specify you S3 credentials. In the most cases a [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass) providing `accessKey` and `secretKey` is sufficient. @@ -1105,6 +1111,12 @@ spec: description: '[Scope](https://docs.stackable.tech/home/nightly/secret-operator/scope) of the [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass).' nullable: true properties: + listenerVolumes: + default: [] + description: The listener volume scope allows Node and Service scopes to be inferred from the applicable listeners. This must correspond to Volume names in the Pod that mount Listeners. + items: + type: string + type: array node: default: false description: The node scope is resolved to the name of the Kubernetes Node object that the Pod is running on. This will typically be the DNS name of the node. @@ -1127,8 +1139,7 @@ spec: - secretClass type: object host: - description: 'Hostname of the S3 server without any protocol or port. For example: `west1.my-cloud.com`.' - nullable: true + description: 'Host of the S3 server without any protocol or port. For example: `west1.my-cloud.com`.' type: string port: description: Port the S3 server listens on. If not specified the product will determine the port to use. @@ -1137,7 +1148,7 @@ spec: nullable: true type: integer tls: - description: If you want to use TLS when talking to S3 you can enable TLS encrypted communication with this setting. + description: Use a TLS connection. If not specified no TLS will be used. nullable: true properties: verification: @@ -1176,14 +1187,17 @@ spec: required: - verification type: object + required: + - host type: object reference: - description: A reference to an S3Connection resource. type: string type: object + required: + - bucketName + - connection type: object reference: - description: A reference to an S3 bucket object. This is simply the name of the `S3Bucket` resource. type: string type: object prefix: @@ -1233,10 +1247,6 @@ spec: nullable: true type: object x-kubernetes-preserve-unknown-fields: true - required: - - nodeAffinity - - podAffinity - - podAntiAffinity type: object cleaner: nullable: true @@ -1453,10 +1463,6 @@ spec: nullable: true type: object x-kubernetes-preserve-unknown-fields: true - required: - - nodeAffinity - - podAffinity - - podAntiAffinity type: object cleaner: nullable: true diff --git a/rust/crd/src/history.rs b/rust/crd/src/history.rs index f2983864..61a5d87a 100644 --- a/rust/crd/src/history.rs +++ b/rust/crd/src/history.rs @@ -5,8 +5,6 @@ use crate::{affinity::history_affinity, constants::*}; use product_config::{types::PropertyNameKind, ProductConfigManager}; use serde::{Deserialize, Serialize}; use snafu::{OptionExt, ResultExt, Snafu}; -use stackable_operator::k8s_openapi::api::core::v1::EnvVar; -use stackable_operator::role_utils::RoleGroup; use stackable_operator::{ commons::{ affinity::StackableAffinity, @@ -15,22 +13,20 @@ use stackable_operator::{ CpuLimitsFragment, MemoryLimitsFragment, NoRuntimeLimits, NoRuntimeLimitsFragment, Resources, ResourcesFragment, }, - s3::S3BucketDef, + s3::S3BucketInlineOrReference, }, config::{ - fragment, - fragment::{Fragment, ValidationError}, + fragment::{self, Fragment, ValidationError}, merge::Merge, }, - k8s_openapi::apimachinery::pkg::api::resource::Quantity, - kube::CustomResource, - kube::{runtime::reflector::ObjectRef, ResourceExt}, + k8s_openapi::{api::core::v1::EnvVar, apimachinery::pkg::api::resource::Quantity}, + kube::{runtime::reflector::ObjectRef, CustomResource, ResourceExt}, product_config_utils::{ transform_all_roles_to_config, validate_all_roles_and_groups_config, Configuration, ValidatedRoleConfigByPropertyKind, }, product_logging::{self, spec::Logging}, - role_utils::{Role, RoleGroupRef}, + role_utils::{Role, RoleGroup, RoleGroupRef}, schemars::{self, JsonSchema}, }; use std::collections::{BTreeMap, HashMap}; @@ -338,7 +334,7 @@ pub enum LogFileDirectorySpec { #[serde(rename_all = "camelCase")] pub struct S3LogFileDirectorySpec { pub prefix: String, - pub bucket: S3BucketDef, + pub bucket: S3BucketInlineOrReference, } #[allow(clippy::derive_partial_eq_without_eq)] @@ -461,7 +457,10 @@ impl Configuration for HistoryConfigFragment { mod test { use super::*; use indoc::indoc; - use stackable_operator::commons::s3::InlinedS3BucketSpec; + use stackable_operator::commons::{ + s3::{ResolvedS3Bucket, ResolvedS3Connection}, + tls_verification::TlsClientDetails, + }; #[test] pub fn test_env_overrides() { @@ -496,9 +495,15 @@ mod test { serde_yaml::with::singleton_map_recursive::deserialize(deserializer).unwrap(); let s3_log_dir: S3LogDir = S3LogDir { - bucket: InlinedS3BucketSpec { - bucket_name: None, - connection: None, + bucket: ResolvedS3Bucket { + bucket_name: "my-bucket".to_string(), + connection: ResolvedS3Connection { + host: "my-s3".to_string().try_into().unwrap(), + port: None, + access_style: Default::default(), + credentials: None, + tls: TlsClientDetails { tls: None }, + }, }, prefix: "prefix".to_string(), }; diff --git a/rust/crd/src/lib.rs b/rust/crd/src/lib.rs index 8d195f74..304b8ce6 100644 --- a/rust/crd/src/lib.rs +++ b/rust/crd/src/lib.rs @@ -14,11 +14,6 @@ use product_config::{types::PropertyNameKind, ProductConfigManager}; use s3logdir::S3LogDir; use serde::{Deserialize, Serialize}; use snafu::{OptionExt, ResultExt, Snafu}; -use stackable_operator::product_config_utils::{ - transform_all_roles_to_config, validate_all_roles_and_groups_config, - ValidatedRoleConfigByPropertyKind, -}; -use stackable_operator::role_utils::EmptyRoleConfig; use stackable_operator::{ builder::pod::volume::{ SecretFormat, SecretOperatorVolumeSourceBuilder, SecretOperatorVolumeSourceBuilderError, @@ -27,9 +22,12 @@ use stackable_operator::{ commons::{ product_image_selection::{ProductImage, ResolvedProductImage}, resources::{CpuLimits, MemoryLimits, Resources}, - s3::{S3AccessStyle, S3ConnectionDef, S3ConnectionSpec}, + s3::{S3AccessStyle, S3ConnectionInlineOrReference, S3ConnectionSpec, S3Error}, + }, + config::{ + fragment::{self, ValidationError}, + merge::Merge, }, - config::{fragment, fragment::ValidationError, merge::Merge}, k8s_openapi::{ api::core::v1::{EmptyDirVolumeSource, EnvVar, PodTemplateSpec, Volume, VolumeMount}, apimachinery::pkg::api::resource::Quantity, @@ -37,8 +35,12 @@ use stackable_operator::{ kube::{CustomResource, ResourceExt}, kvp::ObjectLabels, memory::{BinaryMultiple, MemoryQuantity}, + product_config_utils::{ + transform_all_roles_to_config, validate_all_roles_and_groups_config, + ValidatedRoleConfigByPropertyKind, + }, product_logging, - role_utils::{CommonConfiguration, Role, RoleGroup}, + role_utils::{CommonConfiguration, EmptyRoleConfig, Role, RoleGroup}, schemars::{self, JsonSchema}, utils::crds::raw_object_list_schema, }; @@ -96,8 +98,11 @@ pub enum Error { source: stackable_operator::commons::secret_class::SecretClassVolumeError, }, - #[snafu(display("failed to build S3 log directory credentials Volume"))] - S3LogDirCredentialsVolumeBuild { source: s3logdir::Error }, + #[snafu(display("failed to configure S3 connection/bucket"))] + ConfigureS3 { source: S3Error }, + + #[snafu(display("failed to configure S3 log directory"))] + ConfigureS3LogDir { source: s3logdir::Error }, } #[derive(Clone, Debug, Deserialize, PartialEq, Serialize, JsonSchema)] @@ -186,7 +191,7 @@ pub struct SparkApplicationSpec { /// Configure an S3 connection that the SparkApplication has access to. /// Read more in the [Spark S3 usage guide](DOCS_BASE_URL_PLACEHOLDER/spark-k8s/usage-guide/s3). #[serde(default, skip_serializing_if = "Option::is_none")] - pub s3connection: Option, + pub s3connection: Option, /// Arguments passed directly to the job artifact. #[serde(default)] @@ -311,7 +316,7 @@ impl SparkApplication { if let Some(log_dir) = s3logdir.as_ref() { if let Some(volume) = log_dir .credentials_volume() - .context(S3LogDirCredentialsVolumeBuildSnafu)? + .context(ConfigureS3LogDirSnafu)? { result.push(volume); } @@ -547,29 +552,25 @@ impl SparkApplication { // See https://spark.apache.org/docs/latest/running-on-kubernetes.html#dependency-management // for possible S3 related properties - if let Some(endpoint) = s3conn.as_ref().and_then(|conn| conn.endpoint()) { - submit_cmd.push(format!("--conf spark.hadoop.fs.s3a.endpoint={}", endpoint)); - } - - if let Some(conn) = s3conn.as_ref() { - match conn.access_style { - Some(S3AccessStyle::Path) => { - submit_cmd - .push("--conf spark.hadoop.fs.s3a.path.style.access=true".to_string()); - } - Some(S3AccessStyle::VirtualHosted) => {} - None => {} - } - if let Some(credentials) = &conn.credentials { + if let Some(s3conn) = s3conn.as_ref() { + submit_cmd.push(format!( + "--conf spark.hadoop.fs.s3a.endpoint=\"{}\"", + s3conn.endpoint().context(ConfigureS3Snafu)? + )); + submit_cmd.push(format!( + "--conf spark.hadoop.fs.s3a.path.style.access={}", + s3conn.access_style == S3AccessStyle::Path + )); + if let Some(credentials) = &s3conn.credentials { let secret_class_name = credentials.secret_class.clone(); let secret_dir = format!("{S3_SECRET_DIR_NAME}/{secret_class_name}"); // We don't use the credentials at all here but assume they are available submit_cmd.push(format!( - "--conf spark.hadoop.fs.s3a.access.key=$(cat {secret_dir}/{ACCESS_KEY_ID})" + "--conf spark.hadoop.fs.s3a.access.key=\"$(cat {secret_dir}/{ACCESS_KEY_ID})\"" )); submit_cmd.push(format!( - "--conf spark.hadoop.fs.s3a.secret.key=$(cat {secret_dir}/{SECRET_ACCESS_KEY})" + "--conf spark.hadoop.fs.s3a.secret.key=\"$(cat {secret_dir}/{SECRET_ACCESS_KEY})\"" )); submit_cmd.push("--conf spark.hadoop.fs.s3a.aws.credentials.provider=org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider".to_string()); } else { @@ -645,7 +646,11 @@ impl SparkApplication { } if let Some(log_dir) = s3_log_dir { - submit_conf.extend(log_dir.application_spark_config()); + submit_conf.extend( + log_dir + .application_spark_config() + .context(ConfigureS3LogDirSnafu)?, + ); } if !self.packages().is_empty() { diff --git a/rust/crd/src/s3logdir.rs b/rust/crd/src/s3logdir.rs index 15944993..22cc67ea 100644 --- a/rust/crd/src/s3logdir.rs +++ b/rust/crd/src/s3logdir.rs @@ -12,26 +12,20 @@ use stackable_operator::{ VolumeBuilder, }, commons::{ - authentication::tls::{CaCert, TlsVerification}, - s3::{InlinedS3BucketSpec, S3AccessStyle}, + s3::{ResolvedS3Bucket, S3AccessStyle, S3Error}, secret_class::SecretClassVolume, }, k8s_openapi::api::core::v1::{Volume, VolumeMount}, }; use std::collections::BTreeMap; -use snafu::{OptionExt, ResultExt, Snafu}; +use snafu::{ResultExt, Snafu}; use strum::{EnumDiscriminants, IntoStaticStr}; #[derive(Snafu, Debug, EnumDiscriminants)] #[strum_discriminants(derive(IntoStaticStr))] #[allow(clippy::enum_variant_names)] pub enum Error { - #[snafu(display("s3 bucket error"))] - S3Bucket { - source: stackable_operator::commons::s3::Error, - }, - #[snafu(display("missing bucket name for history logs"))] BucketNameMissing, @@ -50,10 +44,13 @@ pub enum Error { CredentialsVolumeBuild { source: stackable_operator::commons::secret_class::SecretClassVolumeError, }, + + #[snafu(display("failed to configure S3 connection/bucket"))] + ConfigureS3 { source: S3Error }, } pub struct S3LogDir { - pub bucket: InlinedS3BucketSpec, + pub bucket: ResolvedS3Bucket, pub prefix: String, } @@ -64,50 +61,34 @@ impl S3LogDir { client: &stackable_operator::client::Client, ) -> Result, Error> { #[allow(irrefutable_let_patterns)] - let (s3bucket, prefix) = - if let Some(S3(S3LogFileDirectorySpec { bucket, prefix })) = log_file_dir { - ( - bucket - .resolve(client, namespace.unwrap().as_str()) - .await - .context(S3BucketSnafu) - .ok(), - prefix.clone(), - ) - } else { - // !!!!! - // Ugliness alert! - // No point in trying to resolve the connection anymore since there is no - // log_file_dir in the first place. - // This can casually happen for Spark applications that don't use a history server - // !!!!! - return Ok(None); - }; - - // Check that a bucket name has been defined - s3bucket - .as_ref() - .and_then(|i| i.bucket_name.as_ref()) - .context(BucketNameMissingSnafu)?; - - if let Some(conn) = s3bucket.as_ref().and_then(|i| i.connection.as_ref()) { - if let Some(tls) = &conn.tls { - match &tls.verification { - TlsVerification::None {} => return S3TlsNoVerificationNotSupportedSnafu.fail(), - TlsVerification::Server(server_verification) => { - match &server_verification.ca_cert { - CaCert::WebPki {} => {} - CaCert::SecretClass(_) => {} - } - } - } - } + let (bucket, prefix) = if let Some(S3(S3LogFileDirectorySpec { + bucket: bucket_def, + prefix, + })) = log_file_dir + { + ( + bucket_def + .clone() + .resolve(client, namespace.unwrap().as_str()) + .await + .context(ConfigureS3Snafu)?, + prefix.clone(), + ) + } else { + // !!!!! + // Ugliness alert! + // No point in trying to resolve the connection anymore since there is no + // log_file_dir in the first place. + // This can casually happen for Spark applications that don't use a history server + // !!!!! + return Ok(None); + }; + + if bucket.connection.tls.uses_tls() && !bucket.connection.tls.uses_tls() { + return S3TlsNoVerificationNotSupportedSnafu.fail(); } - Ok(Some(S3LogDir { - bucket: s3bucket.unwrap(), - prefix, - })) + Ok(Some(S3LogDir { bucket, prefix })) } /// Constructs the properties needed for loading event logs from S3. @@ -120,79 +101,64 @@ impl S3LogDir { /// /// Instead, the environment variables AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY are set /// on the container start command. - pub fn history_server_spark_config(&self) -> BTreeMap { - let mut result = BTreeMap::new(); - - result.insert("spark.history.fs.logDirectory".to_string(), self.url()); - - if let Some(endpoint) = self.bucket.endpoint() { - result.insert("spark.hadoop.fs.s3a.endpoint".to_string(), endpoint); - } - - if let Some(conn) = self.bucket.connection.as_ref() { - if let Some(S3AccessStyle::Path) = conn.access_style { - result.insert( - "spark.hadoop.fs.s3a.path.style.access".to_string(), - "true".to_string(), - ); - } - } - - result + pub fn history_server_spark_config(&self) -> Result, Error> { + let connection = &self.bucket.connection; + + Ok(BTreeMap::from([ + ("spark.history.fs.logDirectory".to_string(), self.url()), + ( + "spark.hadoop.fs.s3a.endpoint".to_string(), + connection.endpoint().context(ConfigureS3Snafu)?.to_string(), + ), + ( + "spark.hadoop.fs.s3a.path.style.access".to_string(), + (connection.access_style == S3AccessStyle::Path).to_string(), + ), + ])) } - pub fn application_spark_config(&self) -> BTreeMap { - let mut result = BTreeMap::new(); - result.insert("spark.eventLog.enabled".to_string(), "true".to_string()); - result.insert("spark.eventLog.dir".to_string(), self.url()); - - let bucket_name = self.bucket.bucket_name.as_ref().unwrap().clone(); - if let Some(endpoint) = self.bucket.endpoint() { + pub fn application_spark_config(&self) -> Result, Error> { + let mut result = BTreeMap::from([ + ("spark.eventLog.enabled".to_string(), "true".to_string()), + ("spark.eventLog.dir".to_string(), self.url()), + ]); + + let connection = &self.bucket.connection; + let bucket_name = &self.bucket.bucket_name; + result.insert( + format!("spark.hadoop.fs.s3a.bucket.{bucket_name}.endpoint"), + connection.endpoint().context(ConfigureS3Snafu)?.to_string(), + ); + result.insert( + format!("spark.hadoop.fs.s3a.bucket.{bucket_name}.path.style.access"), + (connection.access_style == S3AccessStyle::Path).to_string(), + ); + if let Some(secret_dir) = self.credentials_mount_path() { + // We don't use the credentials at all here but assume they are available result.insert( - format!("spark.hadoop.fs.s3a.bucket.{bucket_name}.endpoint"), - endpoint, + format!("spark.hadoop.fs.s3a.bucket.{bucket_name}.access.key"), + format!("\"$(cat {secret_dir}/{ACCESS_KEY_ID})\""), + ); + result.insert( + format!("spark.hadoop.fs.s3a.bucket.{bucket_name}.secret.key"), + format!("\"$(cat {secret_dir}/{SECRET_ACCESS_KEY})\""), + ); + result.insert( + format!("spark.hadoop.fs.s3a.bucket.{bucket_name}.aws.credentials.provider"), + "org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider".to_string(), + ); + } else { + result.insert( + format!("spark.hadoop.fs.s3a.bucket.{bucket_name}.aws.credentials.provider"), + "org.apache.hadoop.fs.s3a.AnonymousAWSCredentialsProvider".to_string(), ); } - if let Some(conn) = self.bucket.connection.as_ref() { - if let Some(S3AccessStyle::Path) = conn.access_style { - result.insert( - format!("spark.hadoop.fs.s3a.bucket.{bucket_name}.path.style.access"), - "true".to_string(), - ); - } - - if let Some(secret_dir) = self.credentials_mount_path() { - // We don't use the credentials at all here but assume they are available - result.insert( - format!("spark.hadoop.fs.s3a.bucket.{bucket_name}.access.key"), - format!("$(cat {secret_dir}/{ACCESS_KEY_ID})"), - ); - result.insert( - format!("spark.hadoop.fs.s3a.bucket.{bucket_name}.secret.key"), - format!("$(cat {secret_dir}/{SECRET_ACCESS_KEY})"), - ); - result.insert( - format!("spark.hadoop.fs.s3a.bucket.{bucket_name}.aws.credentials.provider"), - "org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider".to_string(), - ); - } else { - result.insert( - format!("spark.hadoop.fs.s3a.bucket.{bucket_name}.aws.credentials.provider"), - "org.apache.hadoop.fs.s3a.AnonymousAWSCredentialsProvider".to_string(), - ); - } - } - - result + Ok(result) } fn url(&self) -> String { - format!( - "s3a://{}/{}", - self.bucket.bucket_name.as_ref().unwrap().clone(), // this is guaranteed to exist at this point - self.prefix - ) + format!("s3a://{}/{}", self.bucket.bucket_name, self.prefix) } pub fn volumes(&self) -> Result, Error> { @@ -251,10 +217,7 @@ impl S3LogDir { } pub fn credentials(&self) -> Option { - self.bucket - .connection - .as_ref() - .and_then(|conn| conn.credentials.clone()) + self.bucket.connection.credentials.clone() } pub fn credentials_mount_path(&self) -> Option { diff --git a/rust/crd/src/tlscerts.rs b/rust/crd/src/tlscerts.rs index 1c1e7a67..2ba144a2 100644 --- a/rust/crd/src/tlscerts.rs +++ b/rust/crd/src/tlscerts.rs @@ -1,7 +1,6 @@ -use stackable_operator::commons::authentication::tls::{Tls, TlsServerVerification}; use stackable_operator::commons::{ - authentication::tls::{CaCert, TlsVerification}, - s3::S3ConnectionSpec, + s3::{ResolvedS3Connection, S3ConnectionSpec}, + tls_verification::{CaCert, Tls, TlsClientDetails, TlsServerVerification, TlsVerification}, }; use crate::{ @@ -12,17 +11,20 @@ use crate::{ s3logdir::S3LogDir, }; -pub fn tls_secret_name(s3conn: &Option) -> Option<&str> { - if let Some(S3ConnectionSpec { +pub fn tls_secret_name(s3conn: &ResolvedS3Connection) -> Option<&str> { + if let ResolvedS3Connection { tls: - Some(Tls { - verification: - TlsVerification::Server(TlsServerVerification { - ca_cert: CaCert::SecretClass(ref secret_name), + TlsClientDetails { + tls: + Some(Tls { + verification: + TlsVerification::Server(TlsServerVerification { + ca_cert: CaCert::SecretClass(ref secret_name), + }), }), - }), + }, .. - }) = s3conn + } = s3conn { return Some(secret_name); } @@ -36,7 +38,7 @@ pub fn tls_secret_names<'a>( ) -> Option> { let mut names = Vec::new(); - if let Some(secret_name) = tls_secret_name(s3conn) { + if let Some(secret_name) = s3conn.as_ref().and_then(|s3conn| tls_secret_name(s3conn)) { names.push(secret_name); } diff --git a/rust/operator-binary/src/history/history_controller.rs b/rust/operator-binary/src/history/history_controller.rs index fed03bb1..4ad2bf66 100644 --- a/rust/operator-binary/src/history/history_controller.rs +++ b/rust/operator-binary/src/history/history_controller.rs @@ -2,9 +2,9 @@ use crate::history::operations::pdb::add_pdbs; use crate::product_logging::{self, resolve_vector_aggregator_address}; use crate::Ctx; use product_config::{types::PropertyNameKind, writer::to_java_properties_string}; -use stackable_operator::kvp::{Label, Labels, ObjectLabels}; use stackable_operator::{ builder::{ + self, configmap::ConfigMapBuilder, meta::ObjectMetaBuilder, pod::{container::ContainerBuilder, volume::VolumeBuilder, PodBuilder}, @@ -25,8 +25,9 @@ use stackable_operator::{ runtime::{controller::Action, reflector::ObjectRef}, Resource, ResourceExt, }, + kvp::{Label, Labels, ObjectLabels}, product_logging::{ - framework::{calculate_log_volume_size_limit, vector_container}, + framework::{calculate_log_volume_size_limit, vector_container, LoggingError}, spec::{ ConfigMapLogConfig, ContainerLogConfig, ContainerLogConfigChoice, CustomContainerLogConfig, @@ -65,72 +66,94 @@ use strum::{EnumDiscriminants, IntoStaticStr}; pub enum Error { #[snafu(display("object has no namespace"))] ObjectHasNoNamespace, + #[snafu(display("invalid config map {name}"))] InvalidConfigMap { source: stackable_operator::builder::configmap::Error, name: String, }, + #[snafu(display("invalid history container name"))] InvalidContainerName { source: stackable_operator::builder::pod::container::Error, }, + #[snafu(display("object is missing metadata to build owner reference"))] ObjectMissingMetadataForOwnerRef { source: stackable_operator::builder::meta::Error, }, + #[snafu(display("failed to update the history server deployment"))] ApplyDeployment { source: stackable_operator::cluster_resources::Error, }, + #[snafu(display("failed to update history server config map"))] ApplyConfigMap { source: stackable_operator::cluster_resources::Error, }, + #[snafu(display("failed to update history server service"))] ApplyService { source: stackable_operator::cluster_resources::Error, }, + #[snafu(display("failed to apply role ServiceAccount"))] ApplyServiceAccount { source: stackable_operator::cluster_resources::Error, }, + #[snafu(display("failed to apply global RoleBinding"))] ApplyRoleBinding { source: stackable_operator::cluster_resources::Error, }, + #[snafu(display("product config validation failed"))] ProductConfigValidation { source: stackable_spark_k8s_crd::history::Error, }, + #[snafu(display("failed to resolve and merge config for role and role group"))] FailedToResolveConfig { source: stackable_spark_k8s_crd::history::Error, }, + #[snafu(display("number of cleaner rolegroups exceeds 1"))] TooManyCleanerRoleGroups, + #[snafu(display("number of cleaner replicas exceeds 1"))] TooManyCleanerReplicas, - #[snafu(display("failed to resolve the s3 log dir confirguration"))] + + #[snafu(display("failed to resolve the s3 log dir configuration"))] S3LogDir { source: stackable_spark_k8s_crd::s3logdir::Error, }, + #[snafu(display("failed to create cluster resources"))] CreateClusterResources { source: stackable_operator::cluster_resources::Error, }, + #[snafu(display("failed to delete orphaned resources"))] DeleteOrphanedResources { source: stackable_operator::cluster_resources::Error, }, + #[snafu(display("failed to resolve the Vector aggregator address"))] ResolveVectorAggregatorAddress { source: product_logging::Error }, + #[snafu(display("failed to add the logging configuration to the ConfigMap [{cm_name}]"))] InvalidLoggingConfig { source: product_logging::Error, cm_name: String, }, + + #[snafu(display("failed to configure logging"))] + ConfigureLogging { source: LoggingError }, + #[snafu(display("cannot retrieve role group"))] CannotRetrieveRoleGroup { source: history::Error }, + #[snafu(display( "History server : failed to serialize [{JVM_SECURITY_PROPERTIES_FILE}] for group {}", rolegroup @@ -139,6 +162,7 @@ pub enum Error { source: product_config::writer::PropertiesWriterError, rolegroup: String, }, + #[snafu(display("failed to create PodDisruptionBudget"))] FailedToCreatePdb { source: crate::history::operations::pdb::Error, @@ -164,6 +188,14 @@ pub enum Error { CreateS3LogDirVolumes { source: stackable_spark_k8s_crd::s3logdir::Error, }, + + #[snafu(display("failed to add needed volume"))] + AddVolume { source: builder::pod::Error }, + + #[snafu(display("failed to add needed volumeMount"))] + AddVolumeMount { + source: builder::pod::container::Error, + }, } type Result = std::result::Result; @@ -417,11 +449,13 @@ fn build_stateful_set( .with_config_map(rolegroupref.object_name()) .build(), ) + .context(AddVolumeSnafu)? .add_volume( VolumeBuilder::new(VOLUME_MOUNT_NAME_LOG_CONFIG) .with_config_map(log_config_map) .build(), ) + .context(AddVolumeSnafu)? .add_volume( VolumeBuilder::new(VOLUME_MOUNT_NAME_LOG) .with_empty_dir( @@ -430,7 +464,9 @@ fn build_stateful_set( ) .build(), ) + .context(AddVolumeSnafu)? .add_volumes(s3_log_dir.volumes().context(CreateS3LogDirVolumesSnafu)?) + .context(AddVolumeSnafu)? .security_context(PodSecurityContext { run_as_user: Some(SPARK_UID), run_as_group: Some(0), @@ -455,28 +491,35 @@ fn build_stateful_set( .add_container_port("metrics", METRICS_PORT.into()) .add_env_vars(merged_env) .add_volume_mounts(s3_log_dir.volume_mounts()) + .context(AddVolumeMountSnafu)? .add_volume_mount(VOLUME_MOUNT_NAME_CONFIG, VOLUME_MOUNT_PATH_CONFIG) + .context(AddVolumeMountSnafu)? .add_volume_mount(VOLUME_MOUNT_NAME_LOG_CONFIG, VOLUME_MOUNT_PATH_LOG_CONFIG) + .context(AddVolumeMountSnafu)? .add_volume_mount(VOLUME_MOUNT_NAME_LOG, VOLUME_MOUNT_PATH_LOG) + .context(AddVolumeMountSnafu)? .build(); pb.add_container(container); if config.logging.enable_vector_agent { - pb.add_container(vector_container( - resolved_product_image, - VOLUME_MOUNT_NAME_CONFIG, - VOLUME_MOUNT_NAME_LOG, - config - .logging - .containers - .get(&SparkHistoryServerContainer::Vector), - ResourceRequirementsBuilder::new() - .with_cpu_request("250m") - .with_cpu_limit("500m") - .with_memory_request("128Mi") - .with_memory_limit("128Mi") - .build(), - )); + pb.add_container( + vector_container( + resolved_product_image, + VOLUME_MOUNT_NAME_CONFIG, + VOLUME_MOUNT_NAME_LOG, + config + .logging + .containers + .get(&SparkHistoryServerContainer::Vector), + ResourceRequirementsBuilder::new() + .with_cpu_request("250m") + .with_cpu_limit("500m") + .with_memory_request("128Mi") + .with_memory_limit("128Mi") + .build(), + ) + .context(ConfigureLoggingSnafu)?, + ); } let mut pod_template = pb.build_template(); @@ -631,7 +674,9 @@ fn spark_defaults( s3_log_dir: &S3LogDir, rolegroupref: &RoleGroupRef, ) -> Result { - let mut log_dir_settings = s3_log_dir.history_server_spark_config(); + let mut log_dir_settings = s3_log_dir + .history_server_spark_config() + .context(S3LogDirSnafu)?; // add cleaner spark settings if requested log_dir_settings.extend(cleaner_config(shs, rolegroupref)?); diff --git a/rust/operator-binary/src/spark_k8s_controller.rs b/rust/operator-binary/src/spark_k8s_controller.rs index a890a6c9..cae22797 100644 --- a/rust/operator-binary/src/spark_k8s_controller.rs +++ b/rust/operator-binary/src/spark_k8s_controller.rs @@ -7,7 +7,15 @@ use std::{ }; use product_config::writer::to_java_properties_string; -use stackable_operator::time::Duration; +use stackable_operator::{ + builder, + commons::{ + s3::S3Error, + tls_verification::{CaCert, TlsVerification}, + }, + product_logging::framework::LoggingError, + time::Duration, +}; use stackable_spark_k8s_crd::{ constants::*, s3logdir::S3LogDir, tlscerts, RoleConfig, SparkApplication, SparkApplicationRole, SparkApplicationStatus, SparkContainer, SubmitConfig, @@ -22,11 +30,7 @@ use stackable_operator::{ configmap::ConfigMapBuilder, meta::ObjectMetaBuilder, pod::container::ContainerBuilder, pod::resources::ResourceRequirementsBuilder, pod::volume::VolumeBuilder, pod::PodBuilder, }, - commons::{ - authentication::tls::{CaCert, TlsVerification}, - product_image_selection::ResolvedProductImage, - s3::S3ConnectionSpec, - }, + commons::{product_image_selection::ResolvedProductImage, s3::S3ConnectionSpec}, k8s_openapi::{ api::{ batch::v1::{Job, JobSpec}, @@ -62,74 +66,95 @@ use strum::{EnumDiscriminants, IntoStaticStr}; pub enum Error { #[snafu(display("object has no namespace"))] ObjectHasNoNamespace, + #[snafu(display("object is missing metadata to build owner reference"))] ObjectMissingMetadataForOwnerRef { source: stackable_operator::builder::meta::Error, }, + #[snafu(display("failed to apply role ServiceAccount"))] ApplyServiceAccount { source: stackable_operator::client::Error, }, + #[snafu(display("failed to apply global RoleBinding"))] ApplyRoleBinding { source: stackable_operator::client::Error, }, + #[snafu(display("failed to apply Job"))] ApplyApplication { source: stackable_operator::client::Error, }, + #[snafu(display("failed to build stark-submit command"))] BuildCommand { source: stackable_spark_k8s_crd::Error, }, + #[snafu(display("failed to build the pod template config map"))] PodTemplateConfigMap { source: stackable_operator::builder::configmap::Error, }, + #[snafu(display("pod template serialization"))] PodTemplateSerde { source: serde_yaml::Error }, - #[snafu(display("s3 bucket error"))] - S3Bucket { - source: stackable_operator::commons::s3::Error, - }, + + #[snafu(display("failed to configure S3 connection/bucket"))] + ConfigureS3 { source: S3Error }, + #[snafu(display("tls non-verification not supported"))] S3TlsNoVerificationNotSupported, + #[snafu(display("ca-cert verification not supported"))] S3TlsCaVerificationNotSupported, + #[snafu(display("failed to resolve and merge config"))] FailedToResolveConfig { source: stackable_spark_k8s_crd::Error, }, + #[snafu(display("failed to recognise the container name"))] UnrecognisedContainerName, + #[snafu(display("illegal container name"))] IllegalContainerName { source: stackable_operator::builder::pod::container::Error, }, + #[snafu(display("failed to resolve the s3 log dir configuration"))] S3LogDir { source: stackable_spark_k8s_crd::s3logdir::Error, }, + #[snafu(display("failed to resolve the Vector aggregator address"))] ResolveVectorAggregatorAddress { source: product_logging::Error }, + #[snafu(display("failed to add the logging configuration to the ConfigMap [{cm_name}]"))] InvalidLoggingConfig { source: product_logging::Error, cm_name: String, }, + + #[snafu(display("failed to configure logging"))] + ConfigureLogging { source: LoggingError }, + #[snafu(display("failed to serialize [{JVM_SECURITY_PROPERTIES_FILE}] for {}", role))] JvmSecurityProperties { source: product_config::writer::PropertiesWriterError, role: SparkApplicationRole, }, + #[snafu(display("failed to generate product config"))] GenerateProductConfig { source: stackable_operator::product_config_utils::Error, }, + #[snafu(display("invalid product config"))] InvalidProductConfig { source: stackable_spark_k8s_crd::Error, }, + #[snafu(display("invalid submit config"))] SubmitConfig { source: stackable_spark_k8s_crd::Error, @@ -161,6 +186,14 @@ pub enum Error { source: stackable_operator::client::Error, name: String, }, + + #[snafu(display("failed to add needed volume"))] + AddVolume { source: builder::pod::Error }, + + #[snafu(display("failed to add needed volumeMount"))] + AddVolumeMount { + source: builder::pod::container::Error, + }, } type Result = std::result::Result; @@ -185,20 +218,21 @@ pub async fn reconcile(spark_application: Arc, ctx: Arc) } let opt_s3conn = match spark_application.spec.s3connection.as_ref() { - Some(s3bd) => s3bd - .resolve( - client, - spark_application.metadata.namespace.as_deref().unwrap(), - ) - .await - .context(S3BucketSnafu) - .ok(), + Some(s3bd) => Some( + s3bd.clone() + .resolve( + client, + spark_application.metadata.namespace.as_deref().unwrap(), + ) + .await + .context(ConfigureS3Snafu)?, + ), _ => None, }; // check early for valid verification options if let Some(conn) = opt_s3conn.as_ref() { - if let Some(tls) = &conn.tls { + if let Some(tls) = &conn.tls.tls { match &tls.verification { TlsVerification::None {} => return S3TlsNoVerificationNotSupportedSnafu.fail(), TlsVerification::Server(server_verification) => { @@ -388,107 +422,126 @@ fn init_containers( ) -> Result> { let mut jcb = ContainerBuilder::new(&SparkContainer::Job.to_string()) .context(IllegalContainerNameSnafu)?; - let job_container = spark_application.spec.image.as_ref().map(|job_image| { - let mut args = Vec::new(); - if let Some(ContainerLogConfig { - choice: Some(ContainerLogConfigChoice::Automatic(log_config)), - }) = logging.containers.get(&SparkContainer::Job) - { - args.push(capture_shell_output( - VOLUME_MOUNT_PATH_LOG, - &SparkContainer::Job.to_string(), - log_config, - )); - }; - args.push(format!("echo Copying job files to {VOLUME_MOUNT_PATH_JOB}")); - args.push(format!("cp /jobs/* {VOLUME_MOUNT_PATH_JOB}")); - // Wait until the log file is written. - args.push("sleep 1".into()); - - jcb.image(job_image) - .command(vec!["/bin/bash".to_string(), "-c".to_string()]) - .args(vec![args.join(" && ")]) - .add_volume_mount(VOLUME_MOUNT_NAME_JOB, VOLUME_MOUNT_PATH_JOB) - .add_volume_mount(VOLUME_MOUNT_NAME_LOG, VOLUME_MOUNT_PATH_LOG) - .resources( - ResourceRequirementsBuilder::new() - .with_cpu_request("250m") - .with_cpu_limit("500m") - .with_memory_request("128Mi") - .with_memory_limit("128Mi") + let job_container = match &spark_application.spec.image { + Some(job_image) => { + let mut args = Vec::new(); + if let Some(ContainerLogConfig { + choice: Some(ContainerLogConfigChoice::Automatic(log_config)), + }) = logging.containers.get(&SparkContainer::Job) + { + args.push(capture_shell_output( + VOLUME_MOUNT_PATH_LOG, + &SparkContainer::Job.to_string(), + log_config, + )); + }; + args.push(format!("echo Copying job files to {VOLUME_MOUNT_PATH_JOB}")); + args.push(format!("cp /jobs/* {VOLUME_MOUNT_PATH_JOB}")); + // Wait until the log file is written. + args.push("sleep 1".into()); + + Some( + jcb.image(job_image) + .command(vec!["/bin/bash".to_string(), "-c".to_string()]) + .args(vec![args.join(" && ")]) + .add_volume_mount(VOLUME_MOUNT_NAME_JOB, VOLUME_MOUNT_PATH_JOB) + .context(AddVolumeMountSnafu)? + .add_volume_mount(VOLUME_MOUNT_NAME_LOG, VOLUME_MOUNT_PATH_LOG) + .context(AddVolumeMountSnafu)? + .resources( + ResourceRequirementsBuilder::new() + .with_cpu_request("250m") + .with_cpu_limit("500m") + .with_memory_request("128Mi") + .with_memory_limit("128Mi") + .build(), + ) .build(), ) - .build() - }); + } + None => None, + }; let mut rcb = ContainerBuilder::new(&SparkContainer::Requirements.to_string()) .context(IllegalContainerNameSnafu)?; - let requirements_container = spark_application.requirements().map(|req| { - let mut args = Vec::new(); - if let Some(ContainerLogConfig { - choice: Some(ContainerLogConfigChoice::Automatic(log_config)), - }) = logging.containers.get(&SparkContainer::Requirements) - { - args.push(capture_shell_output( - VOLUME_MOUNT_PATH_LOG, - &SparkContainer::Requirements.to_string(), - log_config, + let requirements_container = match spark_application.requirements() { + Some(req) => { + let mut args = Vec::new(); + if let Some(ContainerLogConfig { + choice: Some(ContainerLogConfigChoice::Automatic(log_config)), + }) = logging.containers.get(&SparkContainer::Requirements) + { + args.push(capture_shell_output( + VOLUME_MOUNT_PATH_LOG, + &SparkContainer::Requirements.to_string(), + log_config, + )); + }; + args.push(format!( + "echo Installing requirements to {VOLUME_MOUNT_PATH_REQ}: {req}" + )); + args.push(format!( + "pip install --target={VOLUME_MOUNT_PATH_REQ} {req}" )); - }; - args.push(format!( - "echo Installing requirements to {VOLUME_MOUNT_PATH_REQ}: {req}" - )); - args.push(format!( - "pip install --target={VOLUME_MOUNT_PATH_REQ} {req}" - )); - - rcb.image(&spark_image.image) - .command(vec!["/bin/bash".to_string(), "-c".to_string()]) - .args(vec![args.join(" && ")]) - .add_volume_mount(VOLUME_MOUNT_NAME_REQ, VOLUME_MOUNT_PATH_REQ) - .add_volume_mount(VOLUME_MOUNT_NAME_LOG, VOLUME_MOUNT_PATH_LOG) - .image_pull_policy(&spark_image.image_pull_policy); - - rcb.resources( - ResourceRequirementsBuilder::new() - .with_cpu_request("250m") - .with_cpu_limit("1000m") - .with_memory_request("1024Mi") - .with_memory_limit("1024Mi") - .build(), - ); - rcb.build() - }); + rcb.image(&spark_image.image) + .command(vec!["/bin/bash".to_string(), "-c".to_string()]) + .args(vec![args.join(" && ")]) + .add_volume_mount(VOLUME_MOUNT_NAME_REQ, VOLUME_MOUNT_PATH_REQ) + .context(AddVolumeMountSnafu)? + .add_volume_mount(VOLUME_MOUNT_NAME_LOG, VOLUME_MOUNT_PATH_LOG) + .context(AddVolumeMountSnafu)? + .image_pull_policy(&spark_image.image_pull_policy); - // if TLS is enabled, build TrustStore and put secret inside. - let mut tcb = ContainerBuilder::new(&SparkContainer::Tls.to_string()) - .context(IllegalContainerNameSnafu)?; - let mut args = Vec::new(); - - let tls_container = tlscerts::tls_secret_names(s3conn, s3logdir).map(|cert_secrets| { - args.extend(tlscerts::convert_system_trust_store_to_pkcs12()); - for cert_secret in cert_secrets { - args.extend(tlscerts::import_truststore(cert_secret)); - tcb.add_volume_mount( - cert_secret, - format!("{STACKABLE_MOUNT_PATH_TLS}/{cert_secret}"), - ); - } - tcb.image(&spark_image.image) - .command(vec!["/bin/bash".to_string(), "-c".to_string()]) - .args(vec![args.join(" && ")]) - .add_volume_mount(STACKABLE_TRUST_STORE_NAME, STACKABLE_TRUST_STORE) - .resources( + rcb.resources( ResourceRequirementsBuilder::new() .with_cpu_request("250m") .with_cpu_limit("1000m") .with_memory_request("1024Mi") .with_memory_limit("1024Mi") .build(), + ); + + Some(rcb.build()) + } + None => None, + }; + + // if TLS is enabled, build TrustStore and put secret inside. + let mut tcb = ContainerBuilder::new(&SparkContainer::Tls.to_string()) + .context(IllegalContainerNameSnafu)?; + let mut args = Vec::new(); + + let tls_container = match tlscerts::tls_secret_names(s3conn, s3logdir) { + Some(cert_secrets) => { + args.extend(tlscerts::convert_system_trust_store_to_pkcs12()); + for cert_secret in cert_secrets { + args.extend(tlscerts::import_truststore(cert_secret)); + tcb.add_volume_mount( + cert_secret, + format!("{STACKABLE_MOUNT_PATH_TLS}/{cert_secret}"), + ) + .context(AddVolumeMountSnafu)?; + } + Some( + tcb.image(&spark_image.image) + .command(vec!["/bin/bash".to_string(), "-c".to_string()]) + .args(vec![args.join(" && ")]) + .add_volume_mount(STACKABLE_TRUST_STORE_NAME, STACKABLE_TRUST_STORE) + .context(AddVolumeMountSnafu)? + .resources( + ResourceRequirementsBuilder::new() + .with_cpu_request("250m") + .with_cpu_limit("1000m") + .with_memory_request("1024Mi") + .with_memory_limit("1024Mi") + .build(), + ) + .build(), ) - .build() - }); + } + None => None, + }; Ok(vec![job_container, requirements_container, tls_container] .into_iter() @@ -512,6 +565,7 @@ fn pod_template( let merged_env = spark_application.merged_env(role.clone(), env); cb.add_volume_mounts(config.volume_mounts(spark_application, s3conn, s3logdir)) + .context(AddVolumeMountSnafu)? .add_env_vars(merged_env) .resources(config.resources.clone().into()) .image_from_product_image(spark_image); @@ -545,6 +599,7 @@ fn pod_template( ) .add_container(cb.build()) .add_volumes(volumes.to_vec()) + .context(AddVolumeSnafu)? .security_context(security_context()) .image_pull_secrets_from_product_image(spark_image) .affinity(&config.affinity); @@ -563,18 +618,21 @@ fn pod_template( } if config.logging.enable_vector_agent { - pb.add_container(vector_container( - spark_image, - VOLUME_MOUNT_NAME_CONFIG, - VOLUME_MOUNT_NAME_LOG, - config.logging.containers.get(&SparkContainer::Vector), - ResourceRequirementsBuilder::new() - .with_cpu_request("250m") - .with_cpu_limit("500m") - .with_memory_request("128Mi") - .with_memory_limit("128Mi") - .build(), - )); + pb.add_container( + vector_container( + spark_image, + VOLUME_MOUNT_NAME_CONFIG, + VOLUME_MOUNT_NAME_LOG, + config.logging.containers.get(&SparkContainer::Vector), + ResourceRequirementsBuilder::new() + .with_cpu_request("250m") + .with_cpu_limit("500m") + .with_memory_request("128Mi") + .with_memory_limit("128Mi") + .build(), + ) + .context(ConfigureLoggingSnafu)?, + ); } let mut pod_template = pb.build_template(); @@ -754,6 +812,7 @@ fn spark_job( .args(vec![args.join(" && ")]) .resources(job_config.resources.clone().into()) .add_volume_mounts(spark_application.spark_job_volume_mounts(s3conn, s3logdir)) + .context(AddVolumeMountSnafu)? .add_env_vars(merged_env) .add_env_var( "SPARK_SUBMIT_OPTS",