diff --git a/Cargo.lock b/Cargo.lock index 2ae18a06..de4b1c71 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -45,12 +45,6 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - [[package]] name = "android_system_properties" version = "0.1.5" @@ -116,6 +110,12 @@ version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100" +[[package]] +name = "arc-swap" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" + [[package]] name = "async-broadcast" version = "0.7.2" @@ -253,12 +253,24 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + [[package]] name = "base64" version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +[[package]] +name = "base64ct" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" + [[package]] name = "bindgen" version = "0.71.1" @@ -281,24 +293,24 @@ dependencies = [ [[package]] name = "bit-set" -version = "0.5.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" dependencies = [ "bit-vec", ] [[package]] name = "bit-vec" -version = "0.6.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" [[package]] name = "bitflags" -version = "2.9.3" +version = "2.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34efbcccd345379ca2868b2b2c9d3782e9cc58ba87bc7d79d5b53d9c9ae6f25d" +checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" [[package]] name = "block-buffer" @@ -357,10 +369,11 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.34" +version = "1.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42bc4aea80032b7bf409b0bc7ccad88853858911b7713a8062fdc0623867bedc" +checksum = "65193589c6404eb80b450d618eaf9a2cafaaafd57ecce47370519ef674a7bd44" dependencies = [ + "find-msvc-tools", "jobserver", "libc", "shlex", @@ -373,7 +386,7 @@ dependencies = [ "clap", "hex", "openssl", - "snafu 0.8.7", + "snafu 0.8.9", "stackable-secret-operator-utils", "stackable-telemetry 0.6.1 (git+https://github.com/stackabletech/operator-rs.git?tag=stackable-telemetry-0.6.1)", "tracing", @@ -397,15 +410,14 @@ checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" [[package]] name = "chrono" -version = "0.4.41" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" dependencies = [ - "android-tzdata", "iana-time-zone", "num-traits", "serde", - "windows-link", + "windows-link 0.2.0", ] [[package]] @@ -431,9 +443,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.45" +version = "4.5.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc0e74a703892159f5ae7d3aac52c8e6c392f5ae5f359c70b5881d60aaac318" +checksum = "7eac00902d9d136acd712710d71823fb8ac8004ca445a89e73a41d45aa712931" dependencies = [ "clap_builder", "clap_derive", @@ -441,9 +453,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.44" +version = "4.5.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3e7f4214277f3c7aa526a59dd3fbe306a370daee1f8b7b8c987069cd8e888a8" +checksum = "2ad9bbf750e73b5884fb8a211a9424a1906c1e156724260fdae972f31d70e1d6" dependencies = [ "anstream", "anstyle", @@ -453,9 +465,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.45" +version = "4.5.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14cb31bb0a7d536caef2639baa7fad459e15c3144efefa6dbd1c84562c4739f6" +checksum = "bbfd7eae0b0f1a6e63d4b13c9c478de77c2eb546fba158ad50b4203dc24b9f9c" dependencies = [ "heck", "proc-macro2", @@ -484,6 +496,12 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + [[package]] name = "const_format" version = "0.2.34" @@ -586,23 +604,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] -name = "crypto-common" -version = "0.1.6" +name = "crypto-bigint" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ "generic-array", - "typenum", + "rand_core 0.6.4", + "subtle", + "zeroize", ] [[package]] -name = "darling" -version = "0.20.11" +name = "crypto-common" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ - "darling_core 0.20.11", - "darling_macro 0.20.11", + "generic-array", + "typenum", ] [[package]] @@ -611,15 +631,15 @@ version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" dependencies = [ - "darling_core 0.21.3", - "darling_macro 0.21.3", + "darling_core", + "darling_macro", ] [[package]] name = "darling_core" -version = "0.20.11" +version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" +checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" dependencies = [ "fnv", "ident_case", @@ -630,46 +650,45 @@ dependencies = [ ] [[package]] -name = "darling_core" +name = "darling_macro" version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" +checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ - "fnv", - "ident_case", - "proc-macro2", + "darling_core", "quote", - "strsim", "syn 2.0.106", ] [[package]] -name = "darling_macro" -version = "0.20.11" +name = "delegate" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" +checksum = "6178a82cf56c836a3ba61a7935cdb1c49bfaa6fa4327cd5bf554a503087de26b" dependencies = [ - "darling_core 0.20.11", + "proc-macro2", "quote", "syn 2.0.106", ] [[package]] -name = "darling_macro" -version = "0.21.3" +name = "der" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" dependencies = [ - "darling_core 0.21.3", - "quote", - "syn 2.0.106", + "const-oid", + "der_derive", + "flagset", + "pem-rfc7468", + "zeroize", ] [[package]] -name = "delegate" -version = "0.13.4" +name = "der_derive" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6178a82cf56c836a3ba61a7935cdb1c49bfaa6fa4327cd5bf554a503087de26b" +checksum = "8034092389675178f570469e6c3b0465d3d30b4505c294a6550db47f3c17ad18" dependencies = [ "proc-macro2", "quote", @@ -678,9 +697,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.4.0" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +checksum = "d630bccd429a5bb5a64b5e94f693bfc48c9f8566418fda4c494cc94f911f87cc" dependencies = [ "powerfmt", ] @@ -721,6 +740,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer", + "const-oid", "crypto-common", "subtle", ] @@ -762,6 +782,20 @@ version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest", + "elliptic-curve", + "rfc6979", + "signature", + "spki", +] + [[package]] name = "educe" version = "0.6.0" @@ -780,6 +814,26 @@ version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest", + "ff", + "generic-array", + "group", + "pem-rfc7468", + "pkcs8", + "rand_core 0.6.4", + "sec1", + "subtle", + "zeroize", +] + [[package]] name = "encoding_rs" version = "0.8.35" @@ -826,12 +880,12 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.0", ] [[package]] @@ -857,9 +911,9 @@ dependencies = [ [[package]] name = "fancy-regex" -version = "0.13.0" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "531e46835a22af56d1e3b66f04844bed63158bc094a628bec1d321d9b4c44bf2" +checksum = "998b056554fbe42e03ae0e152895cd1a7e1002aec800fdc6635d20270260c46f" dependencies = [ "bit-set", "regex-automata", @@ -872,12 +926,34 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +[[package]] +name = "ff" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +dependencies = [ + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "find-msvc-tools" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fd99930f64d146689264c637b5af2f0233a933bef0d8570e2526bf9e083192d" + [[package]] name = "fixedbitset" version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" +[[package]] +name = "flagset" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7ac824320a75a52197e8f2d787f6a38b6718bb6897a35142d749af3c0e8f4fe" + [[package]] name = "flate2" version = "1.1.2" @@ -1028,6 +1104,7 @@ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", + "zeroize", ] [[package]] @@ -1050,7 +1127,7 @@ dependencies = [ "cfg-if", "libc", "r-efi", - "wasi 0.14.2+wasi-0.2.4", + "wasi 0.14.7+wasi-0.2.4", ] [[package]] @@ -1090,6 +1167,17 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand_core 0.6.4", + "subtle", +] + [[package]] name = "h2" version = "0.4.12" @@ -1120,30 +1208,6 @@ dependencies = [ "foldhash", ] -[[package]] -name = "headers" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3314d5adb5d94bcdf56771f2e50dbbc80bb4bdf88967526706205ac9eff24eb" -dependencies = [ - "base64", - "bytes", - "headers-core", - "http", - "httpdate", - "mime", - "sha1", -] - -[[package]] -name = "headers-core" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" -dependencies = [ - "http", -] - [[package]] name = "heck" version = "0.5.0" @@ -1188,7 +1252,7 @@ checksum = "a56f203cd1c76362b69e3863fd987520ac36cf70a8c92627449b2f64a8cf7d65" dependencies = [ "cfg-if", "libc", - "windows-link", + "windows-link 0.1.3", ] [[package]] @@ -1260,26 +1324,6 @@ dependencies = [ "want", ] -[[package]] -name = "hyper-http-proxy" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ad4b0a1e37510028bc4ba81d0e38d239c39671b0f0ce9e02dfa93a8133f7c08" -dependencies = [ - "bytes", - "futures-util", - "headers", - "http", - "hyper", - "hyper-rustls", - "hyper-util", - "pin-project-lite", - "rustls-native-certs 0.7.3", - "tokio", - "tokio-rustls", - "tower-service", -] - [[package]] name = "hyper-rustls" version = "0.27.7" @@ -1291,7 +1335,7 @@ dependencies = [ "hyper-util", "log", "rustls", - "rustls-native-certs 0.8.1", + "rustls-native-certs", "rustls-pki-types", "tokio", "tokio-rustls", @@ -1313,9 +1357,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e" +checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" dependencies = [ "base64", "bytes", @@ -1337,9 +1381,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.63" +version = "0.1.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -1347,7 +1391,7 @@ dependencies = [ "js-sys", "log", "wasm-bindgen", - "windows-core", + "windows-core 0.62.0", ] [[package]] @@ -1474,9 +1518,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.11.0" +version = "2.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2481980430f9f78649238835720ddccc57e52df14ffce1c6f37391d61b563e9" +checksum = "92119844f513ffa41556430369ab02c295a3578af21cf945caa3e9e0c2481ac3" dependencies = [ "equivalent", "hashbrown", @@ -1578,9 +1622,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.77" +version = "0.3.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +checksum = "0c0b063578492ceec17683ef2f8c5e89121fbd0b172cbc280635ab7567db2738" dependencies = [ "once_cell", "wasm-bindgen", @@ -1623,9 +1667,9 @@ dependencies = [ [[package]] name = "k8s-openapi" -version = "0.25.0" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa60a41b57ae1a0a071af77dbcf89fc9819cfe66edaf2beeb204c34459dcf0b2" +checksum = "d13f06d5326a915becaffabdfab75051b8cdc260c2a5c06c0e90226ede89a692" dependencies = [ "base64", "chrono", @@ -1637,11 +1681,10 @@ dependencies = [ [[package]] name = "k8s-version" version = "0.1.3" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.96.0#89f484ca4e86b565e083e9ad7573e21dbe29a3af" dependencies = [ - "darling 0.21.3", + "darling", "regex", - "snafu 0.8.7", + "snafu 0.8.9", ] [[package]] @@ -1650,7 +1693,7 @@ version = "0.1.0" source = "git+https://github.com/stackabletech/krb5-rs.git?tag=v0.1.0#cba32789257540e31f262647f9b59cb592e2e011" dependencies = [ "krb5-sys", - "snafu 0.8.7", + "snafu 0.8.9", ] [[package]] @@ -1664,9 +1707,9 @@ dependencies = [ [[package]] name = "kube" -version = "1.1.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "778f98664beaf4c3c11372721e14310d1ae00f5e2d9aabcf8906c881aa4e9f51" +checksum = "48e7bb0b6a46502cc20e4575b6ff401af45cfea150b34ba272a3410b78aa014e" dependencies = [ "k8s-openapi", "kube-client", @@ -1677,9 +1720,9 @@ dependencies = [ [[package]] name = "kube-client" -version = "1.1.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cb276b85b6e94ded00ac8ea2c68fcf4697ea0553cb25fddc35d4a0ab718db8d" +checksum = "4987d57a184d2b5294fdad3d7fc7f278899469d21a4da39a8f6ca16426567a36" dependencies = [ "base64", "bytes", @@ -1691,7 +1734,6 @@ dependencies = [ "http-body", "http-body-util", "hyper", - "hyper-http-proxy", "hyper-rustls", "hyper-timeout", "hyper-util", @@ -1714,9 +1756,9 @@ dependencies = [ [[package]] name = "kube-core" -version = "1.1.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3c56ff45deb0031f2a476017eed60c06872251f271b8387ad8020b8fef60960" +checksum = "914bbb770e7bb721a06e3538c0edd2babed46447d128f7c21caa68747060ee73" dependencies = [ "chrono", "derive_more", @@ -1733,11 +1775,11 @@ dependencies = [ [[package]] name = "kube-derive" -version = "1.1.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "079fc8c1c397538628309cfdee20696ebdcc26745f9fb17f89b78782205bd995" +checksum = "03dee8252be137772a6ab3508b81cd797dee62ee771112a2453bc85cbbe150d2" dependencies = [ - "darling 0.20.11", + "darling", "proc-macro2", "quote", "serde", @@ -1747,9 +1789,9 @@ dependencies = [ [[package]] name = "kube-runtime" -version = "1.1.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f1326e946fadf6248febdf8a1c001809c3899ccf48cb9768cbc536b741040dc" +checksum = "6aea4de4b562c5cc89ab10300bb63474ae1fa57ff5a19275f2e26401a323e3fd" dependencies = [ "ahash", "async-broadcast", @@ -1777,6 +1819,9 @@ name = "lazy_static" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +dependencies = [ + "spin", +] [[package]] name = "lber" @@ -1876,6 +1921,12 @@ dependencies = [ "windows-targets 0.53.3", ] +[[package]] +name = "libm" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" + [[package]] name = "libz-sys" version = "1.1.22" @@ -1890,9 +1941,9 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.9.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" [[package]] name = "litemap" @@ -1912,9 +1963,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.27" +version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" [[package]] name = "matchers" @@ -2011,12 +2062,49 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "num-bigint-dig" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" +dependencies = [ + "byteorder", + "lazy_static", + "libm", + "num-integer", + "num-iter", + "num-traits", + "rand 0.8.5", + "smallvec", + "zeroize", +] + [[package]] name = "num-conv" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + [[package]] name = "num-traits" version = "0.2.19" @@ -2024,6 +2112,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", + "libm", ] [[package]] @@ -2105,13 +2194,39 @@ dependencies = [ "tracing", ] +[[package]] +name = "opentelemetry" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b84bcd6ae87133e903af7ef497404dda70c60d0ea14895fc8a5e6722754fc2a0" +dependencies = [ + "futures-core", + "futures-sink", + "js-sys", + "pin-project-lite", + "thiserror 2.0.16", + "tracing", +] + [[package]] name = "opentelemetry-appender-tracing" version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e68f63eca5fad47e570e00e893094fc17be959c80c79a7d6ec1abdd5ae6ffc16" dependencies = [ - "opentelemetry", + "opentelemetry 0.30.0", + "tracing", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "opentelemetry-appender-tracing" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc11dcdfd423bb85c4724d4a4b61baec0e16093f565d3fbded30891358e95277" +dependencies = [ + "opentelemetry 0.31.0", "tracing", "tracing-core", "tracing-subscriber", @@ -2126,7 +2241,20 @@ dependencies = [ "async-trait", "bytes", "http", - "opentelemetry", + "opentelemetry 0.30.0", + "reqwest", +] + +[[package]] +name = "opentelemetry-http" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7a6d09a73194e6b66df7c8f1b680f156d916a1a942abf2de06823dd02b7855d" +dependencies = [ + "async-trait", + "bytes", + "http", + "opentelemetry 0.31.0", "reqwest", ] @@ -2137,10 +2265,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbee664a43e07615731afc539ca60c6d9f1a9425e25ca09c57bc36c87c55852b" dependencies = [ "http", - "opentelemetry", - "opentelemetry-http", - "opentelemetry-proto", - "opentelemetry_sdk", + "opentelemetry 0.30.0", + "opentelemetry-http 0.30.0", + "opentelemetry-proto 0.30.0", + "opentelemetry_sdk 0.30.0", "prost 0.13.5", "reqwest", "thiserror 2.0.16", @@ -2149,24 +2277,62 @@ dependencies = [ "tracing", ] +[[package]] +name = "opentelemetry-otlp" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2366db2dca4d2ad033cad11e6ee42844fd727007af5ad04a1730f4cb8163bf" +dependencies = [ + "http", + "opentelemetry 0.31.0", + "opentelemetry-http 0.31.0", + "opentelemetry-proto 0.31.0", + "opentelemetry_sdk 0.31.0", + "prost 0.14.1", + "reqwest", + "thiserror 2.0.16", + "tokio", + "tonic 0.14.2", + "tracing", +] + [[package]] name = "opentelemetry-proto" version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e046fd7660710fe5a05e8748e70d9058dc15c94ba914e7c4faa7c728f0e8ddc" dependencies = [ - "opentelemetry", - "opentelemetry_sdk", + "opentelemetry 0.30.0", + "opentelemetry_sdk 0.30.0", "prost 0.13.5", "tonic 0.13.1", ] +[[package]] +name = "opentelemetry-proto" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7175df06de5eaee9909d4805a3d07e28bb752c34cab57fa9cff549da596b30f" +dependencies = [ + "opentelemetry 0.31.0", + "opentelemetry_sdk 0.31.0", + "prost 0.14.1", + "tonic 0.14.2", + "tonic-prost", +] + [[package]] name = "opentelemetry-semantic-conventions" version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83d059a296a47436748557a353c5e6c5705b9470ef6c95cfc52c21a8814ddac2" +[[package]] +name = "opentelemetry-semantic-conventions" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e62e29dfe041afb8ed2a6c9737ab57db4907285d999ef8ad3a59092a36bdc846" + [[package]] name = "opentelemetry_sdk" version = "0.30.0" @@ -2176,15 +2342,32 @@ dependencies = [ "futures-channel", "futures-executor", "futures-util", - "opentelemetry", + "opentelemetry 0.30.0", "percent-encoding", - "rand", + "rand 0.9.2", "serde_json", "thiserror 2.0.16", "tokio", "tokio-stream", ] +[[package]] +name = "opentelemetry_sdk" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14ae4f5991976fd48df6d843de219ca6d31b01daaab2dad5af2badeded372bd" +dependencies = [ + "futures-channel", + "futures-executor", + "futures-util", + "opentelemetry 0.31.0", + "percent-encoding", + "rand 0.9.2", + "thiserror 2.0.16", + "tokio", + "tokio-stream", +] + [[package]] name = "ordered-float" version = "2.10.1" @@ -2211,10 +2394,22 @@ dependencies = [ ] [[package]] -name = "parking" -version = "2.2.1" +name = "p256" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2", +] + +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" @@ -2249,6 +2444,15 @@ dependencies = [ "serde", ] +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + [[package]] name = "percent-encoding" version = "2.3.2" @@ -2257,9 +2461,9 @@ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pest" -version = "2.8.1" +version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1db05f56d34358a8b1066f67cbb203ee3e7ed2ba674a6263a1d5ec6db2204323" +checksum = "21e0a3a33733faeaf8651dfee72dd0f388f0c8e5ad496a3478fa5a922f49cfa8" dependencies = [ "memchr", "thiserror 2.0.16", @@ -2268,9 +2472,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.1" +version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb056d9e8ea77922845ec74a1c4e8fb17e7c218cc4fc11a15c5d25e189aa40bc" +checksum = "bc58706f770acb1dbd0973e6530a3cff4746fb721207feb3a8a6064cd0b6c663" dependencies = [ "pest", "pest_generator", @@ -2278,9 +2482,9 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.1" +version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87e404e638f781eb3202dc82db6760c8ae8a1eeef7fb3fa8264b2ef280504966" +checksum = "6d4f36811dfe07f7b8573462465d5cb8965fffc2e71ae377a33aecf14c2c9a2f" dependencies = [ "pest", "pest_meta", @@ -2291,9 +2495,9 @@ dependencies = [ [[package]] name = "pest_meta" -version = "2.8.1" +version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edd1101f170f5903fde0914f899bb503d9ff5271d7ba76bbb70bea63690cc0d5" +checksum = "42919b05089acbd0a5dcd5405fb304d17d1053847b81163d09c4ad18ce8e8420" dependencies = [ "pest", "sha2", @@ -2341,6 +2545,27 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "pkcs1" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" +dependencies = [ + "der", + "pkcs8", + "spki", +] + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + [[package]] name = "pkg-config" version = "0.3.32" @@ -2349,9 +2574,9 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "potential_utf" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" dependencies = [ "zerovec", ] @@ -2381,6 +2606,15 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "primeorder" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" +dependencies = [ + "elliptic-curve", +] + [[package]] name = "proc-macro2" version = "1.0.101" @@ -2392,8 +2626,8 @@ dependencies = [ [[package]] name = "product-config" -version = "0.7.0" -source = "git+https://github.com/stackabletech/product-config.git?tag=0.7.0#d61d4c7542c942da2ba0e9af4e5e3c3113abb0cf" +version = "0.8.0" +source = "git+https://github.com/stackabletech/product-config.git?tag=0.8.0#678fb7cf30af7d7b516c9a46698a1b661120d54a" dependencies = [ "fancy-regex", "java-properties", @@ -2402,8 +2636,8 @@ dependencies = [ "serde", "serde_json", "serde_yaml", - "snafu 0.8.7", - "xml-rs", + "snafu 0.8.9", + "xml", ] [[package]] @@ -2518,14 +2752,34 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + [[package]] name = "rand" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ - "rand_chacha", - "rand_core", + "rand_chacha 0.9.0", + "rand_core 0.9.3", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", ] [[package]] @@ -2535,7 +2789,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.9.3", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.16", ] [[package]] @@ -2565,6 +2828,26 @@ dependencies = [ "bitflags", ] +[[package]] +name = "ref-cast" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "regex" version = "1.11.2" @@ -2628,6 +2911,16 @@ dependencies = [ "web-sys", ] +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + [[package]] name = "ring" version = "0.17.14" @@ -2642,6 +2935,27 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "rsa" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78928ac1ed176a5ca1d17e578a1825f3d81ca54cf41053a592584b020cfd691b" +dependencies = [ + "const-oid", + "digest", + "num-bigint-dig", + "num-integer", + "num-traits", + "pkcs1", + "pkcs8", + "rand_core 0.6.4", + "sha2", + "signature", + "spki", + "subtle", + "zeroize", +] + [[package]] name = "rustc-demangle" version = "0.1.26" @@ -2656,15 +2970,15 @@ checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" [[package]] name = "rustix" -version = "1.0.8" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ "bitflags", "errno", "libc", "linux-raw-sys", - "windows-sys 0.60.2", + "windows-sys 0.61.0", ] [[package]] @@ -2682,19 +2996,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "rustls-native-certs" -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 2.11.1", -] - [[package]] name = "rustls-native-certs" version = "0.8.1" @@ -2704,16 +3005,7 @@ dependencies = [ "openssl-probe", "rustls-pki-types", "schannel", - "security-framework 3.3.0", -] - -[[package]] -name = "rustls-pemfile" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" -dependencies = [ - "rustls-pki-types", + "security-framework 3.4.0", ] [[package]] @@ -2727,9 +3019,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.103.4" +version = "0.103.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc" +checksum = "8572f3c2cb9934231157b45499fc41e1f58c589fdfb81a844ba873265e80f8eb" dependencies = [ "ring", "rustls-pki-types", @@ -2759,20 +3051,21 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.0", ] [[package]] name = "schemars" -version = "0.8.22" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" +checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0" dependencies = [ "dyn-clone", + "ref-cast", "schemars_derive", "serde", "serde_json", @@ -2781,9 +3074,9 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.22" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" +checksum = "33d020396d1d138dc19f1165df7545479dcd58d93810dc5d646a16e55abefa80" dependencies = [ "proc-macro2", "quote", @@ -2797,6 +3090,20 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "subtle", + "zeroize", +] + [[package]] name = "secrecy" version = "0.10.3" @@ -2821,9 +3128,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80fb1d92c5028aa318b4b8bd7302a5bfcf48be96a37fc6fc790f806b0004ee0c" +checksum = "60b369d18893388b345804dc0007963c99b7d665ae71d275812d828c6f089640" dependencies = [ "bitflags", "core-foundation 0.10.1", @@ -2834,9 +3141,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.14.0" +version = "2.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" dependencies = [ "core-foundation-sys", "libc", @@ -2844,16 +3151,17 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.26" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" [[package]] name = "serde" -version = "1.0.219" +version = "1.0.225" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "fd6c24dee235d0da097043389623fb913daddf92c76e9f5a1db88607a0bcbd1d" dependencies = [ + "serde_core", "serde_derive", ] @@ -2867,11 +3175,20 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_core" +version = "1.0.225" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "659356f9a0cb1e529b24c01e43ad2bdf520ec4ceaf83047b83ddcc2251f96383" +dependencies = [ + "serde_derive", +] + [[package]] name = "serde_derive" -version = "1.0.219" +version = "1.0.225" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "0ea936adf78b1f766949a4977b91d2f5595825bd6ec079aa9543ad2685fc4516" dependencies = [ "proc-macro2", "quote", @@ -2891,24 +3208,26 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.143" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ "itoa", "memchr", "ryu", "serde", + "serde_core", ] [[package]] name = "serde_path_to_error" -version = "0.1.17" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a" +checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457" dependencies = [ "itoa", "serde", + "serde_core", ] [[package]] @@ -2982,6 +3301,16 @@ dependencies = [ "libc", ] +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest", + "rand_core 0.6.4", +] + [[package]] name = "slab" version = "0.4.11" @@ -3017,11 +3346,11 @@ dependencies = [ [[package]] name = "snafu" -version = "0.8.7" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0062a372b26c4a6e9155d099a3416d732514fd47ae2f235b3695b820afcee74a" +checksum = "6e84b3f4eacbf3a1ce05eac6763b4d629d60cbc94d632e4092c54ade71f1e1a2" dependencies = [ - "snafu-derive 0.8.7", + "snafu-derive 0.8.9", ] [[package]] @@ -3037,9 +3366,9 @@ dependencies = [ [[package]] name = "snafu-derive" -version = "0.8.7" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e5fd9e3263fc19d73abd5107dbd4d43e37949212d2b15d4d334ee5db53022b8" +checksum = "c1c97747dbf44bb1ca44a561ece23508e99cb592e862f22222dcf42f51d1e451" dependencies = [ "heck", "proc-macro2", @@ -3057,12 +3386,51 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + [[package]] name = "stable_deref_trait" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +[[package]] +name = "stackable-certs" +version = "0.4.0" +dependencies = [ + "const-oid", + "ecdsa", + "k8s-openapi", + "kube", + "p256", + "rand 0.9.2", + "rand_core 0.6.4", + "rsa", + "sha2", + "signature", + "snafu 0.8.9", + "stackable-shared", + "tokio", + "tokio-rustls", + "tracing", + "x509-cert", + "zeroize", +] + [[package]] name = "stackable-krb5-provision-keytab" version = "0.0.0-dev" @@ -3072,10 +3440,10 @@ dependencies = [ "krb5", "ldap3", "native-tls", - "rand", + "rand 0.9.2", "serde", "serde_json", - "snafu 0.8.7", + "snafu 0.8.9", "stackable-operator", "stackable-secret-operator-utils", "tokio", @@ -3085,8 +3453,7 @@ dependencies = [ [[package]] name = "stackable-operator" -version = "0.96.0" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.96.0#89f484ca4e86b565e083e9ad7573e21dbe29a3af" +version = "0.98.0" dependencies = [ "chrono", "clap", @@ -3108,11 +3475,12 @@ dependencies = [ "serde", "serde_json", "serde_yaml", - "snafu 0.8.7", + "snafu 0.8.9", "stackable-operator-derive", "stackable-shared", - "stackable-telemetry 0.6.1 (git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.96.0)", + "stackable-telemetry 0.6.1", "stackable-versioned", + "stackable-webhook", "strum", "tokio", "tracing", @@ -3124,9 +3492,8 @@ dependencies = [ [[package]] name = "stackable-operator-derive" version = "0.3.1" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.96.0#89f484ca4e86b565e083e9ad7573e21dbe29a3af" dependencies = [ - "darling 0.21.3", + "darling", "proc-macro2", "quote", "syn 2.0.106", @@ -3150,11 +3517,11 @@ dependencies = [ "pin-project", "prost 0.14.1", "prost-types", - "rand", + "rand 0.9.2", "serde", "serde_json", "serde_yaml", - "snafu 0.8.7", + "snafu 0.8.9", "socket2", "stackable-krb5-provision-keytab", "stackable-operator", @@ -3165,7 +3532,7 @@ dependencies = [ "time", "tokio", "tokio-stream", - "tonic 0.14.1", + "tonic 0.14.2", "tonic-prost", "tonic-prost-build", "tonic-reflection", @@ -3197,7 +3564,7 @@ dependencies = [ "openssl", "p12", "serde", - "snafu 0.8.7", + "snafu 0.8.9", "stackable-operator", "yasna", ] @@ -3205,7 +3572,6 @@ dependencies = [ [[package]] name = "stackable-shared" version = "0.0.2" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.96.0#89f484ca4e86b565e083e9ad7573e21dbe29a3af" dependencies = [ "k8s-openapi", "kube", @@ -3213,7 +3579,7 @@ dependencies = [ "semver", "serde", "serde_yaml", - "snafu 0.8.7", + "snafu 0.8.9", "strum", "time", ] @@ -3221,24 +3587,23 @@ dependencies = [ [[package]] name = "stackable-telemetry" version = "0.6.1" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.96.0#89f484ca4e86b565e083e9ad7573e21dbe29a3af" dependencies = [ "axum", "clap", "futures-util", - "opentelemetry", - "opentelemetry-appender-tracing", - "opentelemetry-otlp", - "opentelemetry-semantic-conventions", - "opentelemetry_sdk", + "opentelemetry 0.31.0", + "opentelemetry-appender-tracing 0.31.0", + "opentelemetry-otlp 0.31.0", + "opentelemetry-semantic-conventions 0.31.0", + "opentelemetry_sdk 0.31.0", "pin-project", - "snafu 0.8.7", + "snafu 0.8.9", "strum", "tokio", "tower", "tracing", "tracing-appender", - "tracing-opentelemetry", + "tracing-opentelemetry 0.32.0", "tracing-subscriber", ] @@ -3250,42 +3615,40 @@ dependencies = [ "axum", "clap", "futures-util", - "opentelemetry", - "opentelemetry-appender-tracing", - "opentelemetry-otlp", - "opentelemetry-semantic-conventions", - "opentelemetry_sdk", + "opentelemetry 0.30.0", + "opentelemetry-appender-tracing 0.30.1", + "opentelemetry-otlp 0.30.0", + "opentelemetry-semantic-conventions 0.30.0", + "opentelemetry_sdk 0.30.0", "pin-project", - "snafu 0.8.7", + "snafu 0.8.9", "strum", "tokio", "tower", "tracing", "tracing-appender", - "tracing-opentelemetry", + "tracing-opentelemetry 0.31.0", "tracing-subscriber", ] [[package]] name = "stackable-versioned" -version = "0.8.1" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.96.0#89f484ca4e86b565e083e9ad7573e21dbe29a3af" +version = "0.8.2" dependencies = [ "schemars", "serde", "serde_json", "serde_yaml", - "snafu 0.8.7", + "snafu 0.8.9", "stackable-versioned-macros", ] [[package]] name = "stackable-versioned-macros" -version = "0.8.1" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.96.0#89f484ca4e86b565e083e9ad7573e21dbe29a3af" +version = "0.8.2" dependencies = [ "convert_case", - "darling 0.21.3", + "darling", "indoc", "itertools 0.14.0", "k8s-openapi", @@ -3296,6 +3659,34 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "stackable-webhook" +version = "0.6.0" +dependencies = [ + "arc-swap", + "axum", + "futures-util", + "hyper", + "hyper-util", + "k8s-openapi", + "kube", + "opentelemetry 0.31.0", + "opentelemetry-semantic-conventions 0.31.0", + "rand 0.9.2", + "serde_json", + "snafu 0.8.9", + "stackable-certs", + "stackable-shared", + "stackable-telemetry 0.6.1", + "tokio", + "tokio-rustls", + "tower", + "tower-http", + "tracing", + "tracing-opentelemetry 0.32.0", + "x509-cert", +] + [[package]] name = "strsim" version = "0.11.1" @@ -3386,15 +3777,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.21.0" +version = "3.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15b61f8f20e3a6f7e0649d825294eaf317edce30f82cf6026e7e4cb9222a7d1e" +checksum = "84fa4d11fadde498443cca10fd3ac23c951f0dc59e080e9f4b93d4df4e4eea53" dependencies = [ "fastrand", "getrandom 0.3.3", "once_cell", "rustix", - "windows-sys 0.60.2", + "windows-sys 0.61.0", ] [[package]] @@ -3448,12 +3839,11 @@ dependencies = [ [[package]] name = "time" -version = "0.3.41" +version = "0.3.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +checksum = "83bde6f1ec10e72d583d91623c939f623002284ef622b87de38cfd546cbf2031" dependencies = [ "deranged", - "itoa", "num-conv", "powerfmt", "serde", @@ -3463,15 +3853,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" [[package]] name = "time-macros" -version = "0.2.22" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" dependencies = [ "num-conv", "time-core", @@ -3487,6 +3877,27 @@ dependencies = [ "zerovec", ] +[[package]] +name = "tls_codec" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de2e01245e2bb89d6f05801c564fa27624dbd7b1846859876c7dad82e90bf6b" +dependencies = [ + "tls_codec_derive", + "zeroize", +] + +[[package]] +name = "tls_codec_derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d2e76690929402faae40aebdda620a2c0e25dd6d3b9afe48867dfd95991f4bd" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "tokio" version = "1.47.1" @@ -3592,14 +4003,15 @@ dependencies = [ [[package]] name = "tonic" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67ac5a8627ada0968acec063a4746bf79588aa03ccb66db2f75d7dce26722a40" +checksum = "eb7613188ce9f7df5bfe185db26c5814347d110db17920415cf2fbcad85e7203" dependencies = [ "async-trait", "axum", "base64", "bytes", + "flate2", "h2", "http", "http-body", @@ -3621,9 +4033,9 @@ dependencies = [ [[package]] name = "tonic-build" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49e323d8bba3be30833707e36d046deabf10a35ae8ad3cae576943ea8933e25d" +checksum = "4c40aaccc9f9eccf2cd82ebc111adc13030d23e887244bc9cfa5d1d636049de3" dependencies = [ "prettyplease", "proc-macro2", @@ -3633,20 +4045,20 @@ dependencies = [ [[package]] name = "tonic-prost" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9c511b9a96d40cb12b7d5d00464446acf3b9105fd3ce25437cfe41c92b1c87d" +checksum = "66bd50ad6ce1252d87ef024b3d64fe4c3cf54a86fb9ef4c631fdd0ded7aeaa67" dependencies = [ "bytes", "prost 0.14.1", - "tonic 0.14.1", + "tonic 0.14.2", ] [[package]] name = "tonic-prost-build" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ef298fcd01b15e135440c4b8c974460ceca4e6a5af7f1c933b08e4d2875efa1" +checksum = "b4a16cba4043dc3ff43fcb3f96b4c5c154c64cbd18ca8dce2ab2c6a451d058a2" dependencies = [ "prettyplease", "proc-macro2", @@ -3660,15 +4072,15 @@ dependencies = [ [[package]] name = "tonic-reflection" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0267a0073385cd94996197d12acb1856a3a0a2367482c726a48a769f6fed8a3a" +checksum = "34da53e8387581d66db16ff01f98a70b426b091fdf76856e289d5c1bd386ed7b" dependencies = [ "prost 0.14.1", "prost-types", "tokio", "tokio-stream", - "tonic 0.14.1", + "tonic 0.14.2", "tonic-prost", ] @@ -3788,9 +4200,28 @@ checksum = "ddcf5959f39507d0d04d6413119c04f33b623f4f951ebcbdddddfad2d0623a9c" dependencies = [ "js-sys", "once_cell", - "opentelemetry", - "opentelemetry_sdk", + "opentelemetry 0.30.0", + "opentelemetry_sdk 0.30.0", + "smallvec", + "tracing", + "tracing-core", + "tracing-log", + "tracing-subscriber", + "web-time", +] + +[[package]] +name = "tracing-opentelemetry" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6e5658463dd88089aba75c7791e1d3120633b1bfde22478b28f625a9bb1b8e" +dependencies = [ + "js-sys", + "opentelemetry 0.31.0", + "opentelemetry_sdk 0.31.0", + "rustversion", "smallvec", + "thiserror 2.0.16", "tracing", "tracing-core", "tracing-log", @@ -3855,9 +4286,9 @@ checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" [[package]] name = "unicode-ident" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" +checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" [[package]] name = "unicode-segmentation" @@ -3909,9 +4340,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.18.0" +version = "1.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f33196643e165781c20a5ead5582283a7dacbb87855d867fbc2df3f81eddc1be" +checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" dependencies = [ "getrandom 0.3.3", "js-sys", @@ -3963,30 +4394,40 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" -version = "0.14.2+wasi-0.2.4" +version = "0.14.7+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +checksum = "883478de20367e224c0090af9cf5f9fa85bed63a95c1abf3afc5c083ebc06e8c" dependencies = [ - "wit-bindgen-rt", + "wasip2", +] + +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +dependencies = [ + "wit-bindgen", ] [[package]] name = "wasm-bindgen" -version = "0.2.100" +version = "0.2.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +checksum = "7e14915cadd45b529bb8d1f343c4ed0ac1de926144b746e2710f9cd05df6603b" dependencies = [ "cfg-if", "once_cell", "rustversion", "wasm-bindgen-macro", + "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.100" +version = "0.2.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +checksum = "e28d1ba982ca7923fd01448d5c30c6864d0a14109560296a162f80f305fb93bb" dependencies = [ "bumpalo", "log", @@ -3998,9 +4439,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.50" +version = "0.4.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +checksum = "0ca85039a9b469b38336411d6d6ced91f3fc87109a2a27b0c197663f5144dffe" dependencies = [ "cfg-if", "js-sys", @@ -4011,9 +4452,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.100" +version = "0.2.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +checksum = "7c3d463ae3eff775b0c45df9da45d68837702ac35af998361e2c84e7c5ec1b0d" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4021,9 +4462,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.100" +version = "0.2.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +checksum = "7bb4ce89b08211f923caf51d527662b75bdc9c9c7aab40f86dcb9fb85ac552aa" dependencies = [ "proc-macro2", "quote", @@ -4034,18 +4475,18 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.100" +version = "0.2.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +checksum = "f143854a3b13752c6950862c906306adb27c7e839f7414cec8fea35beab624c1" dependencies = [ "unicode-ident", ] [[package]] name = "web-sys" -version = "0.3.77" +version = "0.3.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +checksum = "77e4b637749ff0d92b8fad63aa1f7cff3cbe125fd49c175cd6345e7272638b12" dependencies = [ "js-sys", "wasm-bindgen", @@ -4063,11 +4504,11 @@ dependencies = [ [[package]] name = "winapi-util" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0978bf7171b3d90bac376700cb56d606feb40f251a475a5d6634613564460b22" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.60.2", + "windows-sys 0.61.0", ] [[package]] @@ -4077,9 +4518,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" dependencies = [ "windows-collections", - "windows-core", + "windows-core 0.61.2", "windows-future", - "windows-link", + "windows-link 0.1.3", "windows-numerics", ] @@ -4089,7 +4530,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" dependencies = [ - "windows-core", + "windows-core 0.61.2", ] [[package]] @@ -4100,9 +4541,22 @@ checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" dependencies = [ "windows-implement", "windows-interface", - "windows-link", - "windows-result", - "windows-strings", + "windows-link 0.1.3", + "windows-result 0.3.4", + "windows-strings 0.4.2", +] + +[[package]] +name = "windows-core" +version = "0.62.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57fe7168f7de578d2d8a05b07fd61870d2e73b4020e9f49aa00da8471723497c" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link 0.2.0", + "windows-result 0.4.0", + "windows-strings 0.5.0", ] [[package]] @@ -4111,8 +4565,8 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" dependencies = [ - "windows-core", - "windows-link", + "windows-core 0.61.2", + "windows-link 0.1.3", "windows-threading", ] @@ -4144,14 +4598,20 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" +[[package]] +name = "windows-link" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65" + [[package]] name = "windows-numerics" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" dependencies = [ - "windows-core", - "windows-link", + "windows-core 0.61.2", + "windows-link 0.1.3", ] [[package]] @@ -4160,7 +4620,16 @@ version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" dependencies = [ - "windows-link", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-result" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7084dcc306f89883455a206237404d3eaf961e5bd7e0f312f7c91f57eb44167f" +dependencies = [ + "windows-link 0.2.0", ] [[package]] @@ -4169,7 +4638,16 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ - "windows-link", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-strings" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7218c655a553b0bed4426cf54b20d7ba363ef543b52d515b3e48d7fd55318dda" +dependencies = [ + "windows-link 0.2.0", ] [[package]] @@ -4199,6 +4677,15 @@ dependencies = [ "windows-targets 0.53.3", ] +[[package]] +name = "windows-sys" +version = "0.61.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e201184e40b2ede64bc2ea34968b28e33622acdbbf37104f0e4a33f7abe657aa" +dependencies = [ + "windows-link 0.2.0", +] + [[package]] name = "windows-targets" version = "0.52.6" @@ -4221,7 +4708,7 @@ version = "0.53.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" dependencies = [ - "windows-link", + "windows-link 0.1.3", "windows_aarch64_gnullvm 0.53.0", "windows_aarch64_msvc 0.53.0", "windows_i686_gnu 0.53.0", @@ -4238,7 +4725,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" dependencies = [ - "windows-link", + "windows-link 0.1.3", ] [[package]] @@ -4338,13 +4825,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" [[package]] -name = "wit-bindgen-rt" -version = "0.39.0" +name = "wit-bindgen" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" -dependencies = [ - "bitflags", -] +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "writeable" @@ -4353,10 +4837,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" [[package]] -name = "xml-rs" -version = "0.8.27" +name = "x509-cert" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fd8403733700263c6eb89f192880191f1b83e332f7a20371ddcf421c4a337c7" +checksum = "1301e935010a701ae5f8655edc0ad17c44bad3ac5ce8c39185f75453b720ae94" +dependencies = [ + "const-oid", + "der", + "sha1", + "signature", + "spki", + "tls_codec", +] + +[[package]] +name = "xml" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72e6e0a83ae73d886ab66fc2f82b598fbbb8f373357d5f2f9f783e50e4d06435" [[package]] name = "yasna" @@ -4390,18 +4888,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.26" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.26" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" dependencies = [ "proc-macro2", "quote", @@ -4434,6 +4932,20 @@ name = "zeroize" version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] [[package]] name = "zerotrie" diff --git a/Cargo.nix b/Cargo.nix index 464a50e2..d68d94d3 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -261,17 +261,6 @@ rec { }; resolvedDefaultFeatures = [ "alloc" ]; }; - "android-tzdata" = rec { - crateName = "android-tzdata"; - version = "0.1.1"; - edition = "2018"; - sha256 = "1w7ynjxrfs97xg3qlcdns4kgfpwcdv824g611fq32cag4cdr96g9"; - libName = "android_tzdata"; - authors = [ - "RumovZ" - ]; - - }; "android_system_properties" = rec { crateName = "android_system_properties"; version = "0.1.5"; @@ -418,6 +407,19 @@ rec { }; resolvedDefaultFeatures = [ "default" "std" ]; }; + "arc-swap" = rec { + crateName = "arc-swap"; + version = "1.7.1"; + edition = "2018"; + sha256 = "0mrl9a9r9p9bln74q6aszvf22q1ijiw089jkrmabfqkbj31zixv9"; + libName = "arc_swap"; + authors = [ + "Michal 'vorner' Vaner " + ]; + features = { + "serde" = [ "dep:serde" ]; + }; + }; "async-broadcast" = rec { crateName = "async-broadcast"; version = "0.7.2"; @@ -906,6 +908,19 @@ rec { }; resolvedDefaultFeatures = [ "default" "std" ]; }; + "base16ct" = rec { + crateName = "base16ct"; + version = "0.2.0"; + edition = "2021"; + sha256 = "1kylrjhdzk7qpknrvlphw8ywdnvvg39dizw9622w3wk5xba04zsc"; + authors = [ + "RustCrypto Developers" + ]; + features = { + "std" = [ "alloc" ]; + }; + resolvedDefaultFeatures = [ "alloc" ]; + }; "base64" = rec { crateName = "base64"; version = "0.22.1"; @@ -920,6 +935,19 @@ rec { }; resolvedDefaultFeatures = [ "alloc" "default" "std" ]; }; + "base64ct" = rec { + crateName = "base64ct"; + version = "1.8.0"; + edition = "2024"; + sha256 = "1fj4vc6ghy3j1120r7dwn4xw90crfy46b448g5pm9w6an13qn92m"; + authors = [ + "RustCrypto Developers" + ]; + features = { + "std" = [ "alloc" ]; + }; + resolvedDefaultFeatures = [ "alloc" ]; + }; "bindgen" = rec { crateName = "bindgen"; version = "0.71.1"; @@ -1004,9 +1032,9 @@ rec { }; "bit-set" = rec { crateName = "bit-set"; - version = "0.5.3"; + version = "0.8.0"; edition = "2015"; - sha256 = "1wcm9vxi00ma4rcxkl3pzzjli6ihrpn9cfdi0c5b4cvga2mxs007"; + sha256 = "18riaa10s6n59n39vix0cr7l2dgwdhcpbcm97x1xbyfp1q47x008"; libName = "bit_set"; authors = [ "Alexis Beingessner " @@ -1020,21 +1048,26 @@ rec { ]; features = { "default" = [ "std" ]; + "serde" = [ "dep:serde" "bit-vec/serde" ]; "std" = [ "bit-vec/std" ]; }; resolvedDefaultFeatures = [ "std" ]; }; "bit-vec" = rec { crateName = "bit-vec"; - version = "0.6.3"; + version = "0.8.0"; edition = "2015"; - sha256 = "1ywqjnv60cdh1slhz67psnp422md6jdliji6alq0gmly2xm9p7rl"; + sha256 = "1xxa1s2cj291r7k1whbxq840jxvmdsq9xgh7bvrxl46m80fllxjy"; libName = "bit_vec"; authors = [ "Alexis Beingessner " ]; features = { + "borsh" = [ "dep:borsh" ]; + "borsh_std" = [ "borsh/std" ]; "default" = [ "std" ]; + "miniserde" = [ "dep:miniserde" ]; + "nanoserde" = [ "dep:nanoserde" ]; "serde" = [ "dep:serde" ]; "serde_no_std" = [ "serde/alloc" ]; "serde_std" = [ "std" "serde/std" ]; @@ -1043,9 +1076,9 @@ rec { }; "bitflags" = rec { crateName = "bitflags"; - version = "2.9.3"; + version = "2.9.4"; edition = "2021"; - sha256 = "0pgjwsd9qgdmsmwpvg47p9ccrsc26yfjqawbhsi9qds5sg6brvrl"; + sha256 = "157kkcv8s7vk6d17dar1pa5cqcz4c8pdrn16wm1ld7jnr86d2q92"; authors = [ "The Rust Project Developers" ]; @@ -1199,13 +1232,17 @@ rec { }; "cc" = rec { crateName = "cc"; - version = "1.2.34"; + version = "1.2.37"; edition = "2018"; - sha256 = "1p5ycww65h7xca03lwdp264qalw8v357rg5h17s7naq3h3m4mg22"; + sha256 = "0i5xlxsgd7jif1ry9k3ysnpsmbrckapqwq8d8l5vhkj0qs4ka6b5"; authors = [ "Alex Crichton " ]; dependencies = [ + { + name = "find-msvc-tools"; + packageId = "find-msvc-tools"; + } { name = "jobserver"; packageId = "jobserver"; @@ -1265,7 +1302,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.7"; + packageId = "snafu 0.8.9"; } { name = "stackable-secret-operator-utils"; @@ -1317,16 +1354,10 @@ rec { }; "chrono" = rec { crateName = "chrono"; - version = "0.4.41"; + version = "0.4.42"; edition = "2021"; - sha256 = "0k8wy2mph0mgipq28vv3wirivhb31pqs7jyid0dzjivz0i9djsf4"; + sha256 = "1lp8iz9js9jwxw0sj8yi59v54lgvwdvm49b9wch77f25sfym4l0l"; dependencies = [ - { - name = "android-tzdata"; - packageId = "android-tzdata"; - optional = true; - target = { target, features }: ("android" == target."os" or null); - } { name = "iana-time-zone"; packageId = "iana-time-zone"; @@ -1347,15 +1378,14 @@ rec { } { name = "windows-link"; - packageId = "windows-link"; + packageId = "windows-link 0.2.0"; optional = true; target = { target, features }: (target."windows" or false); } ]; features = { - "android-tzdata" = [ "dep:android-tzdata" ]; "arbitrary" = [ "dep:arbitrary" ]; - "clock" = [ "winapi" "iana-time-zone" "android-tzdata" "now" ]; + "clock" = [ "winapi" "iana-time-zone" "now" ]; "default" = [ "clock" "std" "oldtime" "wasmbind" ]; "iana-time-zone" = [ "dep:iana-time-zone" ]; "js-sys" = [ "dep:js-sys" ]; @@ -1374,7 +1404,7 @@ rec { "winapi" = [ "windows-link" ]; "windows-link" = [ "dep:windows-link" ]; }; - resolvedDefaultFeatures = [ "alloc" "android-tzdata" "clock" "iana-time-zone" "now" "serde" "std" "winapi" "windows-link" ]; + resolvedDefaultFeatures = [ "alloc" "clock" "iana-time-zone" "now" "serde" "std" "winapi" "windows-link" ]; }; "cipher" = rec { crateName = "cipher"; @@ -1469,10 +1499,10 @@ rec { }; "clap" = rec { crateName = "clap"; - version = "4.5.45"; + version = "4.5.47"; edition = "2021"; crateBin = []; - sha256 = "0663m85dd0aq1g3mkwz5b8pkjv4f5k2smlz7bagib4iqf15fgh0z"; + sha256 = "0c99f6m4a7d4ffgahid49h0ci2pv4ccdf417f76nl4wx5n801b3y"; dependencies = [ { name = "clap_builder"; @@ -1511,9 +1541,9 @@ rec { }; "clap_builder" = rec { crateName = "clap_builder"; - version = "4.5.44"; + version = "4.5.47"; edition = "2021"; - sha256 = "1a48x3c9q1l7r6wbgy71mq6kfsihpqzxsnbaaamcgwvp88hz9rxk"; + sha256 = "1mp1f0fz6wp9v87jc9372lg6r4514ja1l8cazf25hfz7a3vvpn9a"; dependencies = [ { name = "anstream"; @@ -1550,9 +1580,9 @@ rec { }; "clap_derive" = rec { crateName = "clap_derive"; - version = "4.5.45"; + version = "4.5.47"; edition = "2021"; - sha256 = "1xir8wn5d10wpmnzmzjf2k1ib7j5mmzsm6v3yap6qlvx1axk3jql"; + sha256 = "174z9g13s85la2nmi8gv8ssjwz77im3rqg5isiinw6hg1fp7xzdv"; procMacro = true; dependencies = [ { @@ -1619,6 +1649,20 @@ rec { }; resolvedDefaultFeatures = [ "std" ]; }; + "const-oid" = rec { + crateName = "const-oid"; + version = "0.9.6"; + edition = "2021"; + sha256 = "1y0jnqaq7p2wvspnx7qj76m7hjcqpz73qzvr9l2p9n2s51vr6if2"; + libName = "const_oid"; + authors = [ + "RustCrypto Developers" + ]; + features = { + "arbitrary" = [ "dep:arbitrary" ]; + }; + resolvedDefaultFeatures = [ "db" "std" ]; + }; "const_format" = rec { crateName = "const_format"; version = "0.2.34"; @@ -1906,12 +1950,12 @@ rec { }; resolvedDefaultFeatures = [ "std" ]; }; - "crypto-common" = rec { - crateName = "crypto-common"; - version = "0.1.6"; - edition = "2018"; - sha256 = "1cvby95a6xg7kxdz5ln3rl9xh66nz66w46mm3g56ri1z5x815yqv"; - libName = "crypto_common"; + "crypto-bigint" = rec { + crateName = "crypto-bigint"; + version = "0.5.5"; + edition = "2021"; + sha256 = "0xmbdff3g6ii5sbxjxc31xfkv9lrmyril4arh3dzckd4gjsjzj8d"; + libName = "crypto_bigint"; authors = [ "RustCrypto Developers" ]; @@ -1919,45 +1963,72 @@ rec { { name = "generic-array"; packageId = "generic-array"; - features = [ "more_lengths" ]; + optional = true; } { - name = "typenum"; - packageId = "typenum"; + name = "rand_core"; + packageId = "rand_core 0.6.4"; + optional = true; + } + { + name = "subtle"; + packageId = "subtle"; + usesDefaultFeatures = false; + } + { + name = "zeroize"; + packageId = "zeroize"; + optional = true; + usesDefaultFeatures = false; + } + ]; + devDependencies = [ + { + name = "rand_core"; + packageId = "rand_core 0.6.4"; + features = [ "std" ]; } ]; features = { - "getrandom" = [ "rand_core/getrandom" ]; + "alloc" = [ "serdect?/alloc" ]; + "default" = [ "rand" ]; + "der" = [ "dep:der" ]; + "generic-array" = [ "dep:generic-array" ]; + "rand" = [ "rand_core/std" ]; "rand_core" = [ "dep:rand_core" ]; + "rlp" = [ "dep:rlp" ]; + "serde" = [ "dep:serdect" ]; + "zeroize" = [ "dep:zeroize" ]; }; - resolvedDefaultFeatures = [ "std" ]; + resolvedDefaultFeatures = [ "generic-array" "rand_core" "zeroize" ]; }; - "darling 0.20.11" = rec { - crateName = "darling"; - version = "0.20.11"; - edition = "2021"; - sha256 = "1vmlphlrlw4f50z16p4bc9p5qwdni1ba95qmxfrrmzs6dh8lczzw"; + "crypto-common" = rec { + crateName = "crypto-common"; + version = "0.1.6"; + edition = "2018"; + sha256 = "1cvby95a6xg7kxdz5ln3rl9xh66nz66w46mm3g56ri1z5x815yqv"; + libName = "crypto_common"; authors = [ - "Ted Driggs " + "RustCrypto Developers" ]; dependencies = [ { - name = "darling_core"; - packageId = "darling_core 0.20.11"; + name = "generic-array"; + packageId = "generic-array"; + features = [ "more_lengths" ]; } { - name = "darling_macro"; - packageId = "darling_macro 0.20.11"; + name = "typenum"; + packageId = "typenum"; } ]; features = { - "default" = [ "suggestions" ]; - "diagnostics" = [ "darling_core/diagnostics" ]; - "suggestions" = [ "darling_core/suggestions" ]; + "getrandom" = [ "rand_core/getrandom" ]; + "rand_core" = [ "dep:rand_core" ]; }; - resolvedDefaultFeatures = [ "default" "suggestions" ]; + resolvedDefaultFeatures = [ "std" ]; }; - "darling 0.21.3" = rec { + "darling" = rec { crateName = "darling"; version = "0.21.3"; edition = "2021"; @@ -1968,11 +2039,11 @@ rec { dependencies = [ { name = "darling_core"; - packageId = "darling_core 0.21.3"; + packageId = "darling_core"; } { name = "darling_macro"; - packageId = "darling_macro 0.21.3"; + packageId = "darling_macro"; } ]; features = { @@ -1983,11 +2054,11 @@ rec { }; resolvedDefaultFeatures = [ "default" "suggestions" ]; }; - "darling_core 0.20.11" = rec { + "darling_core" = rec { crateName = "darling_core"; - version = "0.20.11"; + version = "0.21.3"; edition = "2021"; - sha256 = "0bj1af6xl4ablnqbgn827m43b8fiicgv180749f5cphqdmcvj00d"; + sha256 = "193ya45qgac0a4siwghk0bl8im8h89p3cald7kw8ag3yrmg1jiqj"; authors = [ "Ted Driggs " ]; @@ -2020,67 +2091,51 @@ rec { } ]; features = { + "serde" = [ "dep:serde" ]; "strsim" = [ "dep:strsim" ]; "suggestions" = [ "strsim" ]; }; resolvedDefaultFeatures = [ "strsim" "suggestions" ]; }; - "darling_core 0.21.3" = rec { - crateName = "darling_core"; + "darling_macro" = rec { + crateName = "darling_macro"; version = "0.21.3"; edition = "2021"; - sha256 = "193ya45qgac0a4siwghk0bl8im8h89p3cald7kw8ag3yrmg1jiqj"; + sha256 = "10ac85n4lnx3rmf5rw8lijl2c0sbl6ghcpgfmzh0s26ihbghi0yk"; + procMacro = true; authors = [ "Ted Driggs " ]; dependencies = [ { - name = "fnv"; - packageId = "fnv"; - } - { - name = "ident_case"; - packageId = "ident_case"; - } - { - name = "proc-macro2"; - packageId = "proc-macro2"; + name = "darling_core"; + packageId = "darling_core"; } { name = "quote"; packageId = "quote"; } - { - name = "strsim"; - packageId = "strsim"; - optional = true; - } { name = "syn"; packageId = "syn 2.0.106"; - features = [ "full" "extra-traits" ]; } ]; - features = { - "serde" = [ "dep:serde" ]; - "strsim" = [ "dep:strsim" ]; - "suggestions" = [ "strsim" ]; - }; - resolvedDefaultFeatures = [ "strsim" "suggestions" ]; + }; - "darling_macro 0.20.11" = rec { - crateName = "darling_macro"; - version = "0.20.11"; - edition = "2021"; - sha256 = "1bbfbc2px6sj1pqqq97bgqn6c8xdnb2fmz66f7f40nrqrcybjd7w"; + "delegate" = rec { + crateName = "delegate"; + version = "0.13.4"; + edition = "2018"; + sha256 = "0sz2gl4079alymdws9s3zakgm6y4n76kay8slqxnm0vcylnahy31"; procMacro = true; authors = [ - "Ted Driggs " + "Godfrey Chan " + "Jakub Beránek " ]; dependencies = [ { - name = "darling_core"; - packageId = "darling_core 0.20.11"; + name = "proc-macro2"; + packageId = "proc-macro2"; } { name = "quote"; @@ -2089,44 +2144,70 @@ rec { { name = "syn"; packageId = "syn 2.0.106"; + features = [ "full" "visit-mut" ]; } ]; }; - "darling_macro 0.21.3" = rec { - crateName = "darling_macro"; - version = "0.21.3"; + "der" = rec { + crateName = "der"; + version = "0.7.10"; edition = "2021"; - sha256 = "10ac85n4lnx3rmf5rw8lijl2c0sbl6ghcpgfmzh0s26ihbghi0yk"; - procMacro = true; + sha256 = "1jyxacyxdx6mxbkfw99jz59dzvcd9k17rq01a7xvn1dr6wl87hg7"; authors = [ - "Ted Driggs " + "RustCrypto Developers" ]; dependencies = [ { - name = "darling_core"; - packageId = "darling_core 0.21.3"; + name = "const-oid"; + packageId = "const-oid"; + optional = true; } { - name = "quote"; - packageId = "quote"; + name = "der_derive"; + packageId = "der_derive"; + optional = true; } { - name = "syn"; - packageId = "syn 2.0.106"; + name = "flagset"; + packageId = "flagset"; + optional = true; + } + { + name = "pem-rfc7468"; + packageId = "pem-rfc7468"; + optional = true; + features = [ "alloc" ]; + } + { + name = "zeroize"; + packageId = "zeroize"; + optional = true; + usesDefaultFeatures = false; } ]; - + features = { + "alloc" = [ "zeroize?/alloc" ]; + "arbitrary" = [ "dep:arbitrary" "const-oid?/arbitrary" "std" ]; + "bytes" = [ "dep:bytes" "alloc" ]; + "derive" = [ "dep:der_derive" ]; + "flagset" = [ "dep:flagset" ]; + "oid" = [ "dep:const-oid" ]; + "pem" = [ "dep:pem-rfc7468" "alloc" "zeroize" ]; + "std" = [ "alloc" ]; + "time" = [ "dep:time" ]; + "zeroize" = [ "dep:zeroize" ]; + }; + resolvedDefaultFeatures = [ "alloc" "derive" "flagset" "oid" "pem" "std" "zeroize" ]; }; - "delegate" = rec { - crateName = "delegate"; - version = "0.13.4"; - edition = "2018"; - sha256 = "0sz2gl4079alymdws9s3zakgm6y4n76kay8slqxnm0vcylnahy31"; + "der_derive" = rec { + crateName = "der_derive"; + version = "0.7.3"; + edition = "2021"; + sha256 = "065d2wy7zd0dank99hh58l5x7lv50hxnr7j6f3sphlb7i4ihjd40"; procMacro = true; authors = [ - "Godfrey Chan " - "Jakub Beránek " + "RustCrypto Developers" ]; dependencies = [ { @@ -2140,16 +2221,16 @@ rec { { name = "syn"; packageId = "syn 2.0.106"; - features = [ "full" "visit-mut" ]; + features = [ "extra-traits" ]; } ]; }; "deranged" = rec { crateName = "deranged"; - version = "0.4.0"; + version = "0.5.3"; edition = "2021"; - sha256 = "13h6skwk411wzhf1l9l7d3yz5y6vg9d7s3dwhhb4a942r88nm7lw"; + sha256 = "1k473y8lzjac956dm3s1cs2rz364py9zd52y9fkbanws8b6vqc6n"; authors = [ "Jacob Pratt " ]; @@ -2162,7 +2243,6 @@ rec { } ]; features = { - "default" = [ "std" ]; "macros" = [ "dep:deranged-macros" ]; "num" = [ "dep:num-traits" ]; "powerfmt" = [ "dep:powerfmt" ]; @@ -2171,9 +2251,8 @@ rec { "rand08" = [ "dep:rand08" ]; "rand09" = [ "dep:rand09" ]; "serde" = [ "dep:serde" ]; - "std" = [ "alloc" ]; }; - resolvedDefaultFeatures = [ "alloc" "powerfmt" "std" ]; + resolvedDefaultFeatures = [ "default" "powerfmt" ]; }; "derive_more" = rec { crateName = "derive_more"; @@ -2302,6 +2381,11 @@ rec { packageId = "block-buffer"; optional = true; } + { + name = "const-oid"; + packageId = "const-oid"; + optional = true; + } { name = "crypto-common"; packageId = "crypto-common"; @@ -2326,7 +2410,7 @@ rec { "std" = [ "alloc" "crypto-common/std" ]; "subtle" = [ "dep:subtle" ]; }; - resolvedDefaultFeatures = [ "alloc" "block-buffer" "core-api" "default" "mac" "std" "subtle" ]; + resolvedDefaultFeatures = [ "alloc" "block-buffer" "const-oid" "core-api" "default" "mac" "oid" "std" "subtle" ]; }; "displaydoc" = rec { crateName = "displaydoc"; @@ -2415,6 +2499,79 @@ rec { ]; }; + "ecdsa" = rec { + crateName = "ecdsa"; + version = "0.16.9"; + edition = "2021"; + sha256 = "1jhb0bcbkaz4001sdmfyv8ajrv8a1cg7z7aa5myrd4jjbhmz69zf"; + authors = [ + "RustCrypto Developers" + ]; + dependencies = [ + { + name = "der"; + packageId = "der"; + optional = true; + } + { + name = "digest"; + packageId = "digest"; + optional = true; + usesDefaultFeatures = false; + features = [ "oid" ]; + } + { + name = "elliptic-curve"; + packageId = "elliptic-curve"; + usesDefaultFeatures = false; + features = [ "digest" "sec1" ]; + } + { + name = "rfc6979"; + packageId = "rfc6979"; + optional = true; + } + { + name = "signature"; + packageId = "signature"; + usesDefaultFeatures = false; + features = [ "rand_core" ]; + } + { + name = "spki"; + packageId = "spki"; + optional = true; + usesDefaultFeatures = false; + } + ]; + devDependencies = [ + { + name = "elliptic-curve"; + packageId = "elliptic-curve"; + usesDefaultFeatures = false; + features = [ "dev" ]; + } + ]; + features = { + "alloc" = [ "elliptic-curve/alloc" "signature/alloc" "spki/alloc" ]; + "arithmetic" = [ "elliptic-curve/arithmetic" ]; + "default" = [ "digest" ]; + "der" = [ "dep:der" ]; + "dev" = [ "arithmetic" "digest" "elliptic-curve/dev" "hazmat" ]; + "digest" = [ "dep:digest" "signature/digest" ]; + "pem" = [ "elliptic-curve/pem" "pkcs8" ]; + "pkcs8" = [ "digest" "elliptic-curve/pkcs8" "der" ]; + "rfc6979" = [ "dep:rfc6979" ]; + "serde" = [ "elliptic-curve/serde" "serdect" ]; + "serdect" = [ "dep:serdect" ]; + "sha2" = [ "dep:sha2" ]; + "signing" = [ "arithmetic" "digest" "hazmat" "rfc6979" ]; + "spki" = [ "dep:spki" ]; + "std" = [ "alloc" "elliptic-curve/std" "signature/std" ]; + "verifying" = [ "arithmetic" "digest" "hazmat" ]; + }; + resolvedDefaultFeatures = [ "alloc" "arithmetic" "default" "der" "digest" "hazmat" "pem" "pkcs8" "rfc6979" "signing" "spki" "std" "verifying" ]; + }; "educe" = rec { crateName = "educe"; version = "0.6.0"; @@ -2472,24 +2629,122 @@ rec { }; resolvedDefaultFeatures = [ "default" "std" "use_std" ]; }; - "encoding_rs" = rec { - crateName = "encoding_rs"; - version = "0.8.35"; - edition = "2018"; - sha256 = "1wv64xdrr9v37rqqdjsyb8l8wzlcbab80ryxhrszvnj59wy0y0vm"; + "elliptic-curve" = rec { + crateName = "elliptic-curve"; + version = "0.13.8"; + edition = "2021"; + sha256 = "0ixx4brgnzi61z29r3g1606nh2za88hzyz8c5r3p6ydzhqq09rmm"; + libName = "elliptic_curve"; authors = [ - "Henri Sivonen " + "RustCrypto Developers" ]; dependencies = [ { - name = "cfg-if"; - packageId = "cfg-if"; + name = "base16ct"; + packageId = "base16ct"; } - ]; - features = { - "any_all_workaround" = [ "dep:any_all_workaround" ]; - "default" = [ "alloc" ]; - "fast-legacy-encode" = [ "fast-hangul-encode" "fast-hanja-encode" "fast-kanji-encode" "fast-gb-hanzi-encode" "fast-big5-hanzi-encode" ]; + { + name = "crypto-bigint"; + packageId = "crypto-bigint"; + usesDefaultFeatures = false; + features = [ "rand_core" "generic-array" "zeroize" ]; + } + { + name = "digest"; + packageId = "digest"; + optional = true; + } + { + name = "ff"; + packageId = "ff"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "generic-array"; + packageId = "generic-array"; + usesDefaultFeatures = false; + features = [ "zeroize" ]; + } + { + name = "group"; + packageId = "group"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "pem-rfc7468"; + packageId = "pem-rfc7468"; + optional = true; + features = [ "alloc" ]; + } + { + name = "pkcs8"; + packageId = "pkcs8"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "rand_core"; + packageId = "rand_core 0.6.4"; + usesDefaultFeatures = false; + } + { + name = "sec1"; + packageId = "sec1"; + optional = true; + features = [ "subtle" "zeroize" ]; + } + { + name = "subtle"; + packageId = "subtle"; + usesDefaultFeatures = false; + } + { + name = "zeroize"; + packageId = "zeroize"; + usesDefaultFeatures = false; + } + ]; + features = { + "alloc" = [ "base16ct/alloc" "ff?/alloc" "group?/alloc" "pkcs8?/alloc" "sec1?/alloc" "zeroize/alloc" ]; + "arithmetic" = [ "group" ]; + "bits" = [ "arithmetic" "ff/bits" "dep:tap" ]; + "default" = [ "arithmetic" ]; + "dev" = [ "arithmetic" "dep:hex-literal" "pem" "pkcs8" ]; + "digest" = [ "dep:digest" ]; + "ecdh" = [ "arithmetic" "digest" "dep:hkdf" ]; + "ff" = [ "dep:ff" ]; + "group" = [ "dep:group" "ff" ]; + "hash2curve" = [ "arithmetic" "digest" ]; + "jwk" = [ "dep:base64ct" "dep:serde_json" "alloc" "serde" "zeroize/alloc" ]; + "pem" = [ "dep:pem-rfc7468" "alloc" "arithmetic" "pkcs8" "sec1/pem" ]; + "pkcs8" = [ "dep:pkcs8" "sec1" ]; + "sec1" = [ "dep:sec1" ]; + "serde" = [ "dep:serdect" "alloc" "pkcs8" "sec1/serde" ]; + "std" = [ "alloc" "rand_core/std" "pkcs8?/std" "sec1?/std" ]; + "voprf" = [ "digest" ]; + }; + resolvedDefaultFeatures = [ "alloc" "arithmetic" "digest" "ff" "group" "hazmat" "pem" "pkcs8" "sec1" "std" ]; + }; + "encoding_rs" = rec { + crateName = "encoding_rs"; + version = "0.8.35"; + edition = "2018"; + sha256 = "1wv64xdrr9v37rqqdjsyb8l8wzlcbab80ryxhrszvnj59wy0y0vm"; + authors = [ + "Henri Sivonen " + ]; + dependencies = [ + { + name = "cfg-if"; + packageId = "cfg-if"; + } + ]; + features = { + "any_all_workaround" = [ "dep:any_all_workaround" ]; + "default" = [ "alloc" ]; + "fast-legacy-encode" = [ "fast-hangul-encode" "fast-hanja-encode" "fast-kanji-encode" "fast-gb-hanzi-encode" "fast-big5-hanzi-encode" ]; "serde" = [ "dep:serde" ]; "simd-accel" = [ "any_all_workaround" ]; }; @@ -2565,9 +2820,9 @@ rec { }; "errno" = rec { crateName = "errno"; - version = "0.3.13"; + version = "0.3.14"; edition = "2018"; - sha256 = "1bd5g3srn66zr3bspac0150bvpg1s7zi6zwhwhlayivciz12m3kp"; + sha256 = "1szgccmh8vgryqyadg8xd58mnwwicf39zmin3bsn63df2wbbgjir"; authors = [ "Chris Wong " "Dan Gohman " @@ -2593,7 +2848,7 @@ rec { } { name = "windows-sys"; - packageId = "windows-sys 0.60.2"; + packageId = "windows-sys 0.61.0"; target = { target, features }: (target."windows" or false); features = [ "Win32_Foundation" "Win32_System_Diagnostics_Debug" ]; } @@ -2673,13 +2928,14 @@ rec { }; "fancy-regex" = rec { crateName = "fancy-regex"; - version = "0.13.0"; + version = "0.16.2"; edition = "2018"; - sha256 = "1wjbqjsdj8fkq6z2i9llq25iaqzd9f208vxnwg8mdbr2ba1lc7jk"; + sha256 = "0vy4c012f82xcg3gs068mq110zhsrnajh58fmq1jxr7vaijhb2wr"; libName = "fancy_regex"; authors = [ "Raph Levien " "Robin Stocker " + "Keith Hall " ]; dependencies = [ { @@ -2723,6 +2979,48 @@ rec { }; resolvedDefaultFeatures = [ "alloc" "default" "std" ]; }; + "ff" = rec { + crateName = "ff"; + version = "0.13.1"; + edition = "2021"; + sha256 = "14v3bc6q24gbcjnxjfbq2dddgf4as2z2gd4mj35gjlrncpxhpdf0"; + authors = [ + "Sean Bowe " + "Jack Grigg " + ]; + dependencies = [ + { + name = "rand_core"; + packageId = "rand_core 0.6.4"; + usesDefaultFeatures = false; + } + { + name = "subtle"; + packageId = "subtle"; + usesDefaultFeatures = false; + features = [ "i128" ]; + } + ]; + features = { + "bits" = [ "bitvec" ]; + "bitvec" = [ "dep:bitvec" ]; + "byteorder" = [ "dep:byteorder" ]; + "default" = [ "bits" "std" ]; + "derive" = [ "byteorder" "ff_derive" ]; + "derive_bits" = [ "bits" "ff_derive/bits" ]; + "ff_derive" = [ "dep:ff_derive" ]; + "std" = [ "alloc" ]; + }; + resolvedDefaultFeatures = [ "alloc" ]; + }; + "find-msvc-tools" = rec { + crateName = "find-msvc-tools"; + version = "0.1.1"; + edition = "2018"; + sha256 = "0b8rhghgjssjw9q8a3gg7f9kl8zhy9d7nqsc4s4nc52dyqq9knbz"; + libName = "find_msvc_tools"; + + }; "fixedbitset" = rec { crateName = "fixedbitset"; version = "0.5.7"; @@ -2736,6 +3034,18 @@ rec { "serde" = [ "dep:serde" ]; }; }; + "flagset" = rec { + crateName = "flagset"; + version = "0.4.7"; + edition = "2021"; + sha256 = "1zplx30g76kl5la3ayl9ns5p3diqd9zphbcggqcm4nm7411q5b5p"; + authors = [ + "Nathaniel McCallum " + ]; + features = { + "serde" = [ "dep:serde" ]; + }; + }; "flate2" = rec { crateName = "flate2"; version = "1.1.2"; @@ -3172,6 +3482,12 @@ rec { name = "typenum"; packageId = "typenum"; } + { + name = "zeroize"; + packageId = "zeroize"; + optional = true; + usesDefaultFeatures = false; + } ]; buildDependencies = [ { @@ -3183,7 +3499,7 @@ rec { "serde" = [ "dep:serde" ]; "zeroize" = [ "dep:zeroize" ]; }; - resolvedDefaultFeatures = [ "more_lengths" ]; + resolvedDefaultFeatures = [ "more_lengths" "zeroize" ]; }; "getrandom 0.2.16" = rec { crateName = "getrandom"; @@ -3219,6 +3535,7 @@ rec { "rustc-dep-of-std" = [ "compiler_builtins" "core" "libc/rustc-dep-of-std" "wasi/rustc-dep-of-std" ]; "wasm-bindgen" = [ "dep:wasm-bindgen" ]; }; + resolvedDefaultFeatures = [ "std" ]; }; "getrandom 0.3.3" = rec { crateName = "getrandom"; @@ -3289,7 +3606,7 @@ rec { } { name = "wasi"; - packageId = "wasi 0.14.2+wasi-0.2.4"; + packageId = "wasi 0.14.7+wasi-0.2.4"; usesDefaultFeatures = false; target = { target, features }: (("wasm32" == target."arch" or null) && ("wasi" == target."os" or null) && ("p2" == target."env" or null)); } @@ -3317,15 +3634,15 @@ rec { }; resolvedDefaultFeatures = [ "read" "read-core" ]; }; - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.96.0#stackable-telemetry@0.6.1" = rec { + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.97.0#stackable-telemetry@0.6.1" = rec { crateName = "stackable-telemetry"; version = "0.6.1"; edition = "2024"; workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "89f484ca4e86b565e083e9ad7573e21dbe29a3af"; - sha256 = "05xhfz0bd09095ljkaj950r80bchdb202d8nka95cq356y4wha4c"; + rev = "36e9fad31f07903a545010998fb99aae0188337d"; + sha256 = "1ags7i3a0l5w5dcpfp6zzp4a172bp1jr9wkma0f1byjbk56q8bi0"; }; libName = "stackable_telemetry"; authors = [ @@ -3376,7 +3693,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.7"; + packageId = "snafu 0.8.9"; } { name = "strum"; @@ -3486,7 +3803,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.7"; + packageId = "snafu 0.8.9"; } { name = "strum"; @@ -3625,6 +3942,42 @@ rec { }; resolvedDefaultFeatures = [ "default" "futures" "futures-channel" "futures-core" ]; }; + "group" = rec { + crateName = "group"; + version = "0.13.0"; + edition = "2021"; + sha256 = "0qqs2p5vqnv3zvq9mfjkmw3qlvgqb0c3cm6p33srkh7pc9sfzygh"; + authors = [ + "Sean Bowe " + "Jack Grigg " + ]; + dependencies = [ + { + name = "ff"; + packageId = "ff"; + usesDefaultFeatures = false; + } + { + name = "rand_core"; + packageId = "rand_core 0.6.4"; + usesDefaultFeatures = false; + } + { + name = "subtle"; + packageId = "subtle"; + usesDefaultFeatures = false; + } + ]; + features = { + "default" = [ "alloc" ]; + "memuse" = [ "dep:memuse" ]; + "rand" = [ "dep:rand" ]; + "rand_xorshift" = [ "dep:rand_xorshift" ]; + "tests" = [ "alloc" "rand" "rand_xorshift" ]; + "wnaf-memuse" = [ "alloc" "memuse" ]; + }; + resolvedDefaultFeatures = [ "alloc" ]; + }; "h2" = rec { crateName = "h2"; version = "0.4.12"; @@ -3740,64 +4093,6 @@ rec { }; resolvedDefaultFeatures = [ "allocator-api2" "default" "default-hasher" "equivalent" "inline-more" "raw-entry" ]; }; - "headers" = rec { - crateName = "headers"; - version = "0.4.1"; - edition = "2018"; - sha256 = "1sr4zygaq1b2f0k7b5l8vx5vp05wvd82w7vpavgvr52xvdd4scdk"; - authors = [ - "Sean McArthur " - ]; - dependencies = [ - { - name = "base64"; - packageId = "base64"; - } - { - name = "bytes"; - packageId = "bytes"; - } - { - name = "headers-core"; - packageId = "headers-core"; - } - { - name = "http"; - packageId = "http"; - } - { - name = "httpdate"; - packageId = "httpdate"; - } - { - name = "mime"; - packageId = "mime"; - } - { - name = "sha1"; - packageId = "sha1"; - } - ]; - features = { - }; - }; - "headers-core" = rec { - crateName = "headers-core"; - version = "0.3.0"; - edition = "2015"; - sha256 = "1r1w80i2bhmyh8s5mjr2dz6baqlrm6cak6yvzm4jq96lacjs5d2l"; - libName = "headers_core"; - authors = [ - "Sean McArthur " - ]; - dependencies = [ - { - name = "http"; - packageId = "http"; - } - ]; - - }; "heck" = rec { crateName = "heck"; version = "0.5.0"; @@ -3857,6 +4152,7 @@ rec { features = { "std" = [ "digest/std" ]; }; + resolvedDefaultFeatures = [ "reset" ]; }; "home" = rec { crateName = "home"; @@ -3893,7 +4189,7 @@ rec { } { name = "windows-link"; - packageId = "windows-link"; + packageId = "windows-link 0.1.3"; target = { target, features }: ("windows" == target."os" or null); } ]; @@ -4124,31 +4420,15 @@ rec { "server" = [ "dep:httpdate" "dep:pin-project-lite" "dep:smallvec" ]; "tracing" = [ "dep:tracing" ]; }; - resolvedDefaultFeatures = [ "client" "default" "http1" "http2" "server" ]; + resolvedDefaultFeatures = [ "client" "default" "full" "http1" "http2" "server" ]; }; - "hyper-http-proxy" = rec { - crateName = "hyper-http-proxy"; - version = "1.1.0"; + "hyper-rustls" = rec { + crateName = "hyper-rustls"; + version = "0.27.7"; edition = "2021"; - sha256 = "023w7w9si4zs5phfj30g3dkkk713ipix10dsqj5h443mwfhv1m3s"; - libName = "hyper_http_proxy"; - authors = [ - "MetalBear Tech LTD " - ]; + sha256 = "0n6g8998szbzhnvcs1b7ibn745grxiqmlpg53xz206v826v3xjg3"; + libName = "hyper_rustls"; dependencies = [ - { - name = "bytes"; - packageId = "bytes"; - } - { - name = "futures-util"; - packageId = "futures-util"; - usesDefaultFeatures = false; - } - { - name = "headers"; - packageId = "headers"; - } { name = "http"; packageId = "http"; @@ -4156,37 +4436,41 @@ rec { { name = "hyper"; packageId = "hyper"; - features = [ "client" ]; - } - { - name = "hyper-rustls"; - packageId = "hyper-rustls"; - optional = true; usesDefaultFeatures = false; } { name = "hyper-util"; packageId = "hyper-util"; - features = [ "client" "client-legacy" "tokio" ]; + usesDefaultFeatures = false; + features = [ "client-legacy" "tokio" ]; } { - name = "pin-project-lite"; - packageId = "pin-project-lite"; + name = "log"; + packageId = "log"; + optional = true; + } + { + name = "rustls"; + packageId = "rustls"; + usesDefaultFeatures = false; } { name = "rustls-native-certs"; - packageId = "rustls-native-certs 0.7.3"; + packageId = "rustls-native-certs"; optional = true; } + { + name = "rustls-pki-types"; + packageId = "rustls-pki-types"; + rename = "pki-types"; + } { name = "tokio"; packageId = "tokio"; - features = [ "io-std" "io-util" ]; } { name = "tokio-rustls"; packageId = "tokio-rustls"; - optional = true; usesDefaultFeatures = false; } { @@ -4195,127 +4479,41 @@ rec { } ]; devDependencies = [ - { - name = "hyper"; - packageId = "hyper"; - features = [ "client" "http1" ]; - } { name = "hyper-util"; packageId = "hyper-util"; - features = [ "client" "client-legacy" "http1" "tokio" ]; + usesDefaultFeatures = false; + features = [ "server-auto" ]; + } + { + name = "rustls"; + packageId = "rustls"; + usesDefaultFeatures = false; + features = [ "tls12" ]; } { name = "tokio"; packageId = "tokio"; - features = [ "full" ]; + features = [ "io-std" "macros" "net" "rt-multi-thread" ]; } ]; features = { - "__rustls" = [ "dep:hyper-rustls" "dep:tokio-rustls" "__tls" ]; - "default" = [ "default-tls" ]; - "default-tls" = [ "rustls-tls-native-roots" ]; - "hyper-tls" = [ "dep:hyper-tls" ]; - "native-tls" = [ "dep:native-tls" "tokio-native-tls" "hyper-tls" "__tls" ]; - "native-tls-vendored" = [ "native-tls" "tokio-native-tls?/vendored" ]; - "rustls-tls-native-roots" = [ "dep:rustls-native-certs" "__rustls" "hyper-rustls/rustls-native-certs" ]; - "rustls-tls-webpki-roots" = [ "dep:webpki-roots" "__rustls" "hyper-rustls/webpki-roots" ]; - "tokio-native-tls" = [ "dep:tokio-native-tls" ]; + "aws-lc-rs" = [ "rustls/aws_lc_rs" ]; + "default" = [ "native-tokio" "http1" "tls12" "logging" "aws-lc-rs" ]; + "fips" = [ "aws-lc-rs" "rustls/fips" ]; + "http1" = [ "hyper-util/http1" ]; + "http2" = [ "hyper-util/http2" ]; + "log" = [ "dep:log" ]; + "logging" = [ "log" "tokio-rustls/logging" "rustls/logging" ]; + "native-tokio" = [ "rustls-native-certs" ]; + "ring" = [ "rustls/ring" ]; + "rustls-native-certs" = [ "dep:rustls-native-certs" ]; + "rustls-platform-verifier" = [ "dep:rustls-platform-verifier" ]; + "tls12" = [ "tokio-rustls/tls12" "rustls/tls12" ]; + "webpki-roots" = [ "dep:webpki-roots" ]; + "webpki-tokio" = [ "webpki-roots" ]; }; - resolvedDefaultFeatures = [ "__rustls" "__tls" "rustls-tls-native-roots" ]; - }; - "hyper-rustls" = rec { - crateName = "hyper-rustls"; - version = "0.27.7"; - edition = "2021"; - sha256 = "0n6g8998szbzhnvcs1b7ibn745grxiqmlpg53xz206v826v3xjg3"; - libName = "hyper_rustls"; - dependencies = [ - { - name = "http"; - packageId = "http"; - } - { - name = "hyper"; - packageId = "hyper"; - usesDefaultFeatures = false; - } - { - name = "hyper-util"; - packageId = "hyper-util"; - usesDefaultFeatures = false; - features = [ "client-legacy" "tokio" ]; - } - { - name = "log"; - packageId = "log"; - optional = true; - } - { - name = "rustls"; - packageId = "rustls"; - usesDefaultFeatures = false; - } - { - name = "rustls-native-certs"; - packageId = "rustls-native-certs 0.8.1"; - optional = true; - } - { - name = "rustls-pki-types"; - packageId = "rustls-pki-types"; - rename = "pki-types"; - } - { - name = "tokio"; - packageId = "tokio"; - } - { - name = "tokio-rustls"; - packageId = "tokio-rustls"; - usesDefaultFeatures = false; - } - { - name = "tower-service"; - packageId = "tower-service"; - } - ]; - devDependencies = [ - { - name = "hyper-util"; - packageId = "hyper-util"; - usesDefaultFeatures = false; - features = [ "server-auto" ]; - } - { - name = "rustls"; - packageId = "rustls"; - usesDefaultFeatures = false; - features = [ "tls12" ]; - } - { - name = "tokio"; - packageId = "tokio"; - features = [ "io-std" "macros" "net" "rt-multi-thread" ]; - } - ]; - features = { - "aws-lc-rs" = [ "rustls/aws_lc_rs" ]; - "default" = [ "native-tokio" "http1" "tls12" "logging" "aws-lc-rs" ]; - "fips" = [ "aws-lc-rs" "rustls/fips" ]; - "http1" = [ "hyper-util/http1" ]; - "http2" = [ "hyper-util/http2" ]; - "log" = [ "dep:log" ]; - "logging" = [ "log" "tokio-rustls/logging" "rustls/logging" ]; - "native-tokio" = [ "rustls-native-certs" ]; - "ring" = [ "rustls/ring" ]; - "rustls-native-certs" = [ "dep:rustls-native-certs" ]; - "rustls-platform-verifier" = [ "dep:rustls-platform-verifier" ]; - "tls12" = [ "tokio-rustls/tls12" "rustls/tls12" ]; - "webpki-roots" = [ "dep:webpki-roots" ]; - "webpki-tokio" = [ "webpki-roots" ]; - }; - resolvedDefaultFeatures = [ "http1" "log" "logging" "native-tokio" "ring" "rustls-native-certs" "tls12" ]; + resolvedDefaultFeatures = [ "http1" "log" "logging" "native-tokio" "ring" "rustls-native-certs" "tls12" ]; }; "hyper-timeout" = rec { crateName = "hyper-timeout"; @@ -4370,9 +4568,9 @@ rec { }; "hyper-util" = rec { crateName = "hyper-util"; - version = "0.1.16"; + version = "0.1.17"; edition = "2021"; - sha256 = "0pmw8gqkqjnsdrxdy5wd5q8z1gh7caxqk2an7b4s53byghkhb6wd"; + sha256 = "1a5fcnz0alrg4lx9xf6ja66ihaab58jnm5msnky804wg39cras9w"; libName = "hyper_util"; authors = [ "Sean McArthur " @@ -4499,9 +4697,9 @@ rec { }; "iana-time-zone" = rec { crateName = "iana-time-zone"; - version = "0.1.63"; + version = "0.1.64"; edition = "2021"; - sha256 = "1n171f5lbc7bryzmp1h30zw86zbvl5480aq02z92lcdwvvjikjdh"; + sha256 = "1yz980fmhaq9bdkasz35z63az37ci6kzzfhya83kgdqba61pzr9k"; libName = "iana_time_zone"; authors = [ "Andrew Straw " @@ -4541,7 +4739,7 @@ rec { } { name = "windows-core"; - packageId = "windows-core"; + packageId = "windows-core 0.62.0"; target = { target, features }: ("windows" == target."os" or null); } ]; @@ -4940,9 +5138,9 @@ rec { }; "indexmap" = rec { crateName = "indexmap"; - version = "2.11.0"; + version = "2.11.3"; edition = "2021"; - sha256 = "1sb3nmhisf9pdwfcxzqlvx97xifcvlh5g0rqj9j7i7qg8f01jj7j"; + sha256 = "1hqs931f1sd3r92zj77ji9bs75f20amnj0s3aqas9zqkym29h4cj"; dependencies = [ { name = "equivalent"; @@ -4961,7 +5159,7 @@ rec { "default" = [ "std" ]; "quickcheck" = [ "dep:quickcheck" ]; "rayon" = [ "dep:rayon" ]; - "serde" = [ "dep:serde" ]; + "serde" = [ "dep:serde_core" "dep:serde" ]; "sval" = [ "dep:sval" ]; }; resolvedDefaultFeatures = [ "default" "std" ]; @@ -5196,9 +5394,9 @@ rec { }; "js-sys" = rec { crateName = "js-sys"; - version = "0.3.77"; + version = "0.3.78"; edition = "2021"; - sha256 = "13x2qcky5l22z4xgivi59xhjjx4kxir1zg7gcj0f1ijzd4yg7yhw"; + sha256 = "0f17vdkpbarm0qlbqb0p1fyiy4l9bs62zvw3fv0ywb29g0shc2qc"; libName = "js_sys"; authors = [ "The wasm-bindgen Developers" @@ -5333,10 +5531,10 @@ rec { }; "k8s-openapi" = rec { crateName = "k8s-openapi"; - version = "0.25.0"; + version = "0.26.0"; edition = "2021"; - links = "k8s-openapi-0.25.0"; - sha256 = "1cphvicl9hq4nbp2pbzdcvz9r0f9kzwbqzgp383hl6mfawds8q5a"; + links = "k8s-openapi-0.26.0"; + sha256 = "14m6i7g6w8lh1rnc19f2c31cvf2ia2vzmggsmzn5p4ba6bahcgyi"; libName = "k8s_openapi"; authors = [ "Arnav Singh " @@ -5375,10 +5573,10 @@ rec { features = { "default" = [ "std" ]; "earliest" = [ "v1_30" ]; - "latest" = [ "v1_33" ]; + "latest" = [ "v1_34" ]; "schemars" = [ "dep:schemars" ]; }; - resolvedDefaultFeatures = [ "schemars" "v1_33" ]; + resolvedDefaultFeatures = [ "schemars" "v1_34" ]; }; "k8s-version" = rec { crateName = "k8s-version"; @@ -5387,8 +5585,8 @@ rec { workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "89f484ca4e86b565e083e9ad7573e21dbe29a3af"; - sha256 = "05xhfz0bd09095ljkaj950r80bchdb202d8nka95cq356y4wha4c"; + rev = "36e9fad31f07903a545010998fb99aae0188337d"; + sha256 = "1ags7i3a0l5w5dcpfp6zzp4a172bp1jr9wkma0f1byjbk56q8bi0"; }; libName = "k8s_version"; authors = [ @@ -5397,7 +5595,7 @@ rec { dependencies = [ { name = "darling"; - packageId = "darling 0.21.3"; + packageId = "darling"; optional = true; } { @@ -5406,7 +5604,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.7"; + packageId = "snafu 0.8.9"; } ]; features = { @@ -5435,7 +5633,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.7"; + packageId = "snafu 0.8.9"; } ]; @@ -5468,9 +5666,9 @@ rec { }; "kube" = rec { crateName = "kube"; - version = "1.1.0"; - edition = "2021"; - sha256 = "0lcz9sm83j06i77sp6idbq7y06hd64a1wwkj2g0w7x7a9dk9i3vp"; + version = "2.0.1"; + edition = "2024"; + sha256 = "0kh1m9w0nhd3fai4pcshl7z5rx0s83zvcxa51v12ql26d85vprs8"; authors = [ "clux " "Natalie Klestrup Röijezon " @@ -5541,9 +5739,9 @@ rec { }; "kube-client" = rec { crateName = "kube-client"; - version = "1.1.0"; - edition = "2021"; - sha256 = "13fv32vhljjxqgfmzciwanh7wsglzil2rsn81b8dx53fbfw7dckw"; + version = "2.0.1"; + edition = "2024"; + sha256 = "0dksaqk698bciyda6k8ss9lr92bqyb3pygddzna54asd31xdb1s9"; libName = "kube_client"; authors = [ "clux " @@ -5604,12 +5802,6 @@ rec { optional = true; features = [ "client" "http1" ]; } - { - name = "hyper-http-proxy"; - packageId = "hyper-http-proxy"; - optional = true; - usesDefaultFeatures = false; - } { name = "hyper-rustls"; packageId = "hyper-rustls"; @@ -5747,12 +5939,10 @@ rec { "home" = [ "dep:home" ]; "http-body" = [ "dep:http-body" ]; "http-body-util" = [ "dep:http-body-util" ]; - "http-proxy" = [ "hyper-http-proxy" ]; + "http-proxy" = [ "hyper-util/client-proxy" ]; "hyper" = [ "dep:hyper" ]; - "hyper-http-proxy" = [ "dep:hyper-http-proxy" ]; "hyper-openssl" = [ "dep:hyper-openssl" ]; "hyper-rustls" = [ "dep:hyper-rustls" ]; - "hyper-socks2" = [ "dep:hyper-socks2" ]; "hyper-timeout" = [ "dep:hyper-timeout" ]; "hyper-util" = [ "dep:hyper-util" ]; "jsonpatch" = [ "kube-core/jsonpatch" ]; @@ -5765,9 +5955,9 @@ rec { "pem" = [ "dep:pem" ]; "ring" = [ "hyper-rustls?/ring" ]; "rustls" = [ "dep:rustls" ]; - "rustls-tls" = [ "rustls" "hyper-rustls" "hyper-http-proxy?/rustls-tls-native-roots" ]; + "rustls-tls" = [ "rustls" "hyper-rustls" ]; "serde_yaml" = [ "dep:serde_yaml" ]; - "socks5" = [ "hyper-socks2" ]; + "socks5" = [ "hyper-util/client-proxy" ]; "tame-oauth" = [ "dep:tame-oauth" ]; "tokio" = [ "dep:tokio" ]; "tokio-tungstenite" = [ "dep:tokio-tungstenite" ]; @@ -5782,9 +5972,9 @@ rec { }; "kube-core" = rec { crateName = "kube-core"; - version = "1.1.0"; - edition = "2021"; - sha256 = "0q09yvzbh840mn3q66r73wjp4s60c3npw0bnlkr3207bbps6zig3"; + version = "2.0.1"; + edition = "2024"; + sha256 = "0wzfc1q78s5a3k1gfa6i8xjd9gmssbnw0f1mdsh23dvv1rvvnjwi"; libName = "kube_core"; authors = [ "clux " @@ -5864,9 +6054,9 @@ rec { }; "kube-derive" = rec { crateName = "kube-derive"; - version = "1.1.0"; - edition = "2021"; - sha256 = "15frbch851xpi5zv37szfhkcrgbfd4hfxzcw60l8clwpqg0wi7q7"; + version = "2.0.1"; + edition = "2024"; + sha256 = "1ljhw6xmrj1v8ni144bpxrifwzbrrn0qnl5kd8m7fdz15cjyiph3"; procMacro = true; libName = "kube_derive"; authors = [ @@ -5877,7 +6067,7 @@ rec { dependencies = [ { name = "darling"; - packageId = "darling 0.20.11"; + packageId = "darling"; } { name = "proc-macro2"; @@ -5913,9 +6103,9 @@ rec { }; "kube-runtime" = rec { crateName = "kube-runtime"; - version = "1.1.0"; - edition = "2021"; - sha256 = "1p2021s6nlxwiivbk37lrjcki740070a3y5xzr465pzs8vljc4rg"; + version = "2.0.1"; + edition = "2024"; + sha256 = "1zg34fih2r72y9sr58gmgyjizbkl6jv0nc0hmf4wrib2npj4vska"; libName = "kube_runtime"; authors = [ "clux " @@ -6039,10 +6229,20 @@ rec { authors = [ "Marvin Löbel " ]; + dependencies = [ + { + name = "spin"; + packageId = "spin"; + optional = true; + usesDefaultFeatures = false; + features = [ "once" ]; + } + ]; features = { "spin" = [ "dep:spin" ]; "spin_no_std" = [ "spin" ]; }; + resolvedDefaultFeatures = [ "spin" "spin_no_std" ]; }; "lber" = rec { crateName = "lber"; @@ -6345,6 +6545,20 @@ rec { ]; }; + "libm" = rec { + crateName = "libm"; + version = "0.2.15"; + edition = "2021"; + sha256 = "1plpzf0p829viazdj57yw5dhmlr8ywf3apayxc2f2bq5a6mvryzr"; + authors = [ + "Jorge Aparicio " + ]; + features = { + "default" = [ "arch" ]; + "unstable" = [ "unstable-intrinsics" "unstable-float" ]; + }; + resolvedDefaultFeatures = [ "arch" "default" ]; + }; "libz-sys" = rec { crateName = "libz-sys"; version = "1.1.22"; @@ -6389,20 +6603,19 @@ rec { }; "linux-raw-sys" = rec { crateName = "linux-raw-sys"; - version = "0.9.4"; + version = "0.11.0"; edition = "2021"; - sha256 = "04kyjdrq79lz9ibrf7czk6cv9d3jl597pb9738vzbsbzy1j5i56d"; + sha256 = "0fghx0nn8nvbz5yzgizfcwd6ap2pislp68j8c1bwyr6sacxkq7fz"; libName = "linux_raw_sys"; authors = [ "Dan Gohman " ]; features = { - "compiler_builtins" = [ "dep:compiler_builtins" ]; "core" = [ "dep:core" ]; "default" = [ "std" "general" "errno" ]; - "rustc-dep-of-std" = [ "core" "compiler_builtins" "no_std" ]; + "rustc-dep-of-std" = [ "core" "no_std" ]; }; - resolvedDefaultFeatures = [ "elf" "errno" "general" "ioctl" "no_std" ]; + resolvedDefaultFeatures = [ "auxvec" "elf" "errno" "general" "ioctl" "no_std" ]; }; "litemap" = rec { crateName = "litemap"; @@ -6451,9 +6664,9 @@ rec { }; "log" = rec { crateName = "log"; - version = "0.4.27"; + version = "0.4.28"; edition = "2021"; - sha256 = "150x589dqil307rv0rwj0jsgz5bjbwvl83gyl61jf873a7rjvp0k"; + sha256 = "0cklpzrpxafbaq1nyxarhnmcw9z3xcjrad3ch55mmr58xw2ha21l"; authors = [ "The Rust Project Developers" ]; @@ -6753,6 +6966,86 @@ rec { "serde" = [ "dep:serde" ]; }; }; + "num-bigint-dig" = rec { + crateName = "num-bigint-dig"; + version = "0.8.4"; + edition = "2021"; + sha256 = "0lb12df24wgxxbspz4gw1sf1kdqwvpdcpwq4fdlwg4gj41c1k16w"; + libName = "num_bigint_dig"; + authors = [ + "dignifiedquire " + "The Rust Project Developers" + ]; + dependencies = [ + { + name = "byteorder"; + packageId = "byteorder"; + usesDefaultFeatures = false; + } + { + name = "lazy_static"; + packageId = "lazy_static"; + usesDefaultFeatures = false; + features = [ "spin_no_std" ]; + } + { + name = "libm"; + packageId = "libm"; + } + { + name = "num-integer"; + packageId = "num-integer"; + usesDefaultFeatures = false; + features = [ "i128" ]; + } + { + name = "num-iter"; + packageId = "num-iter"; + usesDefaultFeatures = false; + } + { + name = "num-traits"; + packageId = "num-traits"; + usesDefaultFeatures = false; + features = [ "i128" ]; + } + { + name = "rand"; + packageId = "rand 0.8.5"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "smallvec"; + packageId = "smallvec"; + usesDefaultFeatures = false; + } + { + name = "zeroize"; + packageId = "zeroize"; + optional = true; + usesDefaultFeatures = false; + } + ]; + devDependencies = [ + { + name = "rand"; + packageId = "rand 0.8.5"; + features = [ "small_rng" ]; + } + ]; + features = { + "arbitrary" = [ "dep:arbitrary" ]; + "default" = [ "std" "u64_digit" ]; + "fuzz" = [ "arbitrary" "smallvec/arbitrary" ]; + "prime" = [ "rand/std_rng" ]; + "rand" = [ "dep:rand" ]; + "serde" = [ "dep:serde" ]; + "std" = [ "num-integer/std" "num-traits/std" "smallvec/write" "rand/std" "serde/std" ]; + "zeroize" = [ "dep:zeroize" ]; + }; + resolvedDefaultFeatures = [ "i128" "prime" "rand" "u64_digit" "zeroize" ]; + }; "num-conv" = rec { crateName = "num-conv"; version = "0.1.0"; @@ -6764,6 +7057,63 @@ rec { ]; }; + "num-integer" = rec { + crateName = "num-integer"; + version = "0.1.46"; + edition = "2018"; + sha256 = "13w5g54a9184cqlbsq80rnxw4jj4s0d8wv75jsq5r2lms8gncsbr"; + libName = "num_integer"; + authors = [ + "The Rust Project Developers" + ]; + dependencies = [ + { + name = "num-traits"; + packageId = "num-traits"; + usesDefaultFeatures = false; + features = [ "i128" ]; + } + ]; + features = { + "default" = [ "std" ]; + "std" = [ "num-traits/std" ]; + }; + resolvedDefaultFeatures = [ "i128" ]; + }; + "num-iter" = rec { + crateName = "num-iter"; + version = "0.1.45"; + edition = "2018"; + sha256 = "1gzm7vc5g9qsjjl3bqk9rz1h6raxhygbrcpbfl04swlh0i506a8l"; + libName = "num_iter"; + authors = [ + "The Rust Project Developers" + ]; + dependencies = [ + { + name = "num-integer"; + packageId = "num-integer"; + usesDefaultFeatures = false; + features = [ "i128" ]; + } + { + name = "num-traits"; + packageId = "num-traits"; + usesDefaultFeatures = false; + features = [ "i128" ]; + } + ]; + buildDependencies = [ + { + name = "autocfg"; + packageId = "autocfg"; + } + ]; + features = { + "default" = [ "std" ]; + "std" = [ "num-integer/std" "num-traits/std" ]; + }; + }; "num-traits" = rec { crateName = "num-traits"; version = "0.2.19"; @@ -6773,6 +7123,13 @@ rec { authors = [ "The Rust Project Developers" ]; + dependencies = [ + { + name = "libm"; + packageId = "libm"; + optional = true; + } + ]; buildDependencies = [ { name = "autocfg"; @@ -6783,7 +7140,7 @@ rec { "default" = [ "std" ]; "libm" = [ "dep:libm" ]; }; - resolvedDefaultFeatures = [ "std" ]; + resolvedDefaultFeatures = [ "i128" "libm" "std" ]; }; "object" = rec { crateName = "object"; @@ -6972,9 +7329,9 @@ rec { }; "opentelemetry" = rec { crateName = "opentelemetry"; - version = "0.30.0"; + version = "0.31.0"; edition = "2021"; - sha256 = "1rjjwlvhr7h01kl0768v9i7ng77l1axxfzbg29ancxbjrgj1dx5a"; + sha256 = "18629xsj4rsyiby9aj511q6wcw6s9m09gx3ymw1yjcvix1mcsjxq"; dependencies = [ { name = "futures-core"; @@ -7026,14 +7383,15 @@ rec { }; "opentelemetry-appender-tracing" = rec { crateName = "opentelemetry-appender-tracing"; - version = "0.30.1"; + version = "0.31.0"; edition = "2021"; - sha256 = "05pwdypdbg8sxkbafy8cr1cyjyy19w4r7s001rbpxm7slpn673z6"; + sha256 = "0xsjx5c1729hxnykypan7w4ic3pcp9hlnjjdfb28bfr3skgxq4dw"; libName = "opentelemetry_appender_tracing"; dependencies = [ { name = "opentelemetry"; packageId = "opentelemetry"; + usesDefaultFeatures = false; features = [ "logs" ]; } { @@ -7079,9 +7437,9 @@ rec { }; "opentelemetry-http" = rec { crateName = "opentelemetry-http"; - version = "0.30.0"; + version = "0.31.0"; edition = "2021"; - sha256 = "0vf3d9p733ms312hcbhy14h32imf22bl7qw6i3mdp5rahjg67xjh"; + sha256 = "0pc5nw1ds8v8w0nvyall39m92v8m1xl1p3vwvxk6nkhrffdd19np"; libName = "opentelemetry_http"; dependencies = [ { @@ -7101,6 +7459,7 @@ rec { { name = "opentelemetry"; packageId = "opentelemetry"; + usesDefaultFeatures = false; features = [ "trace" ]; } { @@ -7108,7 +7467,6 @@ rec { packageId = "reqwest"; optional = true; usesDefaultFeatures = false; - features = [ "blocking" ]; } ]; features = { @@ -7116,16 +7474,17 @@ rec { "hyper" = [ "dep:http-body-util" "dep:hyper" "dep:hyper-util" "dep:tokio" ]; "internal-logs" = [ "opentelemetry/internal-logs" ]; "reqwest" = [ "dep:reqwest" ]; - "reqwest-rustls" = [ "reqwest" "reqwest/rustls-tls-native-roots" ]; - "reqwest-rustls-webpki-roots" = [ "reqwest" "reqwest/rustls-tls-webpki-roots" ]; + "reqwest-blocking" = [ "dep:reqwest" "reqwest/blocking" ]; + "reqwest-rustls" = [ "dep:reqwest" "reqwest/rustls-tls-native-roots" ]; + "reqwest-rustls-webpki-roots" = [ "dep:reqwest" "reqwest/rustls-tls-webpki-roots" ]; }; - resolvedDefaultFeatures = [ "default" "internal-logs" "reqwest" ]; + resolvedDefaultFeatures = [ "internal-logs" "reqwest" "reqwest-blocking" ]; }; "opentelemetry-otlp" = rec { crateName = "opentelemetry-otlp"; - version = "0.30.0"; + version = "0.31.0"; edition = "2021"; - sha256 = "0aw5amychdmwayfa0p724na1m7vd1jk9qlzw39riaxp08d56dvnv"; + sha256 = "1gv3h75z8c0p9b85mbq7f1rgsi18wip1xlfa6g82lkfa5pdnc8vs"; libName = "opentelemetry_otlp"; dependencies = [ { @@ -7144,6 +7503,7 @@ rec { name = "opentelemetry-http"; packageId = "opentelemetry-http"; optional = true; + usesDefaultFeatures = false; } { name = "opentelemetry-proto"; @@ -7157,7 +7517,7 @@ rec { } { name = "prost"; - packageId = "prost 0.13.5"; + packageId = "prost"; optional = true; } { @@ -7180,7 +7540,7 @@ rec { } { name = "tonic"; - packageId = "tonic 0.13.1"; + packageId = "tonic"; optional = true; usesDefaultFeatures = false; } @@ -7192,6 +7552,12 @@ rec { } ]; devDependencies = [ + { + name = "opentelemetry_sdk"; + packageId = "opentelemetry_sdk"; + usesDefaultFeatures = false; + features = [ "trace" "testing" ]; + } { name = "tokio"; packageId = "tokio"; @@ -7200,27 +7566,29 @@ rec { } { name = "tonic"; - packageId = "tonic 0.13.1"; + packageId = "tonic"; usesDefaultFeatures = false; features = [ "router" "server" ]; } ]; features = { "default" = [ "http-proto" "reqwest-blocking-client" "trace" "metrics" "logs" "internal-logs" ]; + "flate2" = [ "dep:flate2" ]; "grpc-tonic" = [ "tonic" "prost" "http" "tokio" "opentelemetry-proto/gen-tonic" ]; + "gzip-http" = [ "flate2" ]; "gzip-tonic" = [ "tonic/gzip" ]; "http" = [ "dep:http" ]; "http-json" = [ "serde_json" "prost" "opentelemetry-http" "opentelemetry-proto/gen-tonic-messages" "opentelemetry-proto/with-serde" "http" "trace" "metrics" ]; "http-proto" = [ "prost" "opentelemetry-http" "opentelemetry-proto/gen-tonic-messages" "http" "trace" "metrics" ]; "hyper-client" = [ "opentelemetry-http/hyper" ]; "integration-testing" = [ "tonic" "prost" "tokio/full" "trace" "logs" ]; - "internal-logs" = [ "tracing" "opentelemetry/internal-logs" ]; + "internal-logs" = [ "tracing" "opentelemetry_sdk/internal-logs" "opentelemetry-http/internal-logs" ]; "logs" = [ "opentelemetry/logs" "opentelemetry_sdk/logs" "opentelemetry-proto/logs" ]; "metrics" = [ "opentelemetry/metrics" "opentelemetry_sdk/metrics" "opentelemetry-proto/metrics" ]; "opentelemetry-http" = [ "dep:opentelemetry-http" ]; "prost" = [ "dep:prost" ]; "reqwest" = [ "dep:reqwest" ]; - "reqwest-blocking-client" = [ "reqwest/blocking" "opentelemetry-http/reqwest" ]; + "reqwest-blocking-client" = [ "reqwest/blocking" "opentelemetry-http/reqwest-blocking" ]; "reqwest-client" = [ "reqwest" "opentelemetry-http/reqwest" ]; "reqwest-rustls" = [ "reqwest" "opentelemetry-http/reqwest-rustls" ]; "reqwest-rustls-webpki-roots" = [ "reqwest" "opentelemetry-http/reqwest-rustls-webpki-roots" ]; @@ -7234,15 +7602,17 @@ rec { "tonic" = [ "dep:tonic" ]; "trace" = [ "opentelemetry/trace" "opentelemetry_sdk/trace" "opentelemetry-proto/trace" ]; "tracing" = [ "dep:tracing" ]; + "zstd" = [ "dep:zstd" ]; + "zstd-http" = [ "zstd" ]; "zstd-tonic" = [ "tonic/zstd" ]; }; resolvedDefaultFeatures = [ "default" "grpc-tonic" "gzip-tonic" "http" "http-proto" "internal-logs" "logs" "metrics" "opentelemetry-http" "prost" "reqwest" "reqwest-blocking-client" "tokio" "tonic" "trace" "tracing" ]; }; "opentelemetry-proto" = rec { crateName = "opentelemetry-proto"; - version = "0.30.0"; + version = "0.31.0"; edition = "2021"; - sha256 = "1p4d1s7p4z5a9xy4x4dsjifc3385v5q8wx780mdgw407cvbny11f"; + sha256 = "03xkjsjrsm7zkkx5gascqd9bg2z20wymm06l16cyxsp5dpq5s5x7"; libName = "opentelemetry_proto"; dependencies = [ { @@ -7257,44 +7627,59 @@ rec { } { name = "prost"; - packageId = "prost 0.13.5"; + packageId = "prost"; optional = true; } { name = "tonic"; - packageId = "tonic 0.13.1"; + packageId = "tonic"; optional = true; usesDefaultFeatures = false; - features = [ "codegen" "prost" ]; + features = [ "codegen" ]; } - ]; - features = { + { + name = "tonic-prost"; + packageId = "tonic-prost"; + optional = true; + } + ]; + devDependencies = [ + { + name = "opentelemetry"; + packageId = "opentelemetry"; + usesDefaultFeatures = false; + features = [ "testing" ]; + } + ]; + features = { "base64" = [ "dep:base64" ]; + "const-hex" = [ "dep:const-hex" ]; "default" = [ "full" ]; "full" = [ "gen-tonic" "trace" "logs" "metrics" "zpages" "with-serde" "internal-logs" ]; "gen-tonic" = [ "gen-tonic-messages" "tonic/channel" ]; - "gen-tonic-messages" = [ "tonic" "prost" ]; - "hex" = [ "dep:hex" ]; + "gen-tonic-messages" = [ "tonic" "tonic-prost" "prost" ]; "internal-logs" = [ "opentelemetry/internal-logs" ]; "logs" = [ "opentelemetry/logs" "opentelemetry_sdk/logs" ]; "metrics" = [ "opentelemetry/metrics" "opentelemetry_sdk/metrics" ]; "prost" = [ "dep:prost" ]; "schemars" = [ "dep:schemars" ]; "serde" = [ "dep:serde" ]; + "serde_json" = [ "dep:serde_json" ]; "testing" = [ "opentelemetry/testing" ]; "tonic" = [ "dep:tonic" ]; + "tonic-prost" = [ "dep:tonic-prost" ]; "trace" = [ "opentelemetry/trace" "opentelemetry_sdk/trace" ]; "with-schemars" = [ "schemars" ]; - "with-serde" = [ "serde" "hex" "base64" ]; + "with-serde" = [ "serde" "const-hex" "base64" "serde_json" ]; "zpages" = [ "trace" ]; }; - resolvedDefaultFeatures = [ "gen-tonic" "gen-tonic-messages" "logs" "metrics" "prost" "tonic" "trace" ]; + resolvedDefaultFeatures = [ "gen-tonic" "gen-tonic-messages" "logs" "metrics" "prost" "tonic" "tonic-prost" "trace" ]; }; "opentelemetry-semantic-conventions" = rec { crateName = "opentelemetry-semantic-conventions"; - version = "0.30.0"; + version = "0.31.0"; edition = "2021"; - sha256 = "1hns9n0sh89cqp7rav7gf2a5nw65wv2m78sphms3cx54jsi5kl43"; + sha256 = "0in8plv2l2ar7anzi7lrbll0fjfvaymkg5vc5bnvibs1w3gjjbp6"; libName = "opentelemetry_semantic_conventions"; features = { }; @@ -7302,9 +7687,9 @@ rec { }; "opentelemetry_sdk" = rec { crateName = "opentelemetry_sdk"; - version = "0.30.0"; + version = "0.31.0"; edition = "2021"; - sha256 = "0jvsqhdrka9ppyfr3y6rhj4ai61wgrfk0970jqcd2cayksm49xhi"; + sha256 = "1gbjsggdxfpjbanjvaxa3nq32vfa37i3v13dvx4gsxhrk7sy8jp1"; dependencies = [ { name = "futures-channel"; @@ -7323,6 +7708,7 @@ rec { { name = "opentelemetry"; packageId = "opentelemetry"; + usesDefaultFeatures = false; } { name = "percent-encoding"; @@ -7331,16 +7717,11 @@ rec { } { name = "rand"; - packageId = "rand"; + packageId = "rand 0.9.2"; optional = true; usesDefaultFeatures = false; features = [ "std" "std_rng" "small_rng" "os_rng" "thread_rng" ]; } - { - name = "serde_json"; - packageId = "serde_json"; - optional = true; - } { name = "thiserror"; packageId = "thiserror 2.0.16"; @@ -7351,7 +7732,6 @@ rec { packageId = "tokio"; optional = true; usesDefaultFeatures = false; - features = [ "rt" "time" ]; } { name = "tokio-stream"; @@ -7366,17 +7746,17 @@ rec { "experimental_metrics_custom_reader" = [ "metrics" ]; "experimental_metrics_disable_name_validation" = [ "metrics" ]; "experimental_metrics_periodicreader_with_async_runtime" = [ "metrics" "experimental_async_runtime" ]; - "experimental_trace_batch_span_processor_with_async_runtime" = [ "trace" "experimental_async_runtime" ]; + "experimental_trace_batch_span_processor_with_async_runtime" = [ "tokio/sync" "trace" "experimental_async_runtime" ]; "http" = [ "dep:http" ]; "internal-logs" = [ "opentelemetry/internal-logs" ]; "jaeger_remote_sampler" = [ "trace" "opentelemetry-http" "http" "serde" "serde_json" "url" "experimental_async_runtime" ]; - "logs" = [ "opentelemetry/logs" "serde_json" ]; + "logs" = [ "opentelemetry/logs" ]; "metrics" = [ "opentelemetry/metrics" ]; "opentelemetry-http" = [ "dep:opentelemetry-http" ]; "percent-encoding" = [ "dep:percent-encoding" ]; "rand" = [ "dep:rand" ]; - "rt-tokio" = [ "tokio" "tokio-stream" "experimental_async_runtime" ]; - "rt-tokio-current-thread" = [ "tokio" "tokio-stream" "experimental_async_runtime" ]; + "rt-tokio" = [ "tokio/rt" "tokio/time" "tokio-stream" "experimental_async_runtime" ]; + "rt-tokio-current-thread" = [ "tokio/rt" "tokio/time" "tokio-stream" "experimental_async_runtime" ]; "serde" = [ "dep:serde" ]; "serde_json" = [ "dep:serde_json" ]; "spec_unstable_logs_enabled" = [ "logs" "opentelemetry/spec_unstable_logs_enabled" ]; @@ -7387,7 +7767,7 @@ rec { "trace" = [ "opentelemetry/trace" "rand" "percent-encoding" ]; "url" = [ "dep:url" ]; }; - resolvedDefaultFeatures = [ "default" "experimental_async_runtime" "internal-logs" "logs" "metrics" "percent-encoding" "rand" "rt-tokio" "serde_json" "spec_unstable_logs_enabled" "tokio" "tokio-stream" "trace" ]; + resolvedDefaultFeatures = [ "default" "experimental_async_runtime" "internal-logs" "logs" "metrics" "percent-encoding" "rand" "rt-tokio" "spec_unstable_logs_enabled" "tokio" "tokio-stream" "trace" ]; }; "ordered-float" = rec { crateName = "ordered-float"; @@ -7477,6 +7857,79 @@ rec { ]; }; + "p256" = rec { + crateName = "p256"; + version = "0.13.2"; + edition = "2021"; + sha256 = "0jyd3c3k239ybs59ixpnl7dqkmm072fr1js8kh7ldx58bzc3m1n9"; + authors = [ + "RustCrypto Developers" + ]; + dependencies = [ + { + name = "ecdsa"; + packageId = "ecdsa"; + rename = "ecdsa-core"; + optional = true; + usesDefaultFeatures = false; + features = [ "der" ]; + } + { + name = "elliptic-curve"; + packageId = "elliptic-curve"; + usesDefaultFeatures = false; + features = [ "hazmat" "sec1" ]; + } + { + name = "primeorder"; + packageId = "primeorder"; + optional = true; + } + { + name = "sha2"; + packageId = "sha2"; + optional = true; + usesDefaultFeatures = false; + } + ]; + devDependencies = [ + { + name = "ecdsa"; + packageId = "ecdsa"; + rename = "ecdsa-core"; + usesDefaultFeatures = false; + features = [ "dev" ]; + } + { + name = "primeorder"; + packageId = "primeorder"; + features = [ "dev" ]; + } + ]; + features = { + "alloc" = [ "ecdsa-core?/alloc" "elliptic-curve/alloc" ]; + "arithmetic" = [ "dep:primeorder" "elliptic-curve/arithmetic" ]; + "bits" = [ "arithmetic" "elliptic-curve/bits" ]; + "default" = [ "arithmetic" "ecdsa" "pem" "std" ]; + "digest" = [ "ecdsa-core/digest" "ecdsa-core/hazmat" ]; + "ecdh" = [ "arithmetic" "elliptic-curve/ecdh" ]; + "ecdsa" = [ "arithmetic" "ecdsa-core/signing" "ecdsa-core/verifying" "sha256" ]; + "ecdsa-core" = [ "dep:ecdsa-core" ]; + "expose-field" = [ "arithmetic" ]; + "hash2curve" = [ "arithmetic" "elliptic-curve/hash2curve" ]; + "jwk" = [ "elliptic-curve/jwk" ]; + "pem" = [ "elliptic-curve/pem" "ecdsa-core/pem" "pkcs8" ]; + "pkcs8" = [ "ecdsa-core?/pkcs8" "elliptic-curve/pkcs8" ]; + "serde" = [ "ecdsa-core?/serde" "elliptic-curve/serde" "primeorder?/serde" "serdect" ]; + "serdect" = [ "dep:serdect" ]; + "sha2" = [ "dep:sha2" ]; + "sha256" = [ "digest" "sha2" ]; + "std" = [ "alloc" "ecdsa-core?/std" "elliptic-curve/std" ]; + "test-vectors" = [ "dep:hex-literal" ]; + "voprf" = [ "elliptic-curve/voprf" "sha2" ]; + }; + resolvedDefaultFeatures = [ "alloc" "arithmetic" "default" "digest" "ecdsa" "ecdsa-core" "pem" "pkcs8" "sha2" "sha256" "std" ]; + }; "parking" = rec { crateName = "parking"; version = "2.2.1"; @@ -7586,6 +8039,27 @@ rec { }; resolvedDefaultFeatures = [ "default" "std" ]; }; + "pem-rfc7468" = rec { + crateName = "pem-rfc7468"; + version = "0.7.0"; + edition = "2021"; + sha256 = "04l4852scl4zdva31c1z6jafbak0ni5pi0j38ml108zwzjdrrcw8"; + libName = "pem_rfc7468"; + authors = [ + "RustCrypto Developers" + ]; + dependencies = [ + { + name = "base64ct"; + packageId = "base64ct"; + } + ]; + features = { + "alloc" = [ "base64ct/alloc" ]; + "std" = [ "alloc" "base64ct/std" ]; + }; + resolvedDefaultFeatures = [ "alloc" ]; + }; "percent-encoding" = rec { crateName = "percent-encoding"; version = "2.3.2"; @@ -7603,9 +8077,9 @@ rec { }; "pest" = rec { crateName = "pest"; - version = "2.8.1"; + version = "2.8.2"; edition = "2021"; - sha256 = "08s342r6vv6ml5in4jk7pb97wgpf0frcnrvg0sqshn23sdb5zc0x"; + sha256 = "1a6g94pr4npsg0s6ljddwp4g127ks0nygzhxcpwfmyik6yis7q11"; authors = [ "Dragoș Tiselice " ]; @@ -7637,9 +8111,9 @@ rec { }; "pest_derive" = rec { crateName = "pest_derive"; - version = "2.8.1"; + version = "2.8.2"; edition = "2021"; - sha256 = "1g20ma4y29axbjhi3z64ihhpqzmiix71qjn7bs224yd7isg6s1dv"; + sha256 = "0qy6nv84q1m6m2rzw1qjfbxlcizz7h557rkk16yivjqafxpp0n5w"; procMacro = true; authors = [ "Dragoș Tiselice " @@ -7666,9 +8140,9 @@ rec { }; "pest_generator" = rec { crateName = "pest_generator"; - version = "2.8.1"; + version = "2.8.2"; edition = "2021"; - sha256 = "0rj9a20g4bjb4sl3zyzpxqg8mbn8c1kxp0nw08rfp0gp73k09r47"; + sha256 = "0bws5i6g3v1sldvy66p7qbzmz5mqbiflcqilaywgf1zy3n0kckvd"; authors = [ "Dragoș Tiselice " ]; @@ -7705,9 +8179,9 @@ rec { }; "pest_meta" = rec { crateName = "pest_meta"; - version = "2.8.1"; + version = "2.8.2"; edition = "2021"; - sha256 = "1mf01iln7shbnyxpdfnpf59gzn83nndqjkwiw3yh6n8g2wgi1lgd"; + sha256 = "0844iv71ibf414yid0bvhi9i0zfi0jrmyh6mvjjx1jws102rp4a2"; authors = [ "Dragoș Tiselice " ]; @@ -7818,6 +8292,74 @@ rec { ]; }; + "pkcs1" = rec { + crateName = "pkcs1"; + version = "0.7.5"; + edition = "2021"; + sha256 = "0zz4mil3nchnxljdfs2k5ab1cjqn7kq5lqp62n9qfix01zqvkzy8"; + authors = [ + "RustCrypto Developers" + ]; + dependencies = [ + { + name = "der"; + packageId = "der"; + features = [ "oid" ]; + } + { + name = "pkcs8"; + packageId = "pkcs8"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "spki"; + packageId = "spki"; + } + ]; + features = { + "alloc" = [ "der/alloc" "zeroize" "pkcs8?/alloc" ]; + "pem" = [ "alloc" "der/pem" "pkcs8?/pem" ]; + "pkcs8" = [ "dep:pkcs8" ]; + "std" = [ "der/std" "alloc" ]; + "zeroize" = [ "der/zeroize" ]; + }; + resolvedDefaultFeatures = [ "alloc" "pem" "pkcs8" "std" "zeroize" ]; + }; + "pkcs8" = rec { + crateName = "pkcs8"; + version = "0.10.2"; + edition = "2021"; + sha256 = "1dx7w21gvn07azszgqd3ryjhyphsrjrmq5mmz1fbxkj5g0vv4l7r"; + authors = [ + "RustCrypto Developers" + ]; + dependencies = [ + { + name = "der"; + packageId = "der"; + features = [ "oid" ]; + } + { + name = "spki"; + packageId = "spki"; + } + ]; + features = { + "3des" = [ "encryption" "pkcs5/3des" ]; + "alloc" = [ "der/alloc" "der/zeroize" "spki/alloc" ]; + "des-insecure" = [ "encryption" "pkcs5/des-insecure" ]; + "encryption" = [ "alloc" "pkcs5/alloc" "pkcs5/pbes2" "rand_core" ]; + "getrandom" = [ "rand_core/getrandom" ]; + "pem" = [ "alloc" "der/pem" "spki/pem" ]; + "pkcs5" = [ "dep:pkcs5" ]; + "rand_core" = [ "dep:rand_core" ]; + "sha1-insecure" = [ "encryption" "pkcs5/sha1-insecure" ]; + "std" = [ "alloc" "der/std" "spki/std" ]; + "subtle" = [ "dep:subtle" ]; + }; + resolvedDefaultFeatures = [ "alloc" "pem" "std" ]; + }; "pkg-config" = rec { crateName = "pkg-config"; version = "0.3.32"; @@ -7831,9 +8373,9 @@ rec { }; "potential_utf" = rec { crateName = "potential_utf"; - version = "0.1.2"; + version = "0.1.3"; edition = "2021"; - sha256 = "11dm6k3krx3drbvhgjw8z508giiv0m09wzl6ghza37176w4c79z5"; + sha256 = "12mhwvhpvvim6xqp6ifgkh1sniv9j2cmid6axn10fnjvpsnikpw4"; authors = [ "The ICU4X Project Developers" ]; @@ -7929,6 +8471,29 @@ rec { }; resolvedDefaultFeatures = [ "verbatim" ]; }; + "primeorder" = rec { + crateName = "primeorder"; + version = "0.13.6"; + edition = "2021"; + sha256 = "1rp16710mxksagcjnxqjjq9r9wf5vf72fs8wxffnvhb6i6hiqgim"; + authors = [ + "RustCrypto Developers" + ]; + dependencies = [ + { + name = "elliptic-curve"; + packageId = "elliptic-curve"; + usesDefaultFeatures = false; + features = [ "arithmetic" "sec1" ]; + } + ]; + features = { + "alloc" = [ "elliptic-curve/alloc" ]; + "serde" = [ "elliptic-curve/serde" "serdect" ]; + "serdect" = [ "dep:serdect" ]; + "std" = [ "alloc" "elliptic-curve/std" ]; + }; + }; "proc-macro2" = rec { crateName = "proc-macro2"; version = "1.0.101"; @@ -7952,13 +8517,13 @@ rec { }; "product-config" = rec { crateName = "product-config"; - version = "0.7.0"; + version = "0.8.0"; edition = "2021"; workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/product-config.git"; - rev = "d61d4c7542c942da2ba0e9af4e5e3c3113abb0cf"; - sha256 = "0gjsm80g6r75pm3824dcyiz4ysq1ka4c1if6k1mjm9cnd5ym0gny"; + rev = "678fb7cf30af7d7b516c9a46698a1b661120d54a"; + sha256 = "1dz70kapm2wdqcr7ndyjji0lhsl98bsq95gnb2lw487wf6yr7987"; }; libName = "product_config"; authors = [ @@ -7996,46 +8561,16 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.7"; + packageId = "snafu 0.8.9"; } { - name = "xml-rs"; - packageId = "xml-rs"; + name = "xml"; + packageId = "xml"; } ]; }; - "prost 0.13.5" = rec { - crateName = "prost"; - version = "0.13.5"; - edition = "2021"; - sha256 = "1r8yi6zxxwv9gq5ia9p55nspgwmchs94sqpp64x33v5k3njgm5i7"; - authors = [ - "Dan Burkert " - "Lucio Franco " - "Casper Meijn " - "Tokio Contributors " - ]; - dependencies = [ - { - name = "bytes"; - packageId = "bytes"; - usesDefaultFeatures = false; - } - { - name = "prost-derive"; - packageId = "prost-derive 0.13.5"; - optional = true; - } - ]; - features = { - "default" = [ "derive" "std" ]; - "derive" = [ "dep:prost-derive" ]; - "prost-derive" = [ "derive" ]; - }; - resolvedDefaultFeatures = [ "default" "derive" "std" ]; - }; - "prost 0.14.1" = rec { + "prost" = rec { crateName = "prost"; version = "0.14.1"; edition = "2021"; @@ -8054,7 +8589,7 @@ rec { } { name = "prost-derive"; - packageId = "prost-derive 0.14.1"; + packageId = "prost-derive"; optional = true; } ]; @@ -8112,7 +8647,7 @@ rec { } { name = "prost"; - packageId = "prost 0.14.1"; + packageId = "prost"; usesDefaultFeatures = false; } { @@ -8246,7 +8781,7 @@ rec { dependencies = [ { name = "prost"; - packageId = "prost 0.14.1"; + packageId = "prost"; usesDefaultFeatures = false; features = [ "derive" ]; } @@ -8348,7 +8883,44 @@ rec { "rustc-dep-of-std" = [ "core" ]; }; }; - "rand" = rec { + "rand 0.8.5" = rec { + crateName = "rand"; + version = "0.8.5"; + edition = "2018"; + sha256 = "013l6931nn7gkc23jz5mm3qdhf93jjf0fg64nz2lp4i51qd8vbrl"; + authors = [ + "The Rand Project Developers" + "The Rust Project Developers" + ]; + dependencies = [ + { + name = "rand_chacha"; + packageId = "rand_chacha 0.3.1"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "rand_core"; + packageId = "rand_core 0.6.4"; + } + ]; + features = { + "alloc" = [ "rand_core/alloc" ]; + "default" = [ "std" "std_rng" ]; + "getrandom" = [ "rand_core/getrandom" ]; + "libc" = [ "dep:libc" ]; + "log" = [ "dep:log" ]; + "packed_simd" = [ "dep:packed_simd" ]; + "rand_chacha" = [ "dep:rand_chacha" ]; + "serde" = [ "dep:serde" ]; + "serde1" = [ "serde" "rand_core/serde1" ]; + "simd_support" = [ "packed_simd" ]; + "std" = [ "rand_core/std" "rand_chacha/std" "alloc" "getrandom" "libc" ]; + "std_rng" = [ "rand_chacha" ]; + }; + resolvedDefaultFeatures = [ "rand_chacha" "std_rng" ]; + }; + "rand 0.9.2" = rec { crateName = "rand"; version = "0.9.2"; edition = "2021"; @@ -8360,13 +8932,13 @@ rec { dependencies = [ { name = "rand_chacha"; - packageId = "rand_chacha"; + packageId = "rand_chacha 0.9.0"; optional = true; usesDefaultFeatures = false; } { name = "rand_core"; - packageId = "rand_core"; + packageId = "rand_core 0.9.3"; usesDefaultFeatures = false; } ]; @@ -8381,7 +8953,36 @@ rec { }; resolvedDefaultFeatures = [ "alloc" "default" "os_rng" "small_rng" "std" "std_rng" "thread_rng" ]; }; - "rand_chacha" = rec { + "rand_chacha 0.3.1" = rec { + crateName = "rand_chacha"; + version = "0.3.1"; + edition = "2018"; + sha256 = "123x2adin558xbhvqb8w4f6syjsdkmqff8cxwhmjacpsl1ihmhg6"; + authors = [ + "The Rand Project Developers" + "The Rust Project Developers" + "The CryptoCorrosion Contributors" + ]; + dependencies = [ + { + name = "ppv-lite86"; + packageId = "ppv-lite86"; + usesDefaultFeatures = false; + features = [ "simd" ]; + } + { + name = "rand_core"; + packageId = "rand_core 0.6.4"; + } + ]; + features = { + "default" = [ "std" ]; + "serde" = [ "dep:serde" ]; + "serde1" = [ "serde" ]; + "std" = [ "ppv-lite86/std" ]; + }; + }; + "rand_chacha 0.9.0" = rec { crateName = "rand_chacha"; version = "0.9.0"; edition = "2021"; @@ -8400,13 +9001,13 @@ rec { } { name = "rand_core"; - packageId = "rand_core"; + packageId = "rand_core 0.9.3"; } ]; devDependencies = [ { name = "rand_core"; - packageId = "rand_core"; + packageId = "rand_core 0.9.3"; features = [ "os_rng" ]; } ]; @@ -8418,7 +9019,31 @@ rec { }; resolvedDefaultFeatures = [ "std" ]; }; - "rand_core" = rec { + "rand_core 0.6.4" = rec { + crateName = "rand_core"; + version = "0.6.4"; + edition = "2018"; + sha256 = "0b4j2v4cb5krak1pv6kakv4sz6xcwbrmy2zckc32hsigbrwy82zc"; + authors = [ + "The Rand Project Developers" + "The Rust Project Developers" + ]; + dependencies = [ + { + name = "getrandom"; + packageId = "getrandom 0.2.16"; + optional = true; + } + ]; + features = { + "getrandom" = [ "dep:getrandom" ]; + "serde" = [ "dep:serde" ]; + "serde1" = [ "serde" ]; + "std" = [ "alloc" "getrandom" "getrandom/std" ]; + }; + resolvedDefaultFeatures = [ "alloc" "getrandom" "std" ]; + }; + "rand_core 0.9.3" = rec { crateName = "rand_core"; version = "0.9.3"; edition = "2021"; @@ -8488,6 +9113,49 @@ rec { }; resolvedDefaultFeatures = [ "default" "userspace" ]; }; + "ref-cast" = rec { + crateName = "ref-cast"; + version = "1.0.24"; + edition = "2021"; + sha256 = "1kx57g118vs9sqi6d2dcxy6vp8jbx8n5hilmv1sacip9vc8y82ja"; + libName = "ref_cast"; + authors = [ + "David Tolnay " + ]; + dependencies = [ + { + name = "ref-cast-impl"; + packageId = "ref-cast-impl"; + } + ]; + + }; + "ref-cast-impl" = rec { + crateName = "ref-cast-impl"; + version = "1.0.24"; + edition = "2021"; + sha256 = "1ir7dm7hpqqdgg60hlspsc1ck6wli7wa3xcqrsxz7wdz45f24r8i"; + procMacro = true; + libName = "ref_cast_impl"; + authors = [ + "David Tolnay " + ]; + dependencies = [ + { + name = "proc-macro2"; + packageId = "proc-macro2"; + } + { + name = "quote"; + packageId = "quote"; + } + { + name = "syn"; + packageId = "syn 2.0.106"; + } + ]; + + }; "regex" = rec { crateName = "regex"; version = "1.11.2"; @@ -8856,15 +9524,38 @@ rec { }; resolvedDefaultFeatures = [ "blocking" ]; }; - "ring" = rec { - crateName = "ring"; - version = "0.17.14"; + "rfc6979" = rec { + crateName = "rfc6979"; + version = "0.4.0"; edition = "2021"; - links = "ring_core_0_17_14_"; - sha256 = "1dw32gv19ccq4hsx3ribhpdzri1vnrlcfqb2vj41xn4l49n9ws54"; + sha256 = "1chw95jgcfrysyzsq6a10b1j5qb7bagkx8h0wda4lv25in02mpgq"; + authors = [ + "RustCrypto Developers" + ]; dependencies = [ { - name = "cfg-if"; + name = "hmac"; + packageId = "hmac"; + usesDefaultFeatures = false; + features = [ "reset" ]; + } + { + name = "subtle"; + packageId = "subtle"; + usesDefaultFeatures = false; + } + ]; + + }; + "ring" = rec { + crateName = "ring"; + version = "0.17.14"; + edition = "2021"; + links = "ring_core_0_17_14_"; + sha256 = "1dw32gv19ccq4hsx3ribhpdzri1vnrlcfqb2vj41xn4l49n9ws54"; + dependencies = [ + { + name = "cfg-if"; packageId = "cfg-if"; usesDefaultFeatures = false; } @@ -8917,6 +9608,119 @@ rec { }; resolvedDefaultFeatures = [ "alloc" "default" "dev_urandom_fallback" ]; }; + "rsa" = rec { + crateName = "rsa"; + version = "0.9.8"; + edition = "2021"; + sha256 = "06v9zl604jsqjajm647l9jjirn7k4lc8lmvys6hmqshpxp0qm4kq"; + authors = [ + "RustCrypto Developers" + "dignifiedquire " + ]; + dependencies = [ + { + name = "const-oid"; + packageId = "const-oid"; + usesDefaultFeatures = false; + } + { + name = "digest"; + packageId = "digest"; + usesDefaultFeatures = false; + features = [ "alloc" "oid" ]; + } + { + name = "num-bigint-dig"; + packageId = "num-bigint-dig"; + rename = "num-bigint"; + usesDefaultFeatures = false; + features = [ "i128" "prime" "zeroize" ]; + } + { + name = "num-integer"; + packageId = "num-integer"; + usesDefaultFeatures = false; + } + { + name = "num-traits"; + packageId = "num-traits"; + usesDefaultFeatures = false; + features = [ "libm" ]; + } + { + name = "pkcs1"; + packageId = "pkcs1"; + usesDefaultFeatures = false; + features = [ "alloc" "pkcs8" ]; + } + { + name = "pkcs8"; + packageId = "pkcs8"; + usesDefaultFeatures = false; + features = [ "alloc" ]; + } + { + name = "rand_core"; + packageId = "rand_core 0.6.4"; + usesDefaultFeatures = false; + } + { + name = "sha2"; + packageId = "sha2"; + optional = true; + usesDefaultFeatures = false; + features = [ "oid" ]; + } + { + name = "signature"; + packageId = "signature"; + usesDefaultFeatures = false; + features = [ "alloc" "digest" "rand_core" ]; + } + { + name = "spki"; + packageId = "spki"; + usesDefaultFeatures = false; + features = [ "alloc" ]; + } + { + name = "subtle"; + packageId = "subtle"; + usesDefaultFeatures = false; + } + { + name = "zeroize"; + packageId = "zeroize"; + features = [ "alloc" ]; + } + ]; + devDependencies = [ + { + name = "rand_core"; + packageId = "rand_core 0.6.4"; + usesDefaultFeatures = false; + } + { + name = "sha2"; + packageId = "sha2"; + usesDefaultFeatures = false; + features = [ "oid" ]; + } + ]; + features = { + "default" = [ "std" "pem" "u64_digit" ]; + "getrandom" = [ "rand_core/getrandom" ]; + "nightly" = [ "num-bigint/nightly" ]; + "pem" = [ "pkcs1/pem" "pkcs8/pem" ]; + "pkcs5" = [ "pkcs8/encryption" ]; + "serde" = [ "dep:serde" "num-bigint/serde" ]; + "sha1" = [ "dep:sha1" ]; + "sha2" = [ "dep:sha2" ]; + "std" = [ "digest/std" "pkcs1/std" "pkcs8/std" "rand_core/std" "signature/std" ]; + "u64_digit" = [ "num-bigint/u64_digit" ]; + }; + resolvedDefaultFeatures = [ "default" "pem" "sha2" "std" "u64_digit" ]; + }; "rustc-demangle" = rec { crateName = "rustc-demangle"; version = "0.1.26"; @@ -8948,9 +9752,9 @@ rec { }; "rustix" = rec { crateName = "rustix"; - version = "1.0.8"; + version = "1.1.2"; edition = "2021"; - sha256 = "1j6ajqi61agdnh1avr4bplrsgydjw1n4mycdxw3v8g94pyx1y60i"; + sha256 = "0gpz343xfzx16x82s1x336n0kr49j02cvhgxdvaq86jmqnigh5fd"; authors = [ "Dan Gohman " "Jakub Konka " @@ -9000,7 +9804,7 @@ rec { name = "linux-raw-sys"; packageId = "linux-raw-sys"; usesDefaultFeatures = false; - target = { target, features }: ((("android" == target."os" or null) || ("linux" == target."os" or null)) && ((target."rustix_use_libc" or false) || (target."miri" or false) || (!(("linux" == target."os" or null) && (("little" == target."endian" or null) || (("s390x" == target."arch" or null) || ("powerpc" == target."arch" or null))) && (("arm" == target."arch" or null) || (("aarch64" == target."arch" or null) && ("64" == target."pointer_width" or null)) || ("riscv64" == target."arch" or null) || ((target."rustix_use_experimental_asm" or false) && ("powerpc" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("powerpc64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("s390x" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips32r6" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64r6" == target."arch" or null)) || ("x86" == target."arch" or null) || (("x86_64" == target."arch" or null) && ("64" == target."pointer_width" or null))))))); + target = { target, features }: ((("linux" == target."os" or null)) && ((target."rustix_use_libc" or false) || (target."miri" or false) || (!(("linux" == target."os" or null) && (("little" == target."endian" or null) || (("s390x" == target."arch" or null) || ("powerpc" == target."arch" or null))) && (("arm" == target."arch" or null) || (("aarch64" == target."arch" or null) && ("64" == target."pointer_width" or null)) || ("riscv64" == target."arch" or null) || ((target."rustix_use_experimental_asm" or false) && ("powerpc" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("powerpc64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("s390x" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips32r6" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64r6" == target."arch" or null)) || ("x86" == target."arch" or null) || (("x86_64" == target."arch" or null) && ("64" == target."pointer_width" or null))))))); features = [ "general" "ioctl" "no_std" ]; } { @@ -9008,11 +9812,11 @@ rec { packageId = "linux-raw-sys"; usesDefaultFeatures = false; target = { target, features }: ((!(target."rustix_use_libc" or false)) && (!(target."miri" or false)) && ("linux" == target."os" or null) && (("little" == target."endian" or null) || (("s390x" == target."arch" or null) || ("powerpc" == target."arch" or null))) && (("arm" == target."arch" or null) || (("aarch64" == target."arch" or null) && ("64" == target."pointer_width" or null)) || ("riscv64" == target."arch" or null) || ((target."rustix_use_experimental_asm" or false) && ("powerpc" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("powerpc64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("s390x" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips32r6" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64r6" == target."arch" or null)) || ("x86" == target."arch" or null) || (("x86_64" == target."arch" or null) && ("64" == target."pointer_width" or null)))); - features = [ "general" "errno" "ioctl" "no_std" "elf" ]; + features = [ "auxvec" "general" "errno" "ioctl" "no_std" "elf" ]; } { name = "windows-sys"; - packageId = "windows-sys 0.60.2"; + packageId = "windows-sys 0.61.0"; target = { target, features }: (target."windows" or false); features = [ "Win32_Foundation" "Win32_Networking_WinSock" ]; } @@ -9122,41 +9926,7 @@ rec { }; resolvedDefaultFeatures = [ "log" "logging" "ring" "std" "tls12" ]; }; - "rustls-native-certs 0.7.3" = rec { - crateName = "rustls-native-certs"; - 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 2.11.1"; - target = { target, features }: ("macos" == target."os" or null); - } - ]; - - }; - "rustls-native-certs 0.8.1" = rec { + "rustls-native-certs" = rec { crateName = "rustls-native-certs"; version = "0.8.1"; edition = "2021"; @@ -9181,31 +9951,12 @@ rec { } { name = "security-framework"; - packageId = "security-framework 3.3.0"; + packageId = "security-framework 3.4.0"; target = { target, features }: ("macos" == target."os" or null); } ]; }; - "rustls-pemfile" = rec { - crateName = "rustls-pemfile"; - version = "2.2.0"; - edition = "2018"; - sha256 = "0l3f3mrfkgdjrava7ibwzgwc4h3dljw3pdkbsi9rkwz3zvji9qyw"; - libName = "rustls_pemfile"; - dependencies = [ - { - name = "rustls-pki-types"; - packageId = "rustls-pki-types"; - rename = "pki-types"; - } - ]; - features = { - "default" = [ "std" ]; - "std" = [ "pki-types/std" ]; - }; - resolvedDefaultFeatures = [ "default" "std" ]; - }; "rustls-pki-types" = rec { crateName = "rustls-pki-types"; version = "1.12.0"; @@ -9230,9 +9981,9 @@ rec { }; "rustls-webpki" = rec { crateName = "rustls-webpki"; - version = "0.103.4"; + version = "0.103.6"; edition = "2021"; - sha256 = "1z4jmmgasjgk9glb160a66bshvgifa64mgfjrkqp7dy1w158h5qa"; + sha256 = "1szqh1g2cwx89f21mf6zkxc8rxg187y9jm5law8j6d4rrg1g6wl5"; libName = "webpki"; dependencies = [ { @@ -9307,9 +10058,9 @@ rec { }; "schannel" = rec { crateName = "schannel"; - version = "0.1.27"; + version = "0.1.28"; edition = "2018"; - sha256 = "0gbbhy28v72kd5iina0z2vcdl3vz63mk5idvkzn5r52z6jmfna8z"; + sha256 = "1qb6s5gyxfz2inz753a4z3mc1d266mwvz0c5w7ppd3h44swq27c9"; authors = [ "Steven Fackler " "Steffen Butzer " @@ -9317,14 +10068,14 @@ rec { dependencies = [ { name = "windows-sys"; - packageId = "windows-sys 0.59.0"; + packageId = "windows-sys 0.61.0"; features = [ "Win32_Foundation" "Win32_Security_Cryptography" "Win32_Security_Authentication_Identity" "Win32_Security_Credentials" "Win32_System_LibraryLoader" "Win32_System_Memory" "Win32_System_SystemInformation" ]; } ]; devDependencies = [ { name = "windows-sys"; - packageId = "windows-sys 0.59.0"; + packageId = "windows-sys 0.61.0"; features = [ "Win32_System_SystemInformation" "Win32_System_Time" ]; } ]; @@ -9332,9 +10083,9 @@ rec { }; "schemars" = rec { crateName = "schemars"; - version = "0.8.22"; + version = "1.0.4"; edition = "2021"; - sha256 = "05an9nbi18ynyxv1rjmwbg6j08j0496hd64mjggh53mwp3hjmgrz"; + sha256 = "1l7w773jfk6mz0v8wpahp60aslksjijlbm65ysi4y5mwj520rll2"; authors = [ "Graham Esau " ]; @@ -9343,6 +10094,10 @@ rec { name = "dyn-clone"; packageId = "dyn-clone"; } + { + name = "ref-cast"; + packageId = "ref-cast"; + } { name = "schemars_derive"; packageId = "schemars_derive"; @@ -9351,56 +10106,64 @@ rec { { name = "serde"; packageId = "serde"; - features = [ "derive" ]; + usesDefaultFeatures = false; + features = [ "alloc" ]; } { name = "serde_json"; packageId = "serde_json"; + usesDefaultFeatures = false; + features = [ "alloc" ]; } { name = "url"; packageId = "url"; + rename = "url2"; optional = true; usesDefaultFeatures = false; } ]; + devDependencies = [ + { + name = "serde"; + packageId = "serde"; + features = [ "derive" ]; + } + { + name = "url"; + packageId = "url"; + rename = "url2"; + usesDefaultFeatures = false; + features = [ "serde" "std" ]; + } + ]; features = { - "arrayvec" = [ "arrayvec05" ]; - "arrayvec05" = [ "dep:arrayvec05" ]; "arrayvec07" = [ "dep:arrayvec07" ]; - "bigdecimal" = [ "bigdecimal03" ]; - "bigdecimal03" = [ "dep:bigdecimal03" ]; "bigdecimal04" = [ "dep:bigdecimal04" ]; - "bytes" = [ "dep:bytes" ]; - "chrono" = [ "dep:chrono" ]; - "default" = [ "derive" ]; + "bytes1" = [ "dep:bytes1" ]; + "chrono04" = [ "dep:chrono04" ]; + "default" = [ "derive" "std" ]; "derive" = [ "schemars_derive" ]; - "derive_json_schema" = [ "impl_json_schema" ]; - "either" = [ "dep:either" ]; - "enumset" = [ "dep:enumset" ]; - "impl_json_schema" = [ "derive" ]; - "indexmap" = [ "dep:indexmap" ]; - "indexmap1" = [ "indexmap" ]; + "either1" = [ "dep:either1" ]; "indexmap2" = [ "dep:indexmap2" ]; - "preserve_order" = [ "indexmap" ]; + "jiff02" = [ "dep:jiff02" ]; + "preserve_order" = [ "serde_json/preserve_order" ]; "raw_value" = [ "serde_json/raw_value" ]; - "rust_decimal" = [ "dep:rust_decimal" ]; + "rust_decimal1" = [ "dep:rust_decimal1" ]; "schemars_derive" = [ "dep:schemars_derive" ]; - "semver" = [ "dep:semver" ]; - "smallvec" = [ "dep:smallvec" ]; - "smol_str" = [ "dep:smol_str" ]; - "url" = [ "dep:url" ]; - "uuid" = [ "uuid08" ]; - "uuid08" = [ "dep:uuid08" ]; + "semver1" = [ "dep:semver1" ]; + "smallvec1" = [ "dep:smallvec1" ]; + "smol_str02" = [ "dep:smol_str02" ]; + "url2" = [ "dep:url2" ]; "uuid1" = [ "dep:uuid1" ]; }; - resolvedDefaultFeatures = [ "default" "derive" "schemars_derive" "url" ]; + resolvedDefaultFeatures = [ "default" "derive" "schemars_derive" "std" "url2" ]; }; "schemars_derive" = rec { crateName = "schemars_derive"; - version = "0.8.22"; + version = "1.0.4"; edition = "2021"; - sha256 = "0kakyzrp5801s4i043l4ilv96lzimnlh01pap958h66n99w6bqij"; + sha256 = "107sprdfa5kacifxq41qv5ccv7a78msxyr8ikz0qs4qxdlwj1l1k"; procMacro = true; authors = [ "Graham Esau " @@ -9418,6 +10181,12 @@ rec { name = "serde_derive_internals"; packageId = "serde_derive_internals"; } + { + name = "syn"; + packageId = "syn 2.0.106"; + } + ]; + devDependencies = [ { name = "syn"; packageId = "syn 2.0.106"; @@ -9438,6 +10207,66 @@ rec { "default" = [ "use_std" ]; }; }; + "sec1" = rec { + crateName = "sec1"; + version = "0.7.3"; + edition = "2021"; + sha256 = "1p273j8c87pid6a1iyyc7vxbvifrw55wbxgr0dh3l8vnbxb7msfk"; + authors = [ + "RustCrypto Developers" + ]; + dependencies = [ + { + name = "base16ct"; + packageId = "base16ct"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "der"; + packageId = "der"; + optional = true; + features = [ "oid" ]; + } + { + name = "generic-array"; + packageId = "generic-array"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "pkcs8"; + packageId = "pkcs8"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "subtle"; + packageId = "subtle"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "zeroize"; + packageId = "zeroize"; + optional = true; + usesDefaultFeatures = false; + } + ]; + features = { + "alloc" = [ "der?/alloc" "pkcs8?/alloc" "zeroize?/alloc" ]; + "default" = [ "der" "point" ]; + "der" = [ "dep:der" "zeroize" ]; + "pem" = [ "alloc" "der/pem" "pkcs8/pem" ]; + "pkcs8" = [ "dep:pkcs8" ]; + "point" = [ "dep:base16ct" "dep:generic-array" ]; + "serde" = [ "dep:serdect" ]; + "std" = [ "alloc" "der?/std" ]; + "subtle" = [ "dep:subtle" ]; + "zeroize" = [ "dep:zeroize" "der?/zeroize" ]; + }; + resolvedDefaultFeatures = [ "alloc" "default" "der" "pem" "pkcs8" "point" "std" "subtle" "zeroize" ]; + }; "secrecy" = rec { crateName = "secrecy"; version = "0.10.3"; @@ -9505,11 +10334,11 @@ rec { }; resolvedDefaultFeatures = [ "OSX_10_10" "OSX_10_11" "OSX_10_12" "OSX_10_9" "default" ]; }; - "security-framework 3.3.0" = rec { + "security-framework 3.4.0" = rec { crateName = "security-framework"; - version = "3.3.0"; + version = "3.4.0"; edition = "2021"; - sha256 = "037f0h06p00gg7ycczx3jsz4ikxzll177gdqnhca72h2qn91vyw0"; + sha256 = "0h4n11pqr0idh5sx4wdfcpbbg69wjq3h1p04b0s8nf4ki38nkcv0"; libName = "security_framework"; authors = [ "Steven Fackler " @@ -9551,9 +10380,9 @@ rec { }; "security-framework-sys" = rec { crateName = "security-framework-sys"; - version = "2.14.0"; + version = "2.15.0"; edition = "2021"; - sha256 = "0chwn01qrnvs59i5220bymd38iddy4krbnmfnhf4k451aqfj7ns9"; + sha256 = "1h6mijxnfrwvl1y4dzwn3m877j6dqp9qn3g37i954j5czazhq7yc"; libName = "security_framework_sys"; authors = [ "Steven Fackler " @@ -9582,9 +10411,9 @@ rec { }; "semver" = rec { crateName = "semver"; - version = "1.0.26"; + version = "1.0.27"; edition = "2018"; - sha256 = "1l5q2vb8fjkby657kdyfpvv40x2i2xqq9bg57pxqakfj92fgmrjn"; + sha256 = "1qmi3akfrnqc2hfkdgcxhld5bv961wbk8my3ascv5068mc5fnryp"; authors = [ "David Tolnay " ]; @@ -9596,35 +10425,34 @@ rec { }; "serde" = rec { crateName = "serde"; - version = "1.0.219"; - edition = "2018"; - sha256 = "1dl6nyxnsi82a197sd752128a4avm6mxnscywas1jq30srp2q3jz"; + version = "1.0.225"; + edition = "2021"; + sha256 = "07dxpjh0g1mq3md9yvn7jbgssgcizcircf23f04xml1mwbg28v7x"; authors = [ "Erick Tryzelaar " "David Tolnay " ]; dependencies = [ { - name = "serde_derive"; - packageId = "serde_derive"; - optional = true; - } - { - name = "serde_derive"; - packageId = "serde_derive"; - target = { target, features }: false; + name = "serde_core"; + packageId = "serde_core"; + usesDefaultFeatures = false; + features = [ "result" ]; } - ]; - devDependencies = [ { name = "serde_derive"; packageId = "serde_derive"; + optional = true; } ]; features = { + "alloc" = [ "serde_core/alloc" ]; "default" = [ "std" ]; "derive" = [ "serde_derive" ]; + "rc" = [ "serde_core/rc" ]; "serde_derive" = [ "dep:serde_derive" ]; + "std" = [ "serde_core/std" ]; + "unstable" = [ "serde_core/unstable" ]; }; resolvedDefaultFeatures = [ "alloc" "default" "derive" "serde_derive" "std" ]; }; @@ -9649,11 +10477,38 @@ rec { ]; }; + "serde_core" = rec { + crateName = "serde_core"; + version = "1.0.225"; + edition = "2021"; + sha256 = "10v3z58j5k6xhdxh90xgrv20wlnz5fnl67n04jdm47nbl3wmd4v5"; + authors = [ + "Erick Tryzelaar " + "David Tolnay " + ]; + dependencies = [ + { + name = "serde_derive"; + packageId = "serde_derive"; + target = { target, features }: false; + } + ]; + devDependencies = [ + { + name = "serde_derive"; + packageId = "serde_derive"; + } + ]; + features = { + "default" = [ "std" "result" ]; + }; + resolvedDefaultFeatures = [ "alloc" "result" "std" ]; + }; "serde_derive" = rec { crateName = "serde_derive"; - version = "1.0.219"; - edition = "2015"; - sha256 = "001azhjmj7ya52pmfiw4ppxm16nd44y15j2pf5gkcwrcgz7pc0jv"; + version = "1.0.225"; + edition = "2021"; + sha256 = "05j5zj2jdba3jnm7kh3fpljmhngmsa8pp5x495lpc7wbyynkda8f"; procMacro = true; authors = [ "Erick Tryzelaar " @@ -9715,9 +10570,9 @@ rec { }; "serde_json" = rec { crateName = "serde_json"; - version = "1.0.143"; + version = "1.0.145"; edition = "2021"; - sha256 = "0njabwzldvj13ykrf1aaf4gh5cgl25kf9hzbpafbv3qh3ppsn0fl"; + sha256 = "1767y6kxjf7gwpbv8bkhgwc50nhg46mqwm9gy9n122f7v1k6yaj0"; authors = [ "Erick Tryzelaar " "David Tolnay " @@ -9740,6 +10595,12 @@ rec { name = "serde"; packageId = "serde"; usesDefaultFeatures = false; + target = { target, features }: false; + } + { + name = "serde_core"; + packageId = "serde_core"; + usesDefaultFeatures = false; } ]; devDependencies = [ @@ -9750,19 +10611,19 @@ rec { } ]; features = { - "alloc" = [ "serde/alloc" ]; + "alloc" = [ "serde_core/alloc" ]; "default" = [ "std" ]; "indexmap" = [ "dep:indexmap" ]; "preserve_order" = [ "indexmap" "std" ]; - "std" = [ "memchr/std" "serde/std" ]; + "std" = [ "memchr/std" "serde_core/std" ]; }; resolvedDefaultFeatures = [ "alloc" "default" "raw_value" "std" ]; }; "serde_path_to_error" = rec { crateName = "serde_path_to_error"; - version = "0.1.17"; + version = "0.1.20"; edition = "2021"; - sha256 = "0alb447z25dvczd6ll3vfjbf51pypn23mgs5hv8978vzjczv3yjr"; + sha256 = "0mxls44p2ycmnxh03zpnlxxygq42w61ws7ir7r0ba6rp5s1gza8h"; authors = [ "David Tolnay " ]; @@ -9771,6 +10632,20 @@ rec { name = "itoa"; packageId = "itoa"; } + { + name = "serde"; + packageId = "serde"; + usesDefaultFeatures = false; + target = { target, features }: false; + } + { + name = "serde_core"; + packageId = "serde_core"; + usesDefaultFeatures = false; + features = [ "alloc" ]; + } + ]; + devDependencies = [ { name = "serde"; packageId = "serde"; @@ -9915,6 +10790,7 @@ rec { "sha2-asm" = [ "dep:sha2-asm" ]; "std" = [ "digest/std" ]; }; + resolvedDefaultFeatures = [ "default" "oid" "std" ]; }; "sharded-slab" = rec { crateName = "sharded-slab"; @@ -9971,6 +10847,36 @@ rec { ]; }; + "signature" = rec { + crateName = "signature"; + version = "2.2.0"; + edition = "2021"; + sha256 = "1pi9hd5vqfr3q3k49k37z06p7gs5si0in32qia4mmr1dancr6m3p"; + authors = [ + "RustCrypto Developers" + ]; + dependencies = [ + { + name = "digest"; + packageId = "digest"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "rand_core"; + packageId = "rand_core 0.6.4"; + optional = true; + usesDefaultFeatures = false; + } + ]; + features = { + "derive" = [ "dep:derive" ]; + "digest" = [ "dep:digest" ]; + "rand_core" = [ "dep:rand_core" ]; + "std" = [ "alloc" "rand_core?/std" ]; + }; + resolvedDefaultFeatures = [ "alloc" "digest" "rand_core" "std" ]; + }; "slab" = rec { crateName = "slab"; version = "0.4.11"; @@ -10066,18 +10972,18 @@ rec { }; resolvedDefaultFeatures = [ "default" "guide" "std" ]; }; - "snafu 0.8.7" = rec { + "snafu 0.8.9" = rec { crateName = "snafu"; - version = "0.8.7"; + version = "0.8.9"; edition = "2018"; - sha256 = "0jp7rspj1f4m6rdj6bxf8zyi89bkdm0s76fhan8nwjkcn9ra6qh0"; + sha256 = "18p1y5qxwjn5j902wqsdr75n17b29lxpdipa0p7a3wybxbsb713f"; authors = [ "Jake Goulding " ]; dependencies = [ { name = "snafu-derive"; - packageId = "snafu-derive 0.8.7"; + packageId = "snafu-derive 0.8.9"; } ]; features = { @@ -10125,11 +11031,11 @@ rec { features = { }; }; - "snafu-derive 0.8.7" = rec { + "snafu-derive 0.8.9" = rec { crateName = "snafu-derive"; - version = "0.8.7"; + version = "0.8.9"; edition = "2018"; - sha256 = "1f1262smvvilsga1aard454pkqs39nyps46mmdrrvh9z4vixjpvy"; + sha256 = "0lg4s58jzx6w48ig4qp8jasrrs886pifqqd58k5b2jzlvd3pgjf1"; procMacro = true; libName = "snafu_derive"; authors = [ @@ -10165,25 +11071,82 @@ rec { edition = "2021"; sha256 = "01qqdzfnr0bvdwq6wl56c9c4m2cvbxn43dfpcv8gjx208sph8d93"; authors = [ - "Alex Crichton " - "Thomas de Zeeuw " + "Alex Crichton " + "Thomas de Zeeuw " + ]; + dependencies = [ + { + name = "libc"; + packageId = "libc"; + target = { target, features }: (target."unix" or false); + } + { + name = "windows-sys"; + packageId = "windows-sys 0.59.0"; + target = { target, features }: (target."windows" or false); + features = [ "Win32_Foundation" "Win32_Networking_WinSock" "Win32_System_IO" "Win32_System_Threading" "Win32_System_WindowsProgramming" ]; + } + ]; + features = { + }; + resolvedDefaultFeatures = [ "all" ]; + }; + "spin" = rec { + crateName = "spin"; + version = "0.9.8"; + edition = "2015"; + sha256 = "0rvam5r0p3a6qhc18scqpvpgb3ckzyqxpgdfyjnghh8ja7byi039"; + authors = [ + "Mathijs van de Nes " + "John Ericson " + "Joshua Barretto " + ]; + features = { + "barrier" = [ "mutex" ]; + "default" = [ "lock_api" "mutex" "spin_mutex" "rwlock" "once" "lazy" "barrier" ]; + "fair_mutex" = [ "mutex" ]; + "lazy" = [ "once" ]; + "lock_api" = [ "lock_api_crate" ]; + "lock_api_crate" = [ "dep:lock_api_crate" ]; + "portable-atomic" = [ "dep:portable-atomic" ]; + "portable_atomic" = [ "portable-atomic" ]; + "spin_mutex" = [ "mutex" ]; + "ticket_mutex" = [ "mutex" ]; + "use_ticket_mutex" = [ "mutex" "ticket_mutex" ]; + }; + resolvedDefaultFeatures = [ "once" ]; + }; + "spki" = rec { + crateName = "spki"; + version = "0.7.3"; + edition = "2021"; + sha256 = "17fj8k5fmx4w9mp27l970clrh5qa7r5sjdvbsln987xhb34dc7nr"; + authors = [ + "RustCrypto Developers" ]; dependencies = [ { - name = "libc"; - packageId = "libc"; - target = { target, features }: (target."unix" or false); + name = "base64ct"; + packageId = "base64ct"; + optional = true; + usesDefaultFeatures = false; } { - name = "windows-sys"; - packageId = "windows-sys 0.59.0"; - target = { target, features }: (target."windows" or false); - features = [ "Win32_Foundation" "Win32_Networking_WinSock" "Win32_System_IO" "Win32_System_Threading" "Win32_System_WindowsProgramming" ]; + name = "der"; + packageId = "der"; + features = [ "oid" ]; } ]; features = { + "alloc" = [ "base64ct?/alloc" "der/alloc" ]; + "arbitrary" = [ "std" "dep:arbitrary" "der/arbitrary" ]; + "base64" = [ "dep:base64ct" ]; + "fingerprint" = [ "sha2" ]; + "pem" = [ "alloc" "der/pem" ]; + "sha2" = [ "dep:sha2" ]; + "std" = [ "der/std" "alloc" ]; }; - resolvedDefaultFeatures = [ "all" ]; + resolvedDefaultFeatures = [ "alloc" "pem" "std" ]; }; "stable_deref_trait" = rec { crateName = "stable_deref_trait"; @@ -10199,6 +11162,109 @@ rec { }; resolvedDefaultFeatures = [ "alloc" ]; }; + "stackable-certs" = rec { + crateName = "stackable-certs"; + version = "0.4.0"; + edition = "2024"; + workspace_member = null; + src = pkgs.fetchgit { + url = "https://github.com/stackabletech/operator-rs.git"; + rev = "36e9fad31f07903a545010998fb99aae0188337d"; + sha256 = "1ags7i3a0l5w5dcpfp6zzp4a172bp1jr9wkma0f1byjbk56q8bi0"; + }; + libName = "stackable_certs"; + authors = [ + "Stackable GmbH " + ]; + dependencies = [ + { + name = "const-oid"; + packageId = "const-oid"; + features = [ "db" ]; + } + { + name = "ecdsa"; + packageId = "ecdsa"; + features = [ "digest" "pem" ]; + } + { + name = "k8s-openapi"; + packageId = "k8s-openapi"; + usesDefaultFeatures = false; + features = [ "schemars" "v1_34" ]; + } + { + name = "kube"; + packageId = "kube"; + usesDefaultFeatures = false; + features = [ "client" "jsonpatch" "runtime" "derive" "rustls-tls" "ring" ]; + } + { + name = "p256"; + packageId = "p256"; + features = [ "ecdsa" ]; + } + { + name = "rand"; + packageId = "rand 0.9.2"; + } + { + name = "rand_core"; + packageId = "rand_core 0.6.4"; + } + { + name = "rsa"; + packageId = "rsa"; + features = [ "sha2" ]; + } + { + name = "sha2"; + packageId = "sha2"; + features = [ "oid" ]; + } + { + name = "signature"; + packageId = "signature"; + } + { + name = "snafu"; + packageId = "snafu 0.8.9"; + } + { + name = "stackable-shared"; + packageId = "stackable-shared"; + } + { + name = "tokio"; + packageId = "tokio"; + features = [ "macros" "rt-multi-thread" "fs" ]; + } + { + name = "tokio-rustls"; + packageId = "tokio-rustls"; + optional = true; + usesDefaultFeatures = false; + features = [ "ring" "logging" "tls12" ]; + } + { + name = "tracing"; + packageId = "tracing"; + } + { + name = "x509-cert"; + packageId = "x509-cert"; + features = [ "builder" ]; + } + { + name = "zeroize"; + packageId = "zeroize"; + } + ]; + features = { + "rustls" = [ "dep:tokio-rustls" ]; + }; + resolvedDefaultFeatures = [ "default" "rustls" ]; + }; "stackable-krb5-provision-keytab" = rec { crateName = "stackable-krb5-provision-keytab"; version = "0.0.0-dev"; @@ -10241,7 +11307,7 @@ rec { } { name = "rand"; - packageId = "rand"; + packageId = "rand 0.9.2"; } { name = "serde"; @@ -10254,12 +11320,12 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.7"; + packageId = "snafu 0.8.9"; } { name = "stackable-operator"; packageId = "stackable-operator"; - features = [ "time" "telemetry" "versioned" ]; + features = [ "time" "telemetry" "versioned" "webhook" ]; } { name = "stackable-secret-operator-utils"; @@ -10284,13 +11350,13 @@ rec { }; "stackable-operator" = rec { crateName = "stackable-operator"; - version = "0.96.0"; + version = "0.97.0"; edition = "2024"; workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "89f484ca4e86b565e083e9ad7573e21dbe29a3af"; - sha256 = "05xhfz0bd09095ljkaj950r80bchdb202d8nka95cq356y4wha4c"; + rev = "36e9fad31f07903a545010998fb99aae0188337d"; + sha256 = "1ags7i3a0l5w5dcpfp6zzp4a172bp1jr9wkma0f1byjbk56q8bi0"; }; libName = "stackable_operator"; authors = [ @@ -10335,7 +11401,7 @@ rec { } { name = "stackable-telemetry"; - packageId = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.96.0#stackable-telemetry@0.6.1"; + packageId = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.97.0#stackable-telemetry@0.6.1"; optional = true; features = [ "clap" ]; } @@ -10355,7 +11421,7 @@ rec { name = "k8s-openapi"; packageId = "k8s-openapi"; usesDefaultFeatures = false; - features = [ "schemars" "v1_33" ]; + features = [ "schemars" "v1_34" ]; } { name = "kube"; @@ -10374,7 +11440,7 @@ rec { { name = "schemars"; packageId = "schemars"; - features = [ "url" ]; + features = [ "url2" ]; } { name = "semver"; @@ -10395,7 +11461,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.7"; + packageId = "snafu 0.8.9"; } { name = "stackable-operator-derive"; @@ -10410,6 +11476,12 @@ rec { packageId = "stackable-versioned"; optional = true; } + { + name = "stackable-webhook"; + packageId = "stackable-webhook"; + optional = true; + features = [ "maintainer" ]; + } { name = "strum"; packageId = "strum"; @@ -10441,14 +11513,14 @@ rec { ]; features = { "certs" = [ "dep:stackable-certs" ]; - "default" = [ "telemetry" "versioned" ]; - "full" = [ "certs" "telemetry" "versioned" "time" "webhook" ]; + "default" = [ "telemetry" "versioned" "clap" ]; + "full" = [ "certs" "telemetry" "versioned" "time" "webhook" "clap" ]; "telemetry" = [ "dep:stackable-telemetry" ]; "time" = [ "stackable-shared/time" ]; "versioned" = [ "dep:stackable-versioned" ]; "webhook" = [ "dep:stackable-webhook" ]; }; - resolvedDefaultFeatures = [ "default" "telemetry" "time" "versioned" ]; + resolvedDefaultFeatures = [ "clap" "default" "telemetry" "time" "versioned" "webhook" ]; }; "stackable-operator-derive" = rec { crateName = "stackable-operator-derive"; @@ -10457,8 +11529,8 @@ rec { workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "89f484ca4e86b565e083e9ad7573e21dbe29a3af"; - sha256 = "05xhfz0bd09095ljkaj950r80bchdb202d8nka95cq356y4wha4c"; + rev = "36e9fad31f07903a545010998fb99aae0188337d"; + sha256 = "1ags7i3a0l5w5dcpfp6zzp4a172bp1jr9wkma0f1byjbk56q8bi0"; }; procMacro = true; libName = "stackable_operator_derive"; @@ -10468,7 +11540,7 @@ rec { dependencies = [ { name = "darling"; - packageId = "darling 0.21.3"; + packageId = "darling"; } { name = "proc-macro2"; @@ -10549,7 +11621,7 @@ rec { } { name = "prost"; - packageId = "prost 0.14.1"; + packageId = "prost"; } { name = "prost-types"; @@ -10557,7 +11629,7 @@ rec { } { name = "rand"; - packageId = "rand"; + packageId = "rand 0.9.2"; } { name = "serde"; @@ -10568,9 +11640,13 @@ rec { name = "serde_json"; packageId = "serde_json"; } + { + name = "serde_yaml"; + packageId = "serde_yaml"; + } { name = "snafu"; - packageId = "snafu 0.8.7"; + packageId = "snafu 0.8.9"; } { name = "socket2"; @@ -10584,7 +11660,7 @@ rec { { name = "stackable-operator"; packageId = "stackable-operator"; - features = [ "time" "telemetry" "versioned" ]; + features = [ "time" "telemetry" "versioned" "webhook" ]; } { name = "stackable-secret-operator-utils"; @@ -10622,7 +11698,7 @@ rec { } { name = "tonic"; - packageId = "tonic 0.14.1"; + packageId = "tonic 0.14.2"; } { name = "tonic-prost"; @@ -10701,7 +11777,7 @@ rec { { name = "stackable-operator"; packageId = "stackable-operator"; - features = [ "time" "telemetry" "versioned" ]; + features = [ "time" "telemetry" "versioned" "webhook" ]; } { name = "tokio"; @@ -10752,13 +11828,13 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.7"; + packageId = "snafu 0.8.9"; } { name = "stackable-operator"; packageId = "stackable-operator"; optional = true; - features = [ "time" "telemetry" "versioned" ]; + features = [ "time" "telemetry" "versioned" "webhook" ]; } { name = "yasna"; @@ -10783,8 +11859,8 @@ rec { workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "89f484ca4e86b565e083e9ad7573e21dbe29a3af"; - sha256 = "05xhfz0bd09095ljkaj950r80bchdb202d8nka95cq356y4wha4c"; + rev = "36e9fad31f07903a545010998fb99aae0188337d"; + sha256 = "1ags7i3a0l5w5dcpfp6zzp4a172bp1jr9wkma0f1byjbk56q8bi0"; }; libName = "stackable_shared"; authors = [ @@ -10795,7 +11871,7 @@ rec { name = "k8s-openapi"; packageId = "k8s-openapi"; usesDefaultFeatures = false; - features = [ "schemars" "v1_33" ]; + features = [ "schemars" "v1_34" ]; } { name = "kube"; @@ -10806,7 +11882,7 @@ rec { { name = "schemars"; packageId = "schemars"; - features = [ "url" ]; + features = [ "url2" ]; } { name = "semver"; @@ -10823,7 +11899,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.7"; + packageId = "snafu 0.8.9"; } { name = "strum"; @@ -10841,7 +11917,7 @@ rec { name = "k8s-openapi"; packageId = "k8s-openapi"; usesDefaultFeatures = false; - features = [ "schemars" "v1_33" ]; + features = [ "schemars" "v1_34" ]; } ]; features = { @@ -10853,13 +11929,13 @@ rec { }; "stackable-versioned" = rec { crateName = "stackable-versioned"; - version = "0.8.1"; + version = "0.8.2"; edition = "2024"; workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "89f484ca4e86b565e083e9ad7573e21dbe29a3af"; - sha256 = "05xhfz0bd09095ljkaj950r80bchdb202d8nka95cq356y4wha4c"; + rev = "36e9fad31f07903a545010998fb99aae0188337d"; + sha256 = "1ags7i3a0l5w5dcpfp6zzp4a172bp1jr9wkma0f1byjbk56q8bi0"; }; libName = "stackable_versioned"; authors = [ @@ -10869,7 +11945,7 @@ rec { { name = "schemars"; packageId = "schemars"; - features = [ "url" ]; + features = [ "url2" ]; } { name = "serde"; @@ -10886,7 +11962,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.7"; + packageId = "snafu 0.8.9"; } { name = "stackable-versioned-macros"; @@ -10897,13 +11973,13 @@ rec { }; "stackable-versioned-macros" = rec { crateName = "stackable-versioned-macros"; - version = "0.8.1"; + version = "0.8.2"; edition = "2024"; workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "89f484ca4e86b565e083e9ad7573e21dbe29a3af"; - sha256 = "05xhfz0bd09095ljkaj950r80bchdb202d8nka95cq356y4wha4c"; + rev = "36e9fad31f07903a545010998fb99aae0188337d"; + sha256 = "1ags7i3a0l5w5dcpfp6zzp4a172bp1jr9wkma0f1byjbk56q8bi0"; }; procMacro = true; libName = "stackable_versioned_macros"; @@ -10917,7 +11993,7 @@ rec { } { name = "darling"; - packageId = "darling 0.21.3"; + packageId = "darling"; } { name = "indoc"; @@ -10931,7 +12007,7 @@ rec { name = "k8s-openapi"; packageId = "k8s-openapi"; usesDefaultFeatures = false; - features = [ "schemars" "v1_33" ]; + features = [ "schemars" "v1_34" ]; } { name = "k8s-version"; @@ -10959,6 +12035,127 @@ rec { ]; }; + "stackable-webhook" = rec { + crateName = "stackable-webhook"; + version = "0.6.0"; + edition = "2024"; + workspace_member = null; + src = pkgs.fetchgit { + url = "https://github.com/stackabletech/operator-rs.git"; + rev = "36e9fad31f07903a545010998fb99aae0188337d"; + sha256 = "1ags7i3a0l5w5dcpfp6zzp4a172bp1jr9wkma0f1byjbk56q8bi0"; + }; + libName = "stackable_webhook"; + authors = [ + "Stackable GmbH " + ]; + dependencies = [ + { + name = "arc-swap"; + packageId = "arc-swap"; + } + { + name = "axum"; + packageId = "axum"; + features = [ "http2" ]; + } + { + name = "futures-util"; + packageId = "futures-util"; + } + { + name = "stackable-telemetry"; + packageId = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.97.0#stackable-telemetry@0.6.1"; + } + { + name = "hyper"; + packageId = "hyper"; + features = [ "full" ]; + } + { + name = "hyper-util"; + packageId = "hyper-util"; + } + { + name = "k8s-openapi"; + packageId = "k8s-openapi"; + usesDefaultFeatures = false; + features = [ "schemars" "v1_34" ]; + } + { + name = "kube"; + packageId = "kube"; + usesDefaultFeatures = false; + features = [ "client" "jsonpatch" "runtime" "derive" "rustls-tls" "ring" ]; + } + { + name = "opentelemetry"; + packageId = "opentelemetry"; + } + { + name = "opentelemetry-semantic-conventions"; + packageId = "opentelemetry-semantic-conventions"; + } + { + name = "rand"; + packageId = "rand 0.9.2"; + } + { + name = "serde_json"; + packageId = "serde_json"; + } + { + name = "snafu"; + packageId = "snafu 0.8.9"; + } + { + name = "stackable-certs"; + packageId = "stackable-certs"; + features = [ "rustls" ]; + } + { + name = "stackable-shared"; + packageId = "stackable-shared"; + } + { + name = "tokio"; + packageId = "tokio"; + features = [ "macros" "rt-multi-thread" "fs" ]; + } + { + name = "tokio-rustls"; + packageId = "tokio-rustls"; + usesDefaultFeatures = false; + features = [ "ring" "logging" "tls12" ]; + } + { + name = "tower"; + packageId = "tower"; + features = [ "util" ]; + } + { + name = "tower-http"; + packageId = "tower-http"; + features = [ "trace" ]; + } + { + name = "tracing"; + packageId = "tracing"; + } + { + name = "tracing-opentelemetry"; + packageId = "tracing-opentelemetry"; + } + { + name = "x509-cert"; + packageId = "x509-cert"; + features = [ "builder" ]; + } + ]; + features = { + }; + resolvedDefaultFeatures = [ "maintainer" ]; + }; "strsim" = rec { crateName = "strsim"; version = "0.11.1"; @@ -11035,6 +12232,7 @@ rec { features = { "default" = [ "std" "i128" ]; }; + resolvedDefaultFeatures = [ "i128" ]; }; "syn 1.0.109" = rec { crateName = "syn"; @@ -11196,9 +12394,9 @@ rec { }; "tempfile" = rec { crateName = "tempfile"; - version = "3.21.0"; + version = "3.22.0"; edition = "2021"; - sha256 = "07kx58ibjk3ydq1gcb7q637fs5zkxaa550lxckhgg9p3427izdhm"; + sha256 = "0lza9r7dzm4k9fghw24yql6iz59wq8xgs46a7i29ir6xz88lvyl4"; authors = [ "Steven Allen " "The Rust Project Developers" @@ -11231,7 +12429,7 @@ rec { } { name = "windows-sys"; - packageId = "windows-sys 0.60.2"; + packageId = "windows-sys 0.61.0"; target = { target, features }: (target."windows" or false); features = [ "Win32_Storage_FileSystem" "Win32_Foundation" ]; } @@ -11348,9 +12546,9 @@ rec { }; "time" = rec { crateName = "time"; - version = "0.3.41"; + version = "0.3.43"; edition = "2021"; - sha256 = "0h0cpiyya8cjlrh00d2r72bmgg4lsdcncs76qpwy0rn2kghijxla"; + sha256 = "0c90pxn59zccwdyvh8pn9ql04c32ky9kqqli7mc2vrqhxkqydgc3"; authors = [ "Jacob Pratt " "Time contributors" @@ -11359,14 +12557,8 @@ rec { { name = "deranged"; packageId = "deranged"; - usesDefaultFeatures = false; features = [ "powerfmt" ]; } - { - name = "itoa"; - packageId = "itoa"; - optional = true; - } { name = "num-conv"; packageId = "num-conv"; @@ -11411,26 +12603,28 @@ rec { features = { "alloc" = [ "serde?/alloc" ]; "default" = [ "std" ]; - "formatting" = [ "dep:itoa" "std" "time-macros?/formatting" ]; + "formatting" = [ "std" "time-macros?/formatting" ]; "large-dates" = [ "time-macros?/large-dates" ]; "local-offset" = [ "std" "dep:libc" "dep:num_threads" ]; "macros" = [ "dep:time-macros" ]; "parsing" = [ "time-macros?/parsing" ]; "quickcheck" = [ "dep:quickcheck" "alloc" "deranged/quickcheck" ]; - "rand" = [ "dep:rand" "deranged/rand" ]; + "rand" = [ "rand08" "rand09" ]; + "rand08" = [ "dep:rand08" "deranged/rand08" ]; + "rand09" = [ "dep:rand09" "deranged/rand09" ]; "serde" = [ "dep:serde" "time-macros?/serde" "deranged/serde" ]; "serde-human-readable" = [ "serde" "formatting" "parsing" ]; "serde-well-known" = [ "serde" "formatting" "parsing" ]; - "std" = [ "alloc" "deranged/std" ]; + "std" = [ "alloc" ]; "wasm-bindgen" = [ "dep:js-sys" ]; }; resolvedDefaultFeatures = [ "alloc" "default" "formatting" "parsing" "std" ]; }; "time-core" = rec { crateName = "time-core"; - version = "0.1.4"; + version = "0.1.6"; edition = "2021"; - sha256 = "0z5h9fknvdvbs2k2s1chpi3ab3jvgkfhdnqwrvixjngm263s7sf9"; + sha256 = "0sqwhg7n47gbffyr0zhipqcnskxgcgzz1ix8wirqs2rg3my8x1j0"; libName = "time_core"; authors = [ "Jacob Pratt " @@ -11440,9 +12634,9 @@ rec { }; "time-macros" = rec { crateName = "time-macros"; - version = "0.2.22"; + version = "0.2.24"; edition = "2021"; - sha256 = "0jcaxpw220han2bzbrdlpqhy1s5k9i8ri3lw6n5zv4zcja9p69im"; + sha256 = "1wzb6hnl35856f58cx259q7ijc4c7yis0qsnydvw5n8jbw9b1krh"; procMacro = true; libName = "time_macros"; authors = [ @@ -11461,37 +12655,99 @@ rec { ]; features = { }; - resolvedDefaultFeatures = [ "formatting" "parsing" ]; + resolvedDefaultFeatures = [ "formatting" "parsing" ]; + }; + "tinystr" = rec { + crateName = "tinystr"; + version = "0.8.1"; + edition = "2021"; + sha256 = "12sc6h3hnn6x78iycm5v6wrs2xhxph0ydm43yyn7gdfw8l8nsksx"; + authors = [ + "The ICU4X Project Developers" + ]; + dependencies = [ + { + name = "displaydoc"; + packageId = "displaydoc"; + usesDefaultFeatures = false; + } + { + name = "zerovec"; + packageId = "zerovec"; + optional = true; + usesDefaultFeatures = false; + } + ]; + features = { + "alloc" = [ "zerovec?/alloc" ]; + "databake" = [ "dep:databake" ]; + "default" = [ "alloc" ]; + "serde" = [ "dep:serde" ]; + "zerovec" = [ "dep:zerovec" ]; + }; + resolvedDefaultFeatures = [ "alloc" "zerovec" ]; + }; + "tls_codec" = rec { + crateName = "tls_codec"; + version = "0.4.2"; + edition = "2021"; + sha256 = "0sxzj0pdinn7fsc8aihqgfylsqi7z9jca0aqy3b8kfz28l9f1qhd"; + authors = [ + "RustCrypto Developers" + ]; + dependencies = [ + { + name = "tls_codec_derive"; + packageId = "tls_codec_derive"; + optional = true; + } + { + name = "zeroize"; + packageId = "zeroize"; + usesDefaultFeatures = false; + features = [ "alloc" "zeroize_derive" ]; + } + ]; + features = { + "arbitrary" = [ "std" "dep:arbitrary" ]; + "conditional_deserialization" = [ "derive" "tls_codec_derive/conditional_deserialization" ]; + "default" = [ "std" ]; + "derive" = [ "tls_codec_derive" ]; + "serde" = [ "std" "dep:serde" ]; + "std" = [ "tls_codec_derive?/std" ]; + "tls_codec_derive" = [ "dep:tls_codec_derive" ]; + }; + resolvedDefaultFeatures = [ "derive" "std" "tls_codec_derive" ]; }; - "tinystr" = rec { - crateName = "tinystr"; - version = "0.8.1"; + "tls_codec_derive" = rec { + crateName = "tls_codec_derive"; + version = "0.4.2"; edition = "2021"; - sha256 = "12sc6h3hnn6x78iycm5v6wrs2xhxph0ydm43yyn7gdfw8l8nsksx"; + sha256 = "1gglj5cxkpv7i3jazffksrfy5h5242kdvsqawjm2yh1915lpcbid"; + procMacro = true; authors = [ - "The ICU4X Project Developers" + "RustCrypto Developers" ]; dependencies = [ { - name = "displaydoc"; - packageId = "displaydoc"; - usesDefaultFeatures = false; + name = "proc-macro2"; + packageId = "proc-macro2"; } { - name = "zerovec"; - packageId = "zerovec"; - optional = true; - usesDefaultFeatures = false; + name = "quote"; + packageId = "quote"; + } + { + name = "syn"; + packageId = "syn 2.0.106"; + features = [ "parsing" ]; } ]; features = { - "alloc" = [ "zerovec?/alloc" ]; - "databake" = [ "dep:databake" ]; - "default" = [ "alloc" ]; - "serde" = [ "dep:serde" ]; - "zerovec" = [ "dep:zerovec" ]; + "conditional_deserialization" = [ "syn/full" ]; + "default" = [ "std" ]; }; - resolvedDefaultFeatures = [ "alloc" "zerovec" ]; + resolvedDefaultFeatures = [ "default" "std" ]; }; "tokio" = rec { crateName = "tokio"; @@ -11711,7 +12967,7 @@ rec { "ring" = [ "rustls/ring" ]; "tls12" = [ "rustls/tls12" ]; }; - resolvedDefaultFeatures = [ "logging" "tls12" ]; + resolvedDefaultFeatures = [ "logging" "ring" "tls12" ]; }; "tokio-stream" = rec { crateName = "tokio-stream"; @@ -11950,11 +13206,11 @@ rec { }; resolvedDefaultFeatures = [ "channel" "codegen" "gzip" "prost" ]; }; - "tonic 0.14.1" = rec { + "tonic 0.14.2" = rec { crateName = "tonic"; - version = "0.14.1"; + version = "0.14.2"; edition = "2021"; - sha256 = "0h1af8kcwzaxyyr6vdnc0fm8i5gpddsa8qy0rs59d85d4y35mb37"; + sha256 = "00vjbvccmyzjbi0j0ydi1l8psd0lb1nb4p8qzrdxzxz9ihc16xpb"; authors = [ "Lucio Franco " ]; @@ -11978,6 +13234,11 @@ rec { name = "bytes"; packageId = "bytes"; } + { + name = "flate2"; + packageId = "flate2"; + optional = true; + } { name = "h2"; packageId = "h2"; @@ -12073,7 +13334,7 @@ rec { } ]; features = { - "_tls-any" = [ "dep:tokio-rustls" "dep:tokio" "tokio?/rt" "tokio?/macros" ]; + "_tls-any" = [ "dep:tokio" "tokio?/rt" "tokio?/macros" "tls-connect-info" ]; "channel" = [ "dep:hyper" "hyper?/client" "dep:hyper-util" "hyper-util?/client-legacy" "dep:tower" "tower?/balance" "tower?/buffer" "tower?/discover" "tower?/limit" "tower?/load-shed" "tower?/util" "dep:tokio" "tokio?/time" "dep:hyper-timeout" ]; "codegen" = [ "dep:async-trait" ]; "default" = [ "router" "transport" "codegen" ]; @@ -12082,19 +13343,20 @@ rec { "router" = [ "dep:axum" "dep:tower" "tower?/util" ]; "server" = [ "dep:h2" "dep:hyper" "hyper?/server" "dep:hyper-util" "hyper-util?/service" "hyper-util?/server-auto" "dep:socket2" "dep:tokio" "tokio?/macros" "tokio?/net" "tokio?/time" "tokio-stream/net" "dep:tower" "tower?/util" "tower?/limit" "tower?/load-shed" ]; "tls-aws-lc" = [ "_tls-any" "tokio-rustls/aws-lc-rs" ]; + "tls-connect-info" = [ "dep:tokio-rustls" ]; "tls-native-roots" = [ "_tls-any" "channel" "dep:rustls-native-certs" ]; "tls-ring" = [ "_tls-any" "tokio-rustls/ring" ]; "tls-webpki-roots" = [ "_tls-any" "channel" "dep:webpki-roots" ]; "transport" = [ "server" "channel" ]; "zstd" = [ "dep:zstd" ]; }; - resolvedDefaultFeatures = [ "channel" "codegen" "default" "router" "server" "transport" ]; + resolvedDefaultFeatures = [ "channel" "codegen" "default" "gzip" "router" "server" "transport" ]; }; "tonic-build" = rec { crateName = "tonic-build"; - version = "0.14.1"; + version = "0.14.2"; edition = "2021"; - sha256 = "0pg26f4ylhv9ayp3rbg8baii1gzadl26vqq76y1k1gm3pgc27qs9"; + sha256 = "1qwx0hvddld5rz4ln947x0ihs0qkvhd13g1fv0nczv7rr76alh2c"; libName = "tonic_build"; authors = [ "Lucio Franco " @@ -12124,9 +13386,9 @@ rec { }; "tonic-prost" = rec { crateName = "tonic-prost"; - version = "0.14.1"; + version = "0.14.2"; edition = "2021"; - sha256 = "0zf8n691rr6g6xaf4g7x0n8kpkva8ij09l6mnw9cnh3dm6wi3idr"; + sha256 = "0rxamvbxxl7x673g97pvhr5gag2czrj3sjq2xy3js9g1djnm1gb6"; libName = "tonic_prost"; authors = [ "Lucio Franco " @@ -12138,11 +13400,11 @@ rec { } { name = "prost"; - packageId = "prost 0.14.1"; + packageId = "prost"; } { name = "tonic"; - packageId = "tonic 0.14.1"; + packageId = "tonic 0.14.2"; usesDefaultFeatures = false; } ]; @@ -12150,9 +13412,9 @@ rec { }; "tonic-prost-build" = rec { crateName = "tonic-prost-build"; - version = "0.14.1"; + version = "0.14.2"; edition = "2021"; - sha256 = "18ggfll4v3mh6g4z3xssd97cmkk08jbqqjqc8hsy258vs3y9iwlf"; + sha256 = "18jqs18s9imj5b78vjhqpm6ccm61qns9cgyb7zs3zp2382x6r8dl"; libName = "tonic_prost_build"; authors = [ "Lucio Franco " @@ -12201,9 +13463,9 @@ rec { }; "tonic-reflection" = rec { crateName = "tonic-reflection"; - version = "0.14.1"; + version = "0.14.2"; edition = "2021"; - sha256 = "0flaxmpryxlalhkcg0kl6sia18sn335jmlcpc6cr9kc56c3s0rq2"; + sha256 = "0yzdhv9inp4x51p8axnz3w4nnhhblyc1zw3gn5nxd0bm73l57nil"; libName = "tonic_reflection"; authors = [ "James Nugent " @@ -12212,7 +13474,7 @@ rec { dependencies = [ { name = "prost"; - packageId = "prost 0.14.1"; + packageId = "prost"; } { name = "prost-types"; @@ -12233,7 +13495,7 @@ rec { } { name = "tonic"; - packageId = "tonic 0.14.1"; + packageId = "tonic 0.14.2"; usesDefaultFeatures = false; features = [ "codegen" ]; } @@ -12252,7 +13514,7 @@ rec { } { name = "tonic"; - packageId = "tonic 0.14.1"; + packageId = "tonic 0.14.2"; usesDefaultFeatures = false; features = [ "transport" ]; } @@ -12715,9 +13977,9 @@ rec { }; "tracing-opentelemetry" = rec { crateName = "tracing-opentelemetry"; - version = "0.31.0"; + version = "0.32.0"; edition = "2021"; - sha256 = "171scb8d5ynxvnyvq7lm9wzn4fzk0jf124v49p8d01wmydcmkkyx"; + sha256 = "13hvpfljbxi8id3j5pmzn4rhc4nkw68pfp57mf4q1n1x8rc5cvhy"; libName = "tracing_opentelemetry"; dependencies = [ { @@ -12725,10 +13987,6 @@ rec { packageId = "js-sys"; target = { target, features }: (("wasm32" == target."arch" or null) && (!("wasi" == target."os" or null))); } - { - name = "once_cell"; - packageId = "once_cell"; - } { name = "opentelemetry"; packageId = "opentelemetry"; @@ -12741,11 +13999,20 @@ rec { usesDefaultFeatures = false; features = [ "trace" ]; } + { + name = "rustversion"; + packageId = "rustversion"; + } { name = "smallvec"; packageId = "smallvec"; optional = true; } + { + name = "thiserror"; + packageId = "thiserror 2.0.16"; + usesDefaultFeatures = false; + } { name = "tracing"; packageId = "tracing"; @@ -12784,7 +14051,7 @@ rec { name = "opentelemetry_sdk"; packageId = "opentelemetry_sdk"; usesDefaultFeatures = false; - features = [ "trace" "rt-tokio" "experimental_metrics_custom_reader" ]; + features = [ "trace" "rt-tokio" "experimental_metrics_custom_reader" "testing" ]; } { name = "tracing"; @@ -12800,14 +14067,10 @@ rec { } ]; features = { - "async-trait" = [ "dep:async-trait" ]; "default" = [ "tracing-log" "metrics" ]; - "futures-util" = [ "dep:futures-util" ]; "lazy_static" = [ "dep:lazy_static" ]; "metrics" = [ "opentelemetry/metrics" "opentelemetry_sdk/metrics" "smallvec" ]; "smallvec" = [ "dep:smallvec" ]; - "thiserror" = [ "dep:thiserror" ]; - "thiserror-1" = [ "dep:thiserror-1" ]; "tracing-log" = [ "dep:tracing-log" ]; }; resolvedDefaultFeatures = [ "default" "metrics" "smallvec" "tracing-log" ]; @@ -13011,9 +14274,9 @@ rec { }; "unicode-ident" = rec { crateName = "unicode-ident"; - version = "1.0.18"; + version = "1.0.19"; edition = "2018"; - sha256 = "04k5r6sijkafzljykdq26mhjpmhdx4jwzvn1lh90g9ax9903jpss"; + sha256 = "17bx1j1zf6b9j3kpyf74mraary7ava3984km0n8kh499h5a58fpn"; libName = "unicode_ident"; authors = [ "David Tolnay " @@ -13144,9 +14407,9 @@ rec { }; "uuid" = rec { crateName = "uuid"; - version = "1.18.0"; + version = "1.18.1"; edition = "2018"; - sha256 = "1gn1vlggiwrdpizqcpc5hyxsqz9s5215bbay1b182mqn7rj9ccgk"; + sha256 = "18kh01qmfayn4psap52x8xdjkzw2q8bcbpnhhxjs05dr22mbi1rg"; authors = [ "Ashley Mannix" "Dylan DPC" @@ -13296,34 +14559,49 @@ rec { }; resolvedDefaultFeatures = [ "default" "std" ]; }; - "wasi 0.14.2+wasi-0.2.4" = rec { + "wasi 0.14.7+wasi-0.2.4" = rec { crateName = "wasi"; - version = "0.14.2+wasi-0.2.4"; + version = "0.14.7+wasi-0.2.4"; edition = "2021"; - sha256 = "1cwcqjr3dgdq8j325awgk8a715h0hg0f7jqzsb077n4qm6jzk0wn"; - authors = [ - "The Cranelift Project Developers" + sha256 = "133fq3mq7h65mzrsphcm7bbbx1gsz7srrbwh01624zin43g7hd48"; + dependencies = [ + { + name = "wasip2"; + packageId = "wasip2"; + usesDefaultFeatures = false; + } ]; + features = { + "bitflags" = [ "wasip2/bitflags" ]; + "default" = [ "wasip2/default" ]; + "std" = [ "wasip2/std" ]; + }; + }; + "wasip2" = rec { + crateName = "wasip2"; + version = "1.0.1+wasi-0.2.4"; + edition = "2021"; + sha256 = "1rsqmpspwy0zja82xx7kbkbg9fv34a4a2if3sbd76dy64a244qh5"; dependencies = [ { - name = "wit-bindgen-rt"; - packageId = "wit-bindgen-rt"; - features = [ "bitflags" ]; + name = "wit-bindgen"; + packageId = "wit-bindgen"; + usesDefaultFeatures = false; } ]; features = { - "compiler_builtins" = [ "dep:compiler_builtins" ]; + "alloc" = [ "dep:alloc" ]; + "bitflags" = [ "wit-bindgen/bitflags" ]; "core" = [ "dep:core" ]; - "default" = [ "std" ]; - "rustc-dep-of-std" = [ "compiler_builtins" "core" "rustc-std-workspace-alloc" ]; - "rustc-std-workspace-alloc" = [ "dep:rustc-std-workspace-alloc" ]; + "default" = [ "std" "bitflags" ]; + "rustc-dep-of-std" = [ "core" "alloc" "wit-bindgen/rustc-dep-of-std" ]; }; }; "wasm-bindgen" = rec { crateName = "wasm-bindgen"; - version = "0.2.100"; + version = "0.2.101"; edition = "2021"; - sha256 = "1x8ymcm6yi3i1rwj78myl1agqv2m86i648myy3lc97s9swlqkp0y"; + sha256 = "0fv0yrfx170gf7i4dds4c69dxh8axp247wyip2dm4nylmmf9253y"; libName = "wasm_bindgen"; authors = [ "The wasm-bindgen Developers" @@ -13347,6 +14625,10 @@ rec { name = "wasm-bindgen-macro"; packageId = "wasm-bindgen-macro"; } + { + name = "wasm-bindgen-shared"; + packageId = "wasm-bindgen-shared"; + } ]; devDependencies = [ { @@ -13363,15 +14645,14 @@ rec { "serde-serialize" = [ "serde" "serde_json" "std" ]; "serde_json" = [ "dep:serde_json" ]; "strict-macro" = [ "wasm-bindgen-macro/strict-macro" ]; - "xxx_debug_only_print_generated_code" = [ "wasm-bindgen-macro/xxx_debug_only_print_generated_code" ]; }; resolvedDefaultFeatures = [ "default" "msrv" "rustversion" "std" ]; }; "wasm-bindgen-backend" = rec { crateName = "wasm-bindgen-backend"; - version = "0.2.100"; + version = "0.2.101"; edition = "2021"; - sha256 = "1ihbf1hq3y81c4md9lyh6lcwbx6a5j0fw4fygd423g62lm8hc2ig"; + sha256 = "1fwkzc2z701g2rm2jq4m20a0lkc6qqq5r3a407yj6yfahalip3g2"; libName = "wasm_bindgen_backend"; authors = [ "The wasm-bindgen Developers" @@ -13409,9 +14690,9 @@ rec { }; "wasm-bindgen-futures" = rec { crateName = "wasm-bindgen-futures"; - version = "0.4.50"; + version = "0.4.51"; edition = "2021"; - sha256 = "0q8ymi6i9r3vxly551dhxcyai7nc491mspj0j1wbafxwq074fpam"; + sha256 = "1znz8i8kyrlpq6q2fals223zrwwixmn6s7a16s1v6sdlm4wm1a0c"; libName = "wasm_bindgen_futures"; authors = [ "The wasm-bindgen Developers" @@ -13454,9 +14735,9 @@ rec { }; "wasm-bindgen-macro" = rec { crateName = "wasm-bindgen-macro"; - version = "0.2.100"; + version = "0.2.101"; edition = "2021"; - sha256 = "01xls2dvzh38yj17jgrbiib1d3nyad7k2yw9s0mpklwys333zrkz"; + sha256 = "038vxk2yg11c3qv9iyasqcm70dw8sr2xmyaxqjq7bxzgwcx4cgbw"; procMacro = true; libName = "wasm_bindgen_macro"; authors = [ @@ -13478,9 +14759,9 @@ rec { }; "wasm-bindgen-macro-support" = rec { crateName = "wasm-bindgen-macro-support"; - version = "0.2.100"; + version = "0.2.101"; edition = "2021"; - sha256 = "1plm8dh20jg2id0320pbmrlsv6cazfv6b6907z19ys4z1jj7xs4a"; + sha256 = "1ajjqmdbi7ybdpw41avskjfdqnxpc9v547gmr8izj4c2n24wxd3v"; libName = "wasm_bindgen_macro_support"; authors = [ "The wasm-bindgen Developers" @@ -13514,10 +14795,10 @@ rec { }; "wasm-bindgen-shared" = rec { crateName = "wasm-bindgen-shared"; - version = "0.2.100"; + version = "0.2.101"; edition = "2021"; links = "wasm_bindgen"; - sha256 = "0gffxvqgbh9r9xl36gprkfnh3w9gl8wgia6xrin7v11sjcxxf18s"; + sha256 = "1h94nvm5p8zyr3718x4zhdz7rcmd0rir0b46a1ljqx8k7d58ahzi"; libName = "wasm_bindgen_shared"; authors = [ "The wasm-bindgen Developers" @@ -13532,9 +14813,9 @@ rec { }; "web-sys" = rec { crateName = "web-sys"; - version = "0.3.77"; + version = "0.3.78"; edition = "2021"; - sha256 = "1lnmc1ffbq34qw91nndklqqm75rasaffj2g4f8h1yvqqz4pdvdik"; + sha256 = "04lbcdr74pilsrf1g76lbw9bwg7zghgslqxdiwmxkw4zfhvvdr3p"; libName = "web_sys"; authors = [ "The wasm-bindgen Developers" @@ -13649,6 +14930,7 @@ rec { "FontFaceSetLoadEvent" = [ "Event" ]; "GainNode" = [ "AudioNode" "EventTarget" ]; "GamepadEvent" = [ "Event" ]; + "GestureEvent" = [ "Event" "UiEvent" ]; "GpuDevice" = [ "EventTarget" ]; "GpuInternalError" = [ "GpuError" ]; "GpuOutOfMemoryError" = [ "GpuError" ]; @@ -13803,6 +15085,8 @@ rec { "PerformanceNavigationTiming" = [ "PerformanceEntry" "PerformanceResourceTiming" ]; "PerformanceResourceTiming" = [ "PerformanceEntry" ]; "PermissionStatus" = [ "EventTarget" ]; + "PictureInPictureEvent" = [ "Event" ]; + "PictureInPictureWindow" = [ "EventTarget" ]; "PointerEvent" = [ "Event" "MouseEvent" "UiEvent" ]; "PopStateEvent" = [ "Event" ]; "PopupBlockedEvent" = [ "Event" ]; @@ -14037,9 +15321,9 @@ rec { }; "winapi-util" = rec { crateName = "winapi-util"; - version = "0.1.10"; + version = "0.1.11"; edition = "2021"; - sha256 = "08hb8rj3aq9lcrfmliqs4l7v9zh6srbcn0376yn0pndkf5qvyy09"; + sha256 = "08hdl7mkll7pz8whg869h58c1r9y7in0w0pk8fm24qc77k0b39y2"; libName = "winapi_util"; authors = [ "Andrew Gallant " @@ -14047,7 +15331,7 @@ rec { dependencies = [ { name = "windows-sys"; - packageId = "windows-sys 0.60.2"; + packageId = "windows-sys 0.61.0"; target = { target, features }: (target."windows" or false); features = [ "Win32_Foundation" "Win32_Storage_FileSystem" "Win32_System_Console" "Win32_System_SystemInformation" ]; } @@ -14070,7 +15354,7 @@ rec { } { name = "windows-core"; - packageId = "windows-core"; + packageId = "windows-core 0.61.2"; usesDefaultFeatures = false; } { @@ -14080,7 +15364,7 @@ rec { } { name = "windows-link"; - packageId = "windows-link"; + packageId = "windows-link 0.1.3"; usesDefaultFeatures = false; } { @@ -14794,7 +16078,7 @@ rec { dependencies = [ { name = "windows-core"; - packageId = "windows-core"; + packageId = "windows-core 0.61.2"; usesDefaultFeatures = false; } ]; @@ -14802,7 +16086,7 @@ rec { "default" = [ "std" ]; }; }; - "windows-core" = rec { + "windows-core 0.61.2" = rec { crateName = "windows-core"; version = "0.61.2"; edition = "2021"; @@ -14824,17 +16108,56 @@ rec { } { name = "windows-link"; - packageId = "windows-link"; + packageId = "windows-link 0.1.3"; + usesDefaultFeatures = false; + } + { + name = "windows-result"; + packageId = "windows-result 0.3.4"; + usesDefaultFeatures = false; + } + { + name = "windows-strings"; + packageId = "windows-strings 0.4.2"; + usesDefaultFeatures = false; + } + ]; + features = { + "default" = [ "std" ]; + "std" = [ "windows-result/std" "windows-strings/std" ]; + }; + resolvedDefaultFeatures = [ "std" ]; + }; + "windows-core 0.62.0" = rec { + crateName = "windows-core"; + version = "0.62.0"; + edition = "2021"; + sha256 = "0z294cblga0dl2dg9s9080xyglkh33b7zc05i8nqsmyyyxl73zjp"; + libName = "windows_core"; + dependencies = [ + { + name = "windows-implement"; + packageId = "windows-implement"; + usesDefaultFeatures = false; + } + { + name = "windows-interface"; + packageId = "windows-interface"; + usesDefaultFeatures = false; + } + { + name = "windows-link"; + packageId = "windows-link 0.2.0"; usesDefaultFeatures = false; } { name = "windows-result"; - packageId = "windows-result"; + packageId = "windows-result 0.4.0"; usesDefaultFeatures = false; } { name = "windows-strings"; - packageId = "windows-strings"; + packageId = "windows-strings 0.5.0"; usesDefaultFeatures = false; } ]; @@ -14853,12 +16176,12 @@ rec { dependencies = [ { name = "windows-core"; - packageId = "windows-core"; + packageId = "windows-core 0.61.2"; usesDefaultFeatures = false; } { name = "windows-link"; - packageId = "windows-link"; + packageId = "windows-link 0.1.3"; usesDefaultFeatures = false; } { @@ -14931,7 +16254,7 @@ rec { ]; }; - "windows-link" = rec { + "windows-link 0.1.3" = rec { crateName = "windows-link"; version = "0.1.3"; edition = "2021"; @@ -14941,6 +16264,14 @@ rec { "Microsoft" ]; + }; + "windows-link 0.2.0" = rec { + crateName = "windows-link"; + version = "0.2.0"; + edition = "2021"; + sha256 = "0r9w2z96d5phmm185aq92z54jp9h2nqisa4wgc71idxbc436rr25"; + libName = "windows_link"; + }; "windows-numerics" = rec { crateName = "windows-numerics"; @@ -14951,12 +16282,12 @@ rec { dependencies = [ { name = "windows-core"; - packageId = "windows-core"; + packageId = "windows-core 0.61.2"; usesDefaultFeatures = false; } { name = "windows-link"; - packageId = "windows-link"; + packageId = "windows-link 0.1.3"; usesDefaultFeatures = false; } ]; @@ -14964,7 +16295,7 @@ rec { "default" = [ "std" ]; }; }; - "windows-result" = rec { + "windows-result 0.3.4" = rec { crateName = "windows-result"; version = "0.3.4"; edition = "2021"; @@ -14976,7 +16307,25 @@ rec { dependencies = [ { name = "windows-link"; - packageId = "windows-link"; + packageId = "windows-link 0.1.3"; + usesDefaultFeatures = false; + } + ]; + features = { + "default" = [ "std" ]; + }; + resolvedDefaultFeatures = [ "std" ]; + }; + "windows-result 0.4.0" = rec { + crateName = "windows-result"; + version = "0.4.0"; + edition = "2021"; + sha256 = "0zqn8kmmf7y9yw9g7q6pbcg9dbry9m03fqi0b92q767q0v1xr13h"; + libName = "windows_result"; + dependencies = [ + { + name = "windows-link"; + packageId = "windows-link 0.2.0"; usesDefaultFeatures = false; } ]; @@ -14985,7 +16334,7 @@ rec { }; resolvedDefaultFeatures = [ "std" ]; }; - "windows-strings" = rec { + "windows-strings 0.4.2" = rec { crateName = "windows-strings"; version = "0.4.2"; edition = "2021"; @@ -14997,20 +16346,286 @@ rec { dependencies = [ { name = "windows-link"; - packageId = "windows-link"; + packageId = "windows-link 0.1.3"; + usesDefaultFeatures = false; + } + ]; + features = { + "default" = [ "std" ]; + }; + resolvedDefaultFeatures = [ "std" ]; + }; + "windows-strings 0.5.0" = rec { + crateName = "windows-strings"; + version = "0.5.0"; + edition = "2021"; + sha256 = "1nld65azvms87rdm2bdm8gskwdmsswh4pxbc8babxc2klmawc63j"; + libName = "windows_strings"; + dependencies = [ + { + name = "windows-link"; + packageId = "windows-link 0.2.0"; usesDefaultFeatures = false; } ]; features = { "default" = [ "std" ]; }; - resolvedDefaultFeatures = [ "std" ]; + resolvedDefaultFeatures = [ "std" ]; + }; + "windows-sys 0.52.0" = rec { + crateName = "windows-sys"; + version = "0.52.0"; + edition = "2021"; + sha256 = "0gd3v4ji88490zgb6b5mq5zgbvwv7zx1ibn8v3x83rwcdbryaar8"; + libName = "windows_sys"; + authors = [ + "Microsoft" + ]; + dependencies = [ + { + name = "windows-targets"; + packageId = "windows-targets 0.52.6"; + } + ]; + features = { + "Wdk_Foundation" = [ "Wdk" ]; + "Wdk_Graphics" = [ "Wdk" ]; + "Wdk_Graphics_Direct3D" = [ "Wdk_Graphics" ]; + "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_OfflineRegistry" = [ "Wdk_System" ]; + "Wdk_System_Registry" = [ "Wdk_System" ]; + "Wdk_System_SystemInformation" = [ "Wdk_System" ]; + "Wdk_System_SystemServices" = [ "Wdk_System" ]; + "Wdk_System_Threading" = [ "Wdk_System" ]; + "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_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_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_Storage" "Win32_Storage_FileSystem" "Win32_System" "Win32_System_Console" "Win32_System_Threading" "default" ]; }; - "windows-sys 0.52.0" = rec { + "windows-sys 0.59.0" = rec { crateName = "windows-sys"; - version = "0.52.0"; + version = "0.59.0"; edition = "2021"; - sha256 = "0gd3v4ji88490zgb6b5mq5zgbvwv7zx1ibn8v3x83rwcdbryaar8"; + sha256 = "0fw5672ziw8b3zpmnbp9pdv1famk74f1l9fcbc3zsrzdg56vqf0y"; libName = "windows_sys"; authors = [ "Microsoft" @@ -15022,19 +16637,28 @@ rec { } ]; 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" ]; @@ -15174,6 +16798,7 @@ rec { "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" ]; @@ -15245,6 +16870,7 @@ rec { "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" ]; @@ -15252,13 +16878,13 @@ rec { "Win32_Web" = [ "Win32" ]; "Win32_Web_InternetExplorer" = [ "Win32_Web" ]; }; - resolvedDefaultFeatures = [ "Win32" "Win32_Foundation" "Win32_Security" "Win32_Storage" "Win32_Storage_FileSystem" "Win32_System" "Win32_System_Console" "Win32_System_Threading" "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 { + "windows-sys 0.60.2" = rec { crateName = "windows-sys"; - version = "0.59.0"; + version = "0.60.2"; edition = "2021"; - sha256 = "0fw5672ziw8b3zpmnbp9pdv1famk74f1l9fcbc3zsrzdg56vqf0y"; + sha256 = "1jrbc615ihqnhjhxplr2kw7rasrskv9wj3lr80hgfd42sbj01xgj"; libName = "windows_sys"; authors = [ "Microsoft" @@ -15266,7 +16892,8 @@ rec { dependencies = [ { name = "windows-targets"; - packageId = "windows-targets 0.52.6"; + packageId = "windows-targets 0.53.3"; + usesDefaultFeatures = false; } ]; features = { @@ -15297,16 +16924,21 @@ rec { "Win32_Data_RightsManagement" = [ "Win32_Data" ]; "Win32_Devices" = [ "Win32" ]; "Win32_Devices_AllJoyn" = [ "Win32_Devices" ]; + "Win32_Devices_Beep" = [ "Win32_Devices" ]; "Win32_Devices_BiometricFramework" = [ "Win32_Devices" ]; "Win32_Devices_Bluetooth" = [ "Win32_Devices" ]; + "Win32_Devices_Cdrom" = [ "Win32_Devices" ]; "Win32_Devices_Communication" = [ "Win32_Devices" ]; "Win32_Devices_DeviceAndDriverInstallation" = [ "Win32_Devices" ]; "Win32_Devices_DeviceQuery" = [ "Win32_Devices" ]; "Win32_Devices_Display" = [ "Win32_Devices" ]; + "Win32_Devices_Dvd" = [ "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_Nfc" = [ "Win32_Devices" ]; + "Win32_Devices_Nfp" = [ "Win32_Devices" ]; "Win32_Devices_PortableDevices" = [ "Win32_Devices" ]; "Win32_Devices_Properties" = [ "Win32_Devices" ]; "Win32_Devices_Pwm" = [ "Win32_Devices" ]; @@ -15511,21 +17143,18 @@ 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_LibraryLoader" "Win32_System_Memory" "Win32_System_Pipes" "Win32_System_SystemInformation" "Win32_System_SystemServices" "Win32_System_Threading" "Win32_System_WindowsProgramming" "Win32_UI" "Win32_UI_Shell" "default" ]; + resolvedDefaultFeatures = [ "Win32" "Win32_Foundation" "Win32_System" "Win32_System_Console" "default" ]; }; - "windows-sys 0.60.2" = rec { + "windows-sys 0.61.0" = rec { crateName = "windows-sys"; - version = "0.60.2"; + version = "0.61.0"; edition = "2021"; - sha256 = "1jrbc615ihqnhjhxplr2kw7rasrskv9wj3lr80hgfd42sbj01xgj"; + sha256 = "1ajpwsmzfcsa1r7i0dxzvfn24dp3525rcd7aq95ydvdj8171h0g2"; libName = "windows_sys"; - authors = [ - "Microsoft" - ]; dependencies = [ { - name = "windows-targets"; - packageId = "windows-targets 0.53.3"; + name = "windows-link"; + packageId = "windows-link 0.2.0"; usesDefaultFeatures = false; } ]; @@ -15776,7 +17405,7 @@ rec { "Win32_Web" = [ "Win32" ]; "Win32_Web_InternetExplorer" = [ "Win32_Web" ]; }; - resolvedDefaultFeatures = [ "Win32" "Win32_Foundation" "Win32_Networking" "Win32_Networking_WinSock" "Win32_Storage" "Win32_Storage_FileSystem" "Win32_System" "Win32_System_Console" "Win32_System_Diagnostics" "Win32_System_Diagnostics_Debug" "Win32_System_SystemInformation" "default" ]; + resolvedDefaultFeatures = [ "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_Console" "Win32_System_Diagnostics" "Win32_System_Diagnostics_Debug" "Win32_System_LibraryLoader" "Win32_System_Memory" "Win32_System_SystemInformation" "default" ]; }; "windows-targets 0.52.6" = rec { crateName = "windows-targets"; @@ -15843,7 +17472,7 @@ rec { dependencies = [ { name = "windows-link"; - packageId = "windows-link"; + packageId = "windows-link 0.1.3"; usesDefaultFeatures = false; target = { target, features }: (target."windows_raw_dylib" or false); } @@ -15902,7 +17531,7 @@ rec { dependencies = [ { name = "windows-link"; - packageId = "windows-link"; + packageId = "windows-link 0.1.3"; usesDefaultFeatures = false; } ]; @@ -16068,24 +17697,22 @@ rec { ]; }; - "wit-bindgen-rt" = rec { - crateName = "wit-bindgen-rt"; - version = "0.39.0"; + "wit-bindgen" = rec { + crateName = "wit-bindgen"; + version = "0.46.0"; edition = "2021"; - sha256 = "1hd65pa5hp0nl664m94bg554h4zlhrzmkjsf6lsgsb7yc4734hkg"; - libName = "wit_bindgen_rt"; - dependencies = [ - { - name = "bitflags"; - packageId = "bitflags"; - optional = true; - } + sha256 = "0ngysw50gp2wrrfxbwgp6dhw1g6sckknsn3wm7l00vaf7n48aypi"; + libName = "wit_bindgen"; + authors = [ + "Alex Crichton " ]; features = { - "async" = [ "dep:futures" "dep:once_cell" ]; + "async" = [ "macros" "std" "dep:futures" "dep:once_cell" "wit-bindgen-rust-macro/async" ]; "bitflags" = [ "dep:bitflags" ]; + "default" = [ "macros" "realloc" "async" "std" "bitflags" ]; + "macros" = [ "dep:wit-bindgen-rust-macro" ]; + "rustc-dep-of-std" = [ "dep:core" "dep:alloc" ]; }; - resolvedDefaultFeatures = [ "bitflags" ]; }; "writeable" = rec { crateName = "writeable"; @@ -16099,15 +17726,70 @@ rec { "either" = [ "dep:either" ]; }; }; - "xml-rs" = rec { - crateName = "xml-rs"; - version = "0.8.27"; + "x509-cert" = rec { + crateName = "x509-cert"; + version = "0.2.5"; edition = "2021"; - crateBin = []; - sha256 = "1irplg223x6w3lvj0yig6czbiwci06495wc9xg3660kh6cvl1n3g"; - libName = "xml"; + sha256 = "155f42vm6m7phn8w7s2wmk9vli3ws45dqpk5z3jilw0a04syj08k"; + libName = "x509_cert"; + authors = [ + "RustCrypto Developers" + ]; + dependencies = [ + { + name = "const-oid"; + packageId = "const-oid"; + features = [ "db" ]; + } + { + name = "der"; + packageId = "der"; + features = [ "alloc" "derive" "flagset" "oid" ]; + } + { + name = "sha1"; + packageId = "sha1"; + optional = true; + } + { + name = "signature"; + packageId = "signature"; + optional = true; + features = [ "rand_core" ]; + } + { + name = "spki"; + packageId = "spki"; + features = [ "alloc" ]; + } + { + name = "tls_codec"; + packageId = "tls_codec"; + optional = true; + usesDefaultFeatures = false; + features = [ "derive" ]; + } + ]; + features = { + "arbitrary" = [ "dep:arbitrary" "std" "der/arbitrary" "spki/arbitrary" ]; + "builder" = [ "std" "sha1/default" "signature" ]; + "default" = [ "pem" "std" ]; + "pem" = [ "der/pem" "spki/pem" ]; + "sct" = [ "dep:tls_codec" ]; + "sha1" = [ "dep:sha1" ]; + "signature" = [ "dep:signature" ]; + "std" = [ "const-oid/std" "der/std" "spki/std" "tls_codec?/std" ]; + }; + resolvedDefaultFeatures = [ "builder" "default" "pem" "sha1" "signature" "std" ]; + }; + "xml" = rec { + crateName = "xml"; + version = "1.0.0"; + edition = "2021"; + sha256 = "0db4s3j50gkqkwpmyz9mfgrvifwgb4mzihkgnrm8hgg77alf1rkj"; authors = [ "Vladimir Matveev " + "Kornel (https://github.com/kornelski)" ]; }; @@ -16208,9 +17890,9 @@ rec { }; "zerocopy" = rec { crateName = "zerocopy"; - version = "0.8.26"; + version = "0.8.27"; edition = "2021"; - sha256 = "0bvsj0qzq26zc6nlrm3z10ihvjspyngs7n0jw1fz031i7h6xsf8h"; + sha256 = "0b1870gf2zzlckca69v2k4mqwmf8yh2li37qldnzvvd3by58g508"; authors = [ "Joshua Liebow-Feeser " "Jack Wrenn " @@ -16244,9 +17926,9 @@ rec { }; "zerocopy-derive" = rec { crateName = "zerocopy-derive"; - version = "0.8.26"; + version = "0.8.27"; edition = "2021"; - sha256 = "10aiywi5qkha0mpsnb1zjwi44wl2rhdncaf3ykbp4i9nqm65pkwy"; + sha256 = "0c9qrylm2p55dvaplxsl24ma48add9qk4y0d6kjbkllaqvcvill8"; procMacro = true; libName = "zerocopy_derive"; authors = [ @@ -16331,6 +18013,13 @@ rec { authors = [ "The RustCrypto Project Developers" ]; + dependencies = [ + { + name = "zeroize_derive"; + packageId = "zeroize_derive"; + optional = true; + } + ]; features = { "default" = [ "alloc" ]; "derive" = [ "zeroize_derive" ]; @@ -16338,7 +18027,33 @@ rec { "std" = [ "alloc" ]; "zeroize_derive" = [ "dep:zeroize_derive" ]; }; - resolvedDefaultFeatures = [ "alloc" "default" ]; + resolvedDefaultFeatures = [ "alloc" "default" "zeroize_derive" ]; + }; + "zeroize_derive" = rec { + crateName = "zeroize_derive"; + version = "1.4.2"; + edition = "2021"; + sha256 = "0sczjlqjdmrp3wn62g7mw6p438c9j4jgp2f9zamd56991mdycdnf"; + procMacro = true; + authors = [ + "The RustCrypto Project Developers" + ]; + dependencies = [ + { + name = "proc-macro2"; + packageId = "proc-macro2"; + } + { + name = "quote"; + packageId = "quote"; + } + { + name = "syn"; + packageId = "syn 2.0.106"; + features = [ "full" "extra-traits" "visit" ]; + } + ]; + }; "zerotrie" = rec { crateName = "zerotrie"; diff --git a/Cargo.toml b/Cargo.toml index 32b5ee66..12b87324 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,7 +11,7 @@ edition = "2021" repository = "https://github.com/stackabletech/secret-operator" [workspace.dependencies] -stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", features = ["time", "telemetry", "versioned"], tag = "stackable-operator-0.96.0" } +stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", features = ["time", "telemetry", "versioned", "webhook"], tag = "stackable-operator-0.97.0" } krb5 = { git = "https://github.com/stackabletech/krb5-rs.git", tag = "v0.1.0" } anyhow = "1.0" @@ -23,8 +23,13 @@ const_format = "0.2.34" futures = { version = "0.3", features = ["compat"] } h2 = "0.4" hex = "0.4" -kube-runtime = { version = "1.0", features = ["unstable-runtime-stream-control"] } -ldap3 = { version = "0.11", default-features = false, features = ["gssapi", "tls"] } +kube-runtime = { version = "2.0.1", features = [ + "unstable-runtime-stream-control", +] } +ldap3 = { version = "0.11", default-features = false, features = [ + "gssapi", + "tls", +] } libc = "0.2" native-tls = "0.2" openssl = "0.10" @@ -54,5 +59,7 @@ uuid = { version = "1.10.0", features = ["v4"] } yasna = "0.5" [patch."https://github.com/stackabletech/operator-rs.git"] +stackable-operator = { path = "../operator-rs/crates/stackable-operator" } +# stackable-operator = { git = "https://github.com/stackabletech//operator-rs.git", branch = "feat/crd-maintenance" } # stackable-operator = { path = "../operator-rs/crates/stackable-operator" } # stackable-operator = { git = "https://github.com/stackabletech//operator-rs.git", branch = "main" } diff --git a/Makefile b/Makefile index 96e1030d..9afd741a 100644 --- a/Makefile +++ b/Makefile @@ -105,7 +105,6 @@ compile-chart: version crds config chart-clean: rm -rf "deploy/helm/${OPERATOR_NAME}/configs" - rm -rf "deploy/helm/${OPERATOR_NAME}/crds" version: cat "deploy/helm/${OPERATOR_NAME}/Chart.yaml" | yq ".version = \"${VERSION}\" | .appVersion = \"${VERSION}\"" > "deploy/helm/${OPERATOR_NAME}/Chart.yaml.new" @@ -117,9 +116,11 @@ config: cp -r deploy/config-spec/* "deploy/helm/${OPERATOR_NAME}/configs";\ fi +# We generate a crds.yaml, so that the effect of code changes are visible. +# The operator will take care of the CRD rollout itself. crds: - mkdir -p deploy/helm/"${OPERATOR_NAME}"/crds - cargo run --bin stackable-"${OPERATOR_NAME}" -- crd | yq eval '.metadata.annotations["helm.sh/resource-policy"]="keep"' - > "deploy/helm/${OPERATOR_NAME}/crds/crds.yaml" + mkdir -p extra + cargo run --bin stackable-"${OPERATOR_NAME}" -- crd > extra/crds.yaml chart-lint: compile-chart docker run -it -v $(shell pwd):/build/helm-charts -w /build/helm-charts quay.io/helmpack/chart-testing:v3.5.0 ct lint --config deploy/helm/ct.yaml diff --git a/Tiltfile b/Tiltfile index fb84bcc0..0718fcc5 100644 --- a/Tiltfile +++ b/Tiltfile @@ -17,27 +17,17 @@ custom_build( outputs_image_ref_to='result/ref', ) -# Load the latest CRDs from Nix -watch_file('result') -if os.path.exists('result'): - k8s_yaml('result/crds.yaml') - # We need to set the correct image annotation on the operator Deployment to use e.g. # oci.stackable.tech/sandbox/opa-operator:7y19m3d8clwxlv34v5q2x4p7v536s00g instead of # oci.stackable.tech/sandbox/opa-operator:0.0.0-dev (which does not exist) k8s_kind('Deployment', image_json_path='{.spec.template.metadata.annotations.internal\\.stackable\\.tech/image}') -# Exclude stale CRDs from Helm chart, and apply the rest -helm_crds, helm_non_crds = filter_yaml( - helm( - 'deploy/helm/' + operator_name, - name=operator_name, - namespace="stackable-operators", - set=[ - 'image.repository=' + registry + '/' + operator_name, - ], - ), - api_version = "^apiextensions\\.k8s\\.io/.*$", - kind = "^CustomResourceDefinition$", -) -k8s_yaml(helm_non_crds) +k8s_yaml(helm( + 'deploy/helm/' + operator_name, + name=operator_name, + namespace="stackable-operators", + set=[ + 'image.repository=' + registry + '/' + operator_name, + 'telemetry.consoleLog.level=info', + ], +)) diff --git a/crate-hashes.json b/crate-hashes.json index 12b48568..79c12292 100644 --- a/crate-hashes.json +++ b/crate-hashes.json @@ -1,13 +1,15 @@ { "git+https://github.com/stackabletech/krb5-rs.git?tag=v0.1.0#krb5-sys@0.1.0": "148zr0q04163hpirkrff5q7cbxqgwzzxh0091zr4g23x7l64jh39", "git+https://github.com/stackabletech/krb5-rs.git?tag=v0.1.0#krb5@0.1.0": "148zr0q04163hpirkrff5q7cbxqgwzzxh0091zr4g23x7l64jh39", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.96.0#k8s-version@0.1.3": "05xhfz0bd09095ljkaj950r80bchdb202d8nka95cq356y4wha4c", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.96.0#stackable-operator-derive@0.3.1": "05xhfz0bd09095ljkaj950r80bchdb202d8nka95cq356y4wha4c", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.96.0#stackable-operator@0.96.0": "05xhfz0bd09095ljkaj950r80bchdb202d8nka95cq356y4wha4c", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.96.0#stackable-shared@0.0.2": "05xhfz0bd09095ljkaj950r80bchdb202d8nka95cq356y4wha4c", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.96.0#stackable-telemetry@0.6.1": "05xhfz0bd09095ljkaj950r80bchdb202d8nka95cq356y4wha4c", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.96.0#stackable-versioned-macros@0.8.1": "05xhfz0bd09095ljkaj950r80bchdb202d8nka95cq356y4wha4c", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.96.0#stackable-versioned@0.8.1": "05xhfz0bd09095ljkaj950r80bchdb202d8nka95cq356y4wha4c", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.97.0#k8s-version@0.1.3": "1ags7i3a0l5w5dcpfp6zzp4a172bp1jr9wkma0f1byjbk56q8bi0", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.97.0#stackable-certs@0.4.0": "1ags7i3a0l5w5dcpfp6zzp4a172bp1jr9wkma0f1byjbk56q8bi0", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.97.0#stackable-operator-derive@0.3.1": "1ags7i3a0l5w5dcpfp6zzp4a172bp1jr9wkma0f1byjbk56q8bi0", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.97.0#stackable-operator@0.97.0": "1ags7i3a0l5w5dcpfp6zzp4a172bp1jr9wkma0f1byjbk56q8bi0", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.97.0#stackable-shared@0.0.2": "1ags7i3a0l5w5dcpfp6zzp4a172bp1jr9wkma0f1byjbk56q8bi0", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.97.0#stackable-telemetry@0.6.1": "1ags7i3a0l5w5dcpfp6zzp4a172bp1jr9wkma0f1byjbk56q8bi0", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.97.0#stackable-versioned-macros@0.8.2": "1ags7i3a0l5w5dcpfp6zzp4a172bp1jr9wkma0f1byjbk56q8bi0", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.97.0#stackable-versioned@0.8.2": "1ags7i3a0l5w5dcpfp6zzp4a172bp1jr9wkma0f1byjbk56q8bi0", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.97.0#stackable-webhook@0.6.0": "1ags7i3a0l5w5dcpfp6zzp4a172bp1jr9wkma0f1byjbk56q8bi0", "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-telemetry-0.6.1#stackable-telemetry@0.6.1": "0hiymhr40ix4jv9dmvp5d009xs6v0frvllr2xkf5mw43rcg44mgd", "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/secret-operator/crds/crds.yaml b/deploy/helm/secret-operator/crds/crds.yaml deleted file mode 100644 index cfa8b732..00000000 --- a/deploy/helm/secret-operator/crds/crds.yaml +++ /dev/null @@ -1,419 +0,0 @@ ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - name: secretclasses.secrets.stackable.tech - annotations: - helm.sh/resource-policy: keep -spec: - group: secrets.stackable.tech - names: - categories: [] - kind: SecretClass - plural: secretclasses - shortNames: [] - singular: secretclass - scope: Cluster - versions: - - additionalPrinterColumns: [] - name: v1alpha1 - schema: - openAPIV3Schema: - description: Auto-generated derived type for SecretClassSpec via `CustomResource` - properties: - spec: - description: A [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass) is a cluster-global Kubernetes resource that defines a category of secrets that the Secret Operator knows how to provision. - properties: - backend: - description: Each SecretClass is associated with a single [backend](https://docs.stackable.tech/home/nightly/secret-operator/secretclass#backend), which dictates the mechanism for issuing that kind of Secret. - oneOf: - - required: - - k8sSearch - - required: - - autoTls - - required: - - experimentalCertManager - - required: - - kerberosKeytab - properties: - autoTls: - description: |- - The [`autoTls` backend](https://docs.stackable.tech/home/nightly/secret-operator/secretclass#backend-autotls) issues a TLS certificate signed by the Secret Operator. The certificate authority can be provided by the administrator, or managed automatically by the Secret Operator. - - A new certificate and key pair will be generated and signed for each Pod, keys or certificates are never reused. - properties: - additionalTrustRoots: - default: [] - description: Additional trust roots which are added to the provided `ca.crt` file. - items: - oneOf: - - required: - - configMap - - required: - - secret - properties: - configMap: - description: 'Reference (name and namespace) to a Kubernetes ConfigMap object where additional certificates are stored. The extensions of the keys denote its contents: A key suffixed with `.crt` contains a stack of base64 encoded DER certificates, a key suffixed with `.der` contains a binary DER certificate.' - properties: - name: - description: Name of the ConfigMap being referred to. - type: string - namespace: - description: Namespace of the ConfigMap being referred to. - type: string - required: - - name - - namespace - type: object - secret: - description: 'Reference (name and namespace) to a Kubernetes Secret object where additional certificates are stored. The extensions of the keys denote its contents: A key suffixed with `.crt` contains a stack of base64 encoded DER certificates, a key suffixed with `.der` contains a binary DER certificate.' - properties: - name: - description: Name of the Secret being referred to. - type: string - namespace: - description: Namespace of the Secret being referred to. - type: string - required: - - name - - namespace - type: object - type: object - type: array - ca: - description: Configures the certificate authority used to issue Pod certificates. - properties: - autoGenerate: - default: false - description: Whether the certificate authority should be managed by Secret Operator, including being generated if it does not already exist. - type: boolean - caCertificateLifetime: - default: 365d - description: |- - The lifetime of each generated certificate authority. - - Should always be more than double `maxCertificateLifetime`. - - If `autoGenerate: true` then the Secret Operator will prepare a new CA certificate the old CA approaches expiration. If `autoGenerate: false` then the Secret Operator will log a warning instead. - type: string - keyGeneration: - default: - rsa: - length: 2048 - description: The algorithm used to generate a key pair and required configuration settings. Currently only RSA and a key length of 2048, 3072 or 4096 bits can be configured. - oneOf: - - required: - - rsa - properties: - rsa: - properties: - length: - description: The amount of bits used for generating the RSA keypair. Currently, `2048`, `3072` and `4096` are supported. Defaults to `2048` bits. - enum: - - 2048 - - 3072 - - 4096 - type: integer - required: - - length - type: object - type: object - secret: - description: Reference (name and namespace) to a Kubernetes Secret object where the CA certificate and key is stored in the keys `ca.crt` and `ca.key` respectively. - properties: - name: - description: Name of the Secret being referred to. - type: string - namespace: - description: Namespace of the Secret being referred to. - type: string - required: - - name - - namespace - type: object - required: - - secret - type: object - maxCertificateLifetime: - default: 15d - description: Maximum lifetime the created certificates are allowed to have. In case consumers request a longer lifetime than allowed by this setting, the lifetime will be the minimum of both, so this setting takes precedence. The default value is 15 days. - type: string - required: - - ca - type: object - experimentalCertManager: - description: |- - The [`experimentalCertManager` backend][1] injects a TLS certificate issued by [cert-manager](https://cert-manager.io/). - - A new certificate will be requested the first time it is used by a Pod, it will be reused after that (subject to cert-manager renewal rules). - - [1]: https://docs.stackable.tech/home/nightly/secret-operator/secretclass#backend-certmanager - properties: - defaultCertificateLifetime: - default: 1d - description: |- - The default lifetime of certificates. - - Defaults to 1 day. This may need to be increased for external issuers that impose rate limits (such as Let's Encrypt). - type: string - issuer: - description: A reference to the cert-manager issuer that the certificates should be requested from. - properties: - kind: - description: |- - The kind of the issuer, Issuer or ClusterIssuer. - - If Issuer then it must be in the same namespace as the Pods using it. - enum: - - Issuer - - ClusterIssuer - type: string - name: - description: The name of the issuer. - type: string - required: - - kind - - name - type: object - keyGeneration: - default: - rsa: - length: 2048 - description: The algorithm used to generate a key pair and required configuration settings. Currently only RSA and a key length of 2048, 3072 or 4096 bits can be configured. - oneOf: - - required: - - rsa - properties: - rsa: - properties: - length: - description: The amount of bits used for generating the RSA keypair. Currently, `2048`, `3072` and `4096` are supported. Defaults to `2048` bits. - enum: - - 2048 - - 3072 - - 4096 - type: integer - required: - - length - type: object - type: object - required: - - issuer - type: object - k8sSearch: - description: The [`k8sSearch` backend](https://docs.stackable.tech/home/nightly/secret-operator/secretclass#backend-k8ssearch) can be used to mount Secrets across namespaces into Pods. - properties: - searchNamespace: - description: Configures the namespace searched for Secret objects. - oneOf: - - required: - - pod - - required: - - name - properties: - name: - description: The Secret objects are located in a single global namespace. Should be used for secrets that are provisioned by the cluster administrator. - type: string - pod: - description: The Secret objects are located in the same namespace as the Pod object. Should be used for Secrets that are provisioned by the application administrator. - type: object - type: object - trustStoreConfigMapName: - description: |- - Name of a ConfigMap that contains the information required to validate against this SecretClass. - - Resolved relative to `search_namespace`. - - Required to request a TrustStore for this SecretClass. - nullable: true - type: string - required: - - searchNamespace - type: object - kerberosKeytab: - description: The [`kerberosKeytab` backend](https://docs.stackable.tech/home/nightly/secret-operator/secretclass#backend-kerberoskeytab) creates a Kerberos keytab file for a selected realm. The Kerberos KDC and administrator credentials must be provided by the administrator. - properties: - admin: - description: Kerberos admin configuration settings. - oneOf: - - required: - - mit - - required: - - activeDirectory - properties: - activeDirectory: - description: Credentials should be provisioned in a Microsoft Active Directory domain. - properties: - experimentalGenerateSamAccountName: - description: Allows samAccountName generation for new accounts to be customized. Note that setting this field (even if empty) makes the Secret Operator take over the generation duty from the domain controller. - nullable: true - properties: - prefix: - default: '' - description: A prefix to be prepended to generated samAccountNames. - type: string - totalLength: - default: 20 - description: |- - The total length of generated samAccountNames, _including_ `prefix`. Must be larger than the length of `prefix`, but at most `20`. - - Note that this should be as large as possible, to minimize the risk of collisions. - format: uint8 - minimum: 0.0 - type: integer - type: object - ldapServer: - description: An AD LDAP server, such as the AD Domain Controller. This must match the server’s FQDN, or GSSAPI authentication will fail. - type: string - ldapTlsCaSecret: - description: Reference (name and namespace) to a Kubernetes Secret object containing the TLS CA (in `ca.crt`) that the LDAP server’s certificate should be authenticated against. - properties: - name: - description: Name of the Secret being referred to. - type: string - namespace: - description: Namespace of the Secret being referred to. - type: string - required: - - name - - namespace - type: object - passwordCacheSecret: - description: Reference (name and namespace) to a Kubernetes Secret object where workload passwords will be stored. This must not be accessible to end users. - properties: - name: - description: Name of the Secret being referred to. - type: string - namespace: - description: Namespace of the Secret being referred to. - type: string - required: - - name - - namespace - type: object - schemaDistinguishedName: - description: The root Distinguished Name (DN) for AD-managed schemas, typically `CN=Schema,CN=Configuration,{domain_dn}`. - type: string - userDistinguishedName: - description: The root Distinguished Name (DN) where service accounts should be provisioned, typically `CN=Users,{domain_dn}`. - type: string - required: - - ldapServer - - ldapTlsCaSecret - - passwordCacheSecret - - schemaDistinguishedName - - userDistinguishedName - type: object - mit: - description: Credentials should be provisioned in a MIT Kerberos Admin Server. - properties: - kadminServer: - description: The hostname of the Kerberos Admin Server. This should be provided by the Kerberos administrator. - type: string - required: - - kadminServer - type: object - type: object - adminKeytabSecret: - description: Reference (`name` and `namespace`) to a K8s Secret object where a keytab with administrative privileges is stored in the key `keytab`. - properties: - name: - description: Name of the Secret being referred to. - type: string - namespace: - description: Namespace of the Secret being referred to. - type: string - required: - - name - - namespace - type: object - adminPrincipal: - description: The admin principal. - type: string - kdc: - description: The hostname of the Kerberos Key Distribution Center (KDC). This should be provided by the Kerberos administrator. - type: string - realmName: - description: The name of the Kerberos realm. This should be provided by the Kerberos administrator. - pattern: ^[-.a-zA-Z0-9]+$ - type: string - required: - - admin - - adminKeytabSecret - - adminPrincipal - - kdc - - realmName - type: object - type: object - required: - - backend - type: object - required: - - spec - title: SecretClass - type: object - served: true - storage: true - subresources: {} ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - name: truststores.secrets.stackable.tech - annotations: - helm.sh/resource-policy: keep -spec: - group: secrets.stackable.tech - names: - categories: [] - kind: TrustStore - plural: truststores - shortNames: [] - singular: truststore - scope: Namespaced - versions: - - additionalPrinterColumns: [] - name: v1alpha1 - schema: - openAPIV3Schema: - description: Auto-generated derived type for TrustStoreSpec via `CustomResource` - properties: - spec: - description: |- - A [TrustStore](https://docs.stackable.tech/home/nightly/secret-operator/truststore) requests information about how to validate secrets issued by a [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass). - - The requested information is written to a ConfigMap with the same name as the TrustStore. - properties: - format: - description: The [format](https://docs.stackable.tech/home/nightly/secret-operator/secretclass#format) that the data should be converted into. - enum: - - tls-pem - - tls-pkcs12 - - kerberos - nullable: true - type: string - secretClassName: - description: The name of the SecretClass that the request concerns. - type: string - targetKind: - default: ConfigMap - description: |- - Which Kubernetes kind should be used to output the requested information to. - - The trust information (such as a `ca.crt`) can be considered public information, so we put it in a `ConfigMap` by default. However, some tools might require it to be placed in a `Secret`, so we also support that. - - Can be either `ConfigMap` or `Secret`, defaults to `ConfigMap`. - enum: - - Secret - - ConfigMap - type: string - required: - - secretClassName - type: object - required: - - spec - title: TrustStore - type: object - served: true - storage: true - subresources: {} diff --git a/deploy/helm/secret-operator/templates/roles.yaml b/deploy/helm/secret-operator/templates/roles.yaml index 630e9ab6..29e6e90c 100644 --- a/deploy/helm/secret-operator/templates/roles.yaml +++ b/deploy/helm/secret-operator/templates/roles.yaml @@ -43,6 +43,13 @@ metadata: labels: {{- include "operator.labels" . | nindent 4 }} rules: + # Required to maintain the CRD. The operator needs to do this, as it needs to enter e.g. it's + # generated certificate in the conversion webhook. + - apiGroups: [apiextensions.k8s.io] + resources: [customresourcedefinitions] + verbs: + - create + - patch - apiGroups: - "" resources: @@ -115,6 +122,8 @@ rules: - secretclasses - truststores verbs: + - create + - patch - get - watch - list diff --git a/extra/crds.yaml b/extra/crds.yaml new file mode 100644 index 00000000..e175dc24 --- /dev/null +++ b/extra/crds.yaml @@ -0,0 +1,889 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: secretclasses.secrets.stackable.tech +spec: + group: secrets.stackable.tech + names: + categories: [] + kind: SecretClass + plural: secretclasses + shortNames: [] + singular: secretclass + scope: Cluster + versions: + - additionalPrinterColumns: [] + name: v1alpha2 + schema: + openAPIV3Schema: + description: Auto-generated derived type for SecretClassSpec via `CustomResource` + properties: + spec: + description: |- + A [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass) is a cluster-global Kubernetes resource + that defines a category of secrets that the Secret Operator knows how to provision. + properties: + backend: + description: |- + Each SecretClass is associated with a single + [backend](https://docs.stackable.tech/home/nightly/secret-operator/secretclass#backend), + which dictates the mechanism for issuing that kind of Secret. + oneOf: + - required: + - k8sSearch + - required: + - autoTls + - required: + - experimentalCertManager + - required: + - kerberosKeytab + properties: + autoTls: + description: |- + The [`autoTls` backend](https://docs.stackable.tech/home/nightly/secret-operator/secretclass#backend-autotls) + issues a TLS certificate signed by the Secret Operator. + The certificate authority can be provided by the administrator, or managed automatically by the Secret Operator. + + A new certificate and key pair will be generated and signed for each Pod, keys or certificates are never reused. + properties: + additionalTrustRoots: + default: [] + description: Additional trust roots which are added to the provided `ca.crt` file. + items: + oneOf: + - required: + - configMap + - required: + - secret + properties: + configMap: + description: |- + Reference (name and namespace) to a Kubernetes ConfigMap object where additional + certificates are stored. + The extensions of the keys denote its contents: A key suffixed with `.crt` contains a stack + of base64 encoded DER certificates, a key suffixed with `.der` contains a binary DER + certificate. + properties: + name: + description: Name of the ConfigMap being referred to. + type: string + namespace: + description: Namespace of the ConfigMap being referred to. + type: string + required: + - name + - namespace + type: object + secret: + description: |- + Reference (name and namespace) to a Kubernetes Secret object where additional certificates + are stored. + The extensions of the keys denote its contents: A key suffixed with `.crt` contains a stack + of base64 encoded DER certificates, a key suffixed with `.der` contains a binary DER + certificate. + properties: + name: + description: Name of the Secret being referred to. + type: string + namespace: + description: Namespace of the Secret being referred to. + type: string + required: + - name + - namespace + type: object + type: object + type: array + ca: + description: Configures the certificate authority used to issue Pod certificates. + properties: + autoGenerate: + default: false + description: |- + Whether the certificate authority should be managed by Secret Operator, including being generated + if it does not already exist. + type: boolean + caCertificateLifetime: + default: 365d + description: |- + The lifetime of each generated certificate authority. + + Should always be more than double `maxCertificateLifetime`. + + If `autoGenerate: true` then the Secret Operator will prepare a new CA certificate the old CA approaches expiration. + If `autoGenerate: false` then the Secret Operator will log a warning instead. + type: string + keyGeneration: + default: + rsa: + length: 2048 + description: |- + The algorithm used to generate a key pair and required configuration settings. + Currently only RSA and a key length of 2048, 3072 or 4096 bits can be configured. + oneOf: + - required: + - rsa + properties: + rsa: + properties: + length: + description: |- + The amount of bits used for generating the RSA keypair. + Currently, `2048`, `3072` and `4096` are supported. Defaults to `2048` bits. + enum: + - 2048 + - 3072 + - 4096 + type: integer + required: + - length + type: object + type: object + secret: + description: |- + Reference (name and namespace) to a Kubernetes Secret object where the CA certificate + and key is stored in the keys `ca.crt` and `ca.key` respectively. + properties: + name: + description: Name of the Secret being referred to. + type: string + namespace: + description: Namespace of the Secret being referred to. + type: string + required: + - name + - namespace + type: object + required: + - secret + type: object + maxCertificateLifetime: + default: 15d + description: |- + Maximum lifetime the created certificates are allowed to have. + In case consumers request a longer lifetime than allowed by this setting, + the lifetime will be the minimum of both, so this setting takes precedence. + The default value is 15 days. + type: string + required: + - ca + type: object + experimentalCertManager: + description: |- + The [`experimentalCertManager` backend][1] injects a TLS certificate issued + by [cert-manager](https://cert-manager.io/). + + A new certificate will be requested the first time it is used by a Pod, it + will be reused after that (subject to cert-manager renewal rules). + + [1]: https://docs.stackable.tech/home/nightly/secret-operator/secretclass#backend-certmanager + properties: + defaultCertificateLifetime: + default: 1d + description: |- + The default lifetime of certificates. + + Defaults to 1 day. This may need to be increased for external issuers that impose rate limits (such as Let's Encrypt). + type: string + issuer: + description: A reference to the cert-manager issuer that the certificates should be requested from. + properties: + kind: + description: |- + The kind of the issuer, Issuer or ClusterIssuer. + + If Issuer then it must be in the same namespace as the Pods using it. + enum: + - Issuer + - ClusterIssuer + type: string + name: + description: The name of the issuer. + type: string + required: + - kind + - name + type: object + keyGeneration: + default: + rsa: + length: 2048 + description: |- + The algorithm used to generate a key pair and required configuration settings. + Currently only RSA and a key length of 2048, 3072 or 4096 bits can be configured. + oneOf: + - required: + - rsa + properties: + rsa: + properties: + length: + description: |- + The amount of bits used for generating the RSA keypair. + Currently, `2048`, `3072` and `4096` are supported. Defaults to `2048` bits. + enum: + - 2048 + - 3072 + - 4096 + type: integer + required: + - length + type: object + type: object + required: + - issuer + type: object + k8sSearch: + description: |- + The [`k8sSearch` backend](https://docs.stackable.tech/home/nightly/secret-operator/secretclass#backend-k8ssearch) + can be used to mount Secrets across namespaces into Pods. + properties: + searchNamespace: + description: Configures the namespace searched for Secret objects. + oneOf: + - required: + - pod + - required: + - name + properties: + name: + description: |- + The Secret objects are located in a single global namespace. + Should be used for secrets that are provisioned by the cluster administrator. + type: string + pod: + description: |- + The Secret objects are located in the same namespace as the Pod object. + Should be used for Secrets that are provisioned by the application administrator. + type: object + type: object + trustStoreConfigMapName: + description: |- + Name of a ConfigMap that contains the information required to validate against this SecretClass. + + Resolved relative to `search_namespace`. + + Required to request a TrustStore for this SecretClass. + nullable: true + type: string + required: + - searchNamespace + type: object + kerberosKeytab: + description: |- + The [`kerberosKeytab` backend](https://docs.stackable.tech/home/nightly/secret-operator/secretclass#backend-kerberoskeytab) + creates a Kerberos keytab file for a selected realm. + The Kerberos KDC and administrator credentials must be provided by the administrator. + properties: + admin: + description: Kerberos admin configuration settings. + oneOf: + - required: + - mit + - required: + - activeDirectory + properties: + activeDirectory: + description: Credentials should be provisioned in a Microsoft Active Directory domain. + properties: + generateSamAccountName: + description: |- + Allows samAccountName generation for new accounts to be customized. + Note that setting this field (even if empty) makes the Secret Operator take + over the generation duty from the domain controller. + nullable: true + properties: + prefix: + default: '' + description: A prefix to be prepended to generated samAccountNames. + type: string + totalLength: + default: 20 + description: |- + The total length of generated samAccountNames, _including_ `prefix`. + Must be larger than the length of `prefix`, but at most `20`. + + Note that this should be as large as possible, to minimize the risk of collisions. + format: uint8 + maximum: 255.0 + minimum: 0.0 + type: integer + type: object + ldapServer: + description: |- + An AD LDAP server, such as the AD Domain Controller. + This must match the server’s FQDN, or GSSAPI authentication will fail. + type: string + ldapTlsCaSecret: + description: |- + Reference (name and namespace) to a Kubernetes Secret object containing + the TLS CA (in `ca.crt`) that the LDAP server’s certificate should be authenticated against. + properties: + name: + description: Name of the Secret being referred to. + type: string + namespace: + description: Namespace of the Secret being referred to. + type: string + required: + - name + - namespace + type: object + passwordCacheSecret: + description: |- + Reference (name and namespace) to a Kubernetes Secret object where workload + passwords will be stored. This must not be accessible to end users. + properties: + name: + description: Name of the Secret being referred to. + type: string + namespace: + description: Namespace of the Secret being referred to. + type: string + required: + - name + - namespace + type: object + schemaDistinguishedName: + description: |- + The root Distinguished Name (DN) for AD-managed schemas, + typically `CN=Schema,CN=Configuration,{domain_dn}`. + type: string + userDistinguishedName: + description: |- + The root Distinguished Name (DN) where service accounts should be provisioned, + typically `CN=Users,{domain_dn}`. + type: string + required: + - ldapServer + - ldapTlsCaSecret + - passwordCacheSecret + - schemaDistinguishedName + - userDistinguishedName + type: object + mit: + description: Credentials should be provisioned in a MIT Kerberos Admin Server. + properties: + kadminServer: + description: |- + The hostname of the Kerberos Admin Server. + This should be provided by the Kerberos administrator. + type: string + required: + - kadminServer + type: object + type: object + adminKeytabSecret: + description: |- + Reference (`name` and `namespace`) to a K8s Secret object where a + keytab with administrative privileges is stored in the key `keytab`. + properties: + name: + description: Name of the Secret being referred to. + type: string + namespace: + description: Namespace of the Secret being referred to. + type: string + required: + - name + - namespace + type: object + adminPrincipal: + description: The admin principal. + type: string + kdc: + description: |- + The hostname of the Kerberos Key Distribution Center (KDC). + This should be provided by the Kerberos administrator. + type: string + realmName: + description: The name of the Kerberos realm. This should be provided by the Kerberos administrator. + type: string + required: + - admin + - adminKeytabSecret + - adminPrincipal + - kdc + - realmName + type: object + type: object + required: + - backend + type: object + required: + - spec + title: SecretClass + type: object + served: true + storage: true + subresources: {} + - additionalPrinterColumns: [] + name: v1alpha1 + schema: + openAPIV3Schema: + description: Auto-generated derived type for SecretClassSpec via `CustomResource` + properties: + spec: + description: |- + A [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass) is a cluster-global Kubernetes resource + that defines a category of secrets that the Secret Operator knows how to provision. + properties: + backend: + description: |- + Each SecretClass is associated with a single + [backend](https://docs.stackable.tech/home/nightly/secret-operator/secretclass#backend), + which dictates the mechanism for issuing that kind of Secret. + oneOf: + - required: + - k8sSearch + - required: + - autoTls + - required: + - experimentalCertManager + - required: + - kerberosKeytab + properties: + autoTls: + description: |- + The [`autoTls` backend](https://docs.stackable.tech/home/nightly/secret-operator/secretclass#backend-autotls) + issues a TLS certificate signed by the Secret Operator. + The certificate authority can be provided by the administrator, or managed automatically by the Secret Operator. + + A new certificate and key pair will be generated and signed for each Pod, keys or certificates are never reused. + properties: + additionalTrustRoots: + default: [] + description: Additional trust roots which are added to the provided `ca.crt` file. + items: + oneOf: + - required: + - configMap + - required: + - secret + properties: + configMap: + description: |- + Reference (name and namespace) to a Kubernetes ConfigMap object where additional + certificates are stored. + The extensions of the keys denote its contents: A key suffixed with `.crt` contains a stack + of base64 encoded DER certificates, a key suffixed with `.der` contains a binary DER + certificate. + properties: + name: + description: Name of the ConfigMap being referred to. + type: string + namespace: + description: Namespace of the ConfigMap being referred to. + type: string + required: + - name + - namespace + type: object + secret: + description: |- + Reference (name and namespace) to a Kubernetes Secret object where additional certificates + are stored. + The extensions of the keys denote its contents: A key suffixed with `.crt` contains a stack + of base64 encoded DER certificates, a key suffixed with `.der` contains a binary DER + certificate. + properties: + name: + description: Name of the Secret being referred to. + type: string + namespace: + description: Namespace of the Secret being referred to. + type: string + required: + - name + - namespace + type: object + type: object + type: array + ca: + description: Configures the certificate authority used to issue Pod certificates. + properties: + autoGenerate: + default: false + description: |- + Whether the certificate authority should be managed by Secret Operator, including being generated + if it does not already exist. + type: boolean + caCertificateLifetime: + default: 365d + description: |- + The lifetime of each generated certificate authority. + + Should always be more than double `maxCertificateLifetime`. + + If `autoGenerate: true` then the Secret Operator will prepare a new CA certificate the old CA approaches expiration. + If `autoGenerate: false` then the Secret Operator will log a warning instead. + type: string + keyGeneration: + default: + rsa: + length: 2048 + description: |- + The algorithm used to generate a key pair and required configuration settings. + Currently only RSA and a key length of 2048, 3072 or 4096 bits can be configured. + oneOf: + - required: + - rsa + properties: + rsa: + properties: + length: + description: |- + The amount of bits used for generating the RSA keypair. + Currently, `2048`, `3072` and `4096` are supported. Defaults to `2048` bits. + enum: + - 2048 + - 3072 + - 4096 + type: integer + required: + - length + type: object + type: object + secret: + description: |- + Reference (name and namespace) to a Kubernetes Secret object where the CA certificate + and key is stored in the keys `ca.crt` and `ca.key` respectively. + properties: + name: + description: Name of the Secret being referred to. + type: string + namespace: + description: Namespace of the Secret being referred to. + type: string + required: + - name + - namespace + type: object + required: + - secret + type: object + maxCertificateLifetime: + default: 15d + description: |- + Maximum lifetime the created certificates are allowed to have. + In case consumers request a longer lifetime than allowed by this setting, + the lifetime will be the minimum of both, so this setting takes precedence. + The default value is 15 days. + type: string + required: + - ca + type: object + experimentalCertManager: + description: |- + The [`experimentalCertManager` backend][1] injects a TLS certificate issued + by [cert-manager](https://cert-manager.io/). + + A new certificate will be requested the first time it is used by a Pod, it + will be reused after that (subject to cert-manager renewal rules). + + [1]: https://docs.stackable.tech/home/nightly/secret-operator/secretclass#backend-certmanager + properties: + defaultCertificateLifetime: + default: 1d + description: |- + The default lifetime of certificates. + + Defaults to 1 day. This may need to be increased for external issuers that impose rate limits (such as Let's Encrypt). + type: string + issuer: + description: A reference to the cert-manager issuer that the certificates should be requested from. + properties: + kind: + description: |- + The kind of the issuer, Issuer or ClusterIssuer. + + If Issuer then it must be in the same namespace as the Pods using it. + enum: + - Issuer + - ClusterIssuer + type: string + name: + description: The name of the issuer. + type: string + required: + - kind + - name + type: object + keyGeneration: + default: + rsa: + length: 2048 + description: |- + The algorithm used to generate a key pair and required configuration settings. + Currently only RSA and a key length of 2048, 3072 or 4096 bits can be configured. + oneOf: + - required: + - rsa + properties: + rsa: + properties: + length: + description: |- + The amount of bits used for generating the RSA keypair. + Currently, `2048`, `3072` and `4096` are supported. Defaults to `2048` bits. + enum: + - 2048 + - 3072 + - 4096 + type: integer + required: + - length + type: object + type: object + required: + - issuer + type: object + k8sSearch: + description: |- + The [`k8sSearch` backend](https://docs.stackable.tech/home/nightly/secret-operator/secretclass#backend-k8ssearch) + can be used to mount Secrets across namespaces into Pods. + properties: + searchNamespace: + description: Configures the namespace searched for Secret objects. + oneOf: + - required: + - pod + - required: + - name + properties: + name: + description: |- + The Secret objects are located in a single global namespace. + Should be used for secrets that are provisioned by the cluster administrator. + type: string + pod: + description: |- + The Secret objects are located in the same namespace as the Pod object. + Should be used for Secrets that are provisioned by the application administrator. + type: object + type: object + trustStoreConfigMapName: + description: |- + Name of a ConfigMap that contains the information required to validate against this SecretClass. + + Resolved relative to `search_namespace`. + + Required to request a TrustStore for this SecretClass. + nullable: true + type: string + required: + - searchNamespace + type: object + kerberosKeytab: + description: |- + The [`kerberosKeytab` backend](https://docs.stackable.tech/home/nightly/secret-operator/secretclass#backend-kerberoskeytab) + creates a Kerberos keytab file for a selected realm. + The Kerberos KDC and administrator credentials must be provided by the administrator. + properties: + admin: + description: Kerberos admin configuration settings. + oneOf: + - required: + - mit + - required: + - activeDirectory + properties: + activeDirectory: + description: Credentials should be provisioned in a Microsoft Active Directory domain. + properties: + experimentalGenerateSamAccountName: + description: |- + Allows samAccountName generation for new accounts to be customized. + Note that setting this field (even if empty) makes the Secret Operator take + over the generation duty from the domain controller. + nullable: true + properties: + prefix: + default: '' + description: A prefix to be prepended to generated samAccountNames. + type: string + totalLength: + default: 20 + description: |- + The total length of generated samAccountNames, _including_ `prefix`. + Must be larger than the length of `prefix`, but at most `20`. + + Note that this should be as large as possible, to minimize the risk of collisions. + format: uint8 + maximum: 255.0 + minimum: 0.0 + type: integer + type: object + ldapServer: + description: |- + An AD LDAP server, such as the AD Domain Controller. + This must match the server’s FQDN, or GSSAPI authentication will fail. + type: string + ldapTlsCaSecret: + description: |- + Reference (name and namespace) to a Kubernetes Secret object containing + the TLS CA (in `ca.crt`) that the LDAP server’s certificate should be authenticated against. + properties: + name: + description: Name of the Secret being referred to. + type: string + namespace: + description: Namespace of the Secret being referred to. + type: string + required: + - name + - namespace + type: object + passwordCacheSecret: + description: |- + Reference (name and namespace) to a Kubernetes Secret object where workload + passwords will be stored. This must not be accessible to end users. + properties: + name: + description: Name of the Secret being referred to. + type: string + namespace: + description: Namespace of the Secret being referred to. + type: string + required: + - name + - namespace + type: object + schemaDistinguishedName: + description: |- + The root Distinguished Name (DN) for AD-managed schemas, + typically `CN=Schema,CN=Configuration,{domain_dn}`. + type: string + userDistinguishedName: + description: |- + The root Distinguished Name (DN) where service accounts should be provisioned, + typically `CN=Users,{domain_dn}`. + type: string + required: + - ldapServer + - ldapTlsCaSecret + - passwordCacheSecret + - schemaDistinguishedName + - userDistinguishedName + type: object + mit: + description: Credentials should be provisioned in a MIT Kerberos Admin Server. + properties: + kadminServer: + description: |- + The hostname of the Kerberos Admin Server. + This should be provided by the Kerberos administrator. + type: string + required: + - kadminServer + type: object + type: object + adminKeytabSecret: + description: |- + Reference (`name` and `namespace`) to a K8s Secret object where a + keytab with administrative privileges is stored in the key `keytab`. + properties: + name: + description: Name of the Secret being referred to. + type: string + namespace: + description: Namespace of the Secret being referred to. + type: string + required: + - name + - namespace + type: object + adminPrincipal: + description: The admin principal. + type: string + kdc: + description: |- + The hostname of the Kerberos Key Distribution Center (KDC). + This should be provided by the Kerberos administrator. + type: string + realmName: + description: The name of the Kerberos realm. This should be provided by the Kerberos administrator. + type: string + required: + - admin + - adminKeytabSecret + - adminPrincipal + - kdc + - realmName + type: object + type: object + required: + - backend + type: object + required: + - spec + title: SecretClass + type: object + served: true + storage: false + subresources: {} +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: truststores.secrets.stackable.tech +spec: + group: secrets.stackable.tech + names: + categories: [] + kind: TrustStore + plural: truststores + shortNames: [] + singular: truststore + scope: Namespaced + versions: + - additionalPrinterColumns: [] + name: v1alpha1 + schema: + openAPIV3Schema: + description: Auto-generated derived type for TrustStoreSpec via `CustomResource` + properties: + spec: + description: |- + A [TrustStore](https://docs.stackable.tech/home/nightly/secret-operator/truststore) requests information about how to + validate secrets issued by a [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass). + + The requested information is written to a ConfigMap with the same name as the TrustStore. + properties: + format: + description: The [format](https://docs.stackable.tech/home/nightly/secret-operator/secretclass#format) that the data should be converted into. + enum: + - tls-pem + - tls-pkcs12 + - kerberos + - null + nullable: true + type: string + secretClassName: + description: The name of the SecretClass that the request concerns. + type: string + targetKind: + default: ConfigMap + description: |- + Which Kubernetes kind should be used to output the requested information to. + + The trust information (such as a `ca.crt`) can be considered public information, so we put + it in a `ConfigMap` by default. However, some tools might require it to be placed in a + `Secret`, so we also support that. + + Can be either `ConfigMap` or `Secret`, defaults to `ConfigMap`. + enum: + - Secret + - ConfigMap + type: string + required: + - secretClassName + type: object + required: + - spec + title: TrustStore + type: object + served: true + storage: true + subresources: {} diff --git a/rust/operator-binary/Cargo.toml b/rust/operator-binary/Cargo.toml index 9c4e2a0d..733eac52 100644 --- a/rust/operator-binary/Cargo.toml +++ b/rust/operator-binary/Cargo.toml @@ -25,6 +25,7 @@ pin-project.workspace = true prost-types.workspace = true prost.workspace = true serde_json.workspace = true +serde_yaml.workspace = true serde.workspace = true snafu.workspace = true socket2.workspace = true diff --git a/rust/operator-binary/src/backend/cert_manager.rs b/rust/operator-binary/src/backend/cert_manager.rs index 80e38fed..7768379e 100644 --- a/rust/operator-binary/src/backend/cert_manager.rs +++ b/rust/operator-binary/src/backend/cert_manager.rs @@ -20,7 +20,7 @@ use super::{ scope::SecretScope, }; use crate::{ - crd::v1alpha1, + crd::v1alpha2, external_crd::{self, cert_manager::CertificatePrivateKey}, format::SecretData, utils::Unloggable, @@ -99,7 +99,7 @@ impl SecretBackendError for Error { pub struct CertManager { // Not secret per se, but Client isn't Debug: https://github.com/stackabletech/secret-operator/issues/411 pub client: Unloggable, - pub config: v1alpha1::CertManagerBackend, + pub config: v1alpha2::CertManagerBackend, } #[async_trait] @@ -160,7 +160,7 @@ impl SecretBackend for CertManager { kind: Some(self.config.issuer.kind.to_string()), }, private_key: match self.config.key_generation { - v1alpha1::CertificateKeyGeneration::Rsa { length } => CertificatePrivateKey { + v1alpha2::CertificateKeyGeneration::Rsa { length } => CertificatePrivateKey { algorithm: "RSA".to_string(), size: length, }, diff --git a/rust/operator-binary/src/backend/dynamic.rs b/rust/operator-binary/src/backend/dynamic.rs index 56464d0a..5cf3b0e2 100644 --- a/rust/operator-binary/src/backend/dynamic.rs +++ b/rust/operator-binary/src/backend/dynamic.rs @@ -15,7 +15,7 @@ use super::{ pod_info::{PodInfo, SchedulingPodInfo}, tls, }; -use crate::{crd::v1alpha1, utils::Unloggable}; +use crate::{crd::v1alpha2, utils::Unloggable}; pub struct DynError(Box); @@ -126,10 +126,10 @@ impl SecretBackendError for FromClassError { pub async fn from_class( client: &stackable_operator::client::Client, - class: v1alpha1::SecretClass, + class: v1alpha2::SecretClass, ) -> Result, FromClassError> { Ok(match class.spec.backend { - v1alpha1::SecretClassBackend::K8sSearch(v1alpha1::K8sSearchBackend { + v1alpha2::SecretClassBackend::K8sSearch(v1alpha2::K8sSearchBackend { search_namespace, trust_store_config_map_name, }) => from(super::K8sSearch { @@ -137,7 +137,7 @@ pub async fn from_class( search_namespace, trust_store_config_map_name, }), - v1alpha1::SecretClassBackend::AutoTls(v1alpha1::AutoTlsBackend { + v1alpha2::SecretClassBackend::AutoTls(v1alpha2::AutoTlsBackend { ca, additional_trust_roots, max_certificate_lifetime, @@ -150,11 +150,11 @@ pub async fn from_class( ) .await?, ), - v1alpha1::SecretClassBackend::CertManager(config) => from(super::CertManager { + v1alpha2::SecretClassBackend::CertManager(config) => from(super::CertManager { client: Unloggable(client.clone()), config, }), - v1alpha1::SecretClassBackend::KerberosKeytab(v1alpha1::KerberosKeytabBackend { + v1alpha2::SecretClassBackend::KerberosKeytab(v1alpha2::KerberosKeytabBackend { realm_name, kdc, admin, @@ -182,14 +182,14 @@ pub enum FromSelectorError { #[snafu(display("failed to get {class}"))] GetSecretClass { source: stackable_operator::client::Error, - class: ObjectRef, + class: ObjectRef, }, #[snafu(display("failed to initialize backend for {class}"))] FromClass { #[snafu(source(from(FromClassError, Box::new)))] source: Box, - class: ObjectRef, + class: ObjectRef, }, } @@ -217,7 +217,7 @@ pub async fn from_selector( ) -> Result, FromSelectorError> { let class_ref = || ObjectRef::new(&selector.class); let class = client - .get::(&selector.class, &()) + .get::(&selector.class, &()) .await .with_context(|_| from_selector_error::GetSecretClassSnafu { class: class_ref() })?; from_class(client, class) diff --git a/rust/operator-binary/src/backend/k8s_search.rs b/rust/operator-binary/src/backend/k8s_search.rs index 8ec03f63..1d77d1e1 100644 --- a/rust/operator-binary/src/backend/k8s_search.rs +++ b/rust/operator-binary/src/backend/k8s_search.rs @@ -20,7 +20,7 @@ use super::{ pod_info::{PodInfo, SchedulingPodInfo}, scope::SecretScope, }; -use crate::{crd::v1alpha1, format::SecretData, utils::Unloggable}; +use crate::{crd::v1alpha2, format::SecretData, utils::Unloggable}; const LABEL_CLASS: &str = "secrets.stackable.tech/class"; pub(super) const LABEL_SCOPE_NODE: &str = "secrets.stackable.tech/node"; @@ -89,7 +89,7 @@ impl SecretBackendError for Error { pub struct K8sSearch { // Not secret per se, but isn't Debug: https://github.com/stackabletech/secret-operator/issues/411 pub client: Unloggable, - pub search_namespace: v1alpha1::SearchNamespace, + pub search_namespace: v1alpha2::SearchNamespace, pub trust_store_config_map_name: Option, } diff --git a/rust/operator-binary/src/backend/kerberos_keytab.rs b/rust/operator-binary/src/backend/kerberos_keytab.rs index 70ecd009..4d1f7bc2 100644 --- a/rust/operator-binary/src/backend/kerberos_keytab.rs +++ b/rust/operator-binary/src/backend/kerberos_keytab.rs @@ -22,7 +22,7 @@ use super::{ scope::SecretScope, }; use crate::{ - crd::{KerberosPrincipal, v1alpha1}, + crd::{self, KerberosPrincipal, v1alpha2}, format::{SecretData, WellKnownSecretData, well_known}, utils::Unloggable, }; @@ -60,7 +60,7 @@ pub enum Error { #[snafu(display("generated invalid Kerberos principal for pod"))] PodPrincipal { - source: v1alpha1::InvalidKerberosPrincipal, + source: crd::InvalidKerberosPrincipal, }, #[snafu(display("failed to read the provisioned keytab"))] @@ -105,7 +105,7 @@ impl SecretBackendError for Error { pub struct KerberosProfile { pub realm_name: KerberosRealmName, pub kdc: HostName, - pub admin: v1alpha1::KerberosKeytabBackendAdmin, + pub admin: v1alpha2::KerberosKeytabBackendAdmin, } #[derive(Debug)] @@ -168,10 +168,12 @@ impl SecretBackend for KerberosKeytab { } = self; let admin_server_clause = match admin { - v1alpha1::KerberosKeytabBackendAdmin::Mit { kadmin_server } => { + v1alpha2::KerberosKeytabBackendAdmin::Mit(v1alpha2::KerberosKeytabBackendMit { + kadmin_server, + }) => { format!(" admin_server = {kadmin_server}") } - v1alpha1::KerberosKeytabBackendAdmin::ActiveDirectory { .. } => String::new(), + v1alpha2::KerberosKeytabBackendAdmin::ActiveDirectory { .. } => String::new(), }; let tmp = tempdir().context(TempSetupSnafu)?; @@ -253,24 +255,26 @@ cluster.local = {realm_name} }) .collect(), admin_backend: match admin { - v1alpha1::KerberosKeytabBackendAdmin::Mit { .. } => { + v1alpha2::KerberosKeytabBackendAdmin::Mit { .. } => { stackable_krb5_provision_keytab::AdminBackend::Mit } - v1alpha1::KerberosKeytabBackendAdmin::ActiveDirectory { - ldap_server, - ldap_tls_ca_secret, - password_cache_secret, - user_distinguished_name, - schema_distinguished_name, - generate_sam_account_name, - } => stackable_krb5_provision_keytab::AdminBackend::ActiveDirectory { + v1alpha2::KerberosKeytabBackendAdmin::ActiveDirectory( + v1alpha2::KerberosKeytabBackendActiveDirectory { + ldap_server, + ldap_tls_ca_secret, + password_cache_secret, + user_distinguished_name, + schema_distinguished_name, + generate_sam_account_name, + }, + ) => stackable_krb5_provision_keytab::AdminBackend::ActiveDirectory { ldap_server: ldap_server.to_string(), ldap_tls_ca_secret: ldap_tls_ca_secret.clone(), password_cache_secret: password_cache_secret.clone(), user_distinguished_name: user_distinguished_name.clone(), schema_distinguished_name: schema_distinguished_name.clone(), generate_sam_account_name: generate_sam_account_name.clone().map( - |v1alpha1::ActiveDirectorySamAccountNameRules { + |v1alpha2::ActiveDirectorySamAccountNameRules { prefix, total_length, }| { diff --git a/rust/operator-binary/src/backend/tls/ca.rs b/rust/operator-binary/src/backend/tls/ca.rs index d7fdb2c8..b7d817f8 100644 --- a/rust/operator-binary/src/backend/tls/ca.rs +++ b/rust/operator-binary/src/backend/tls/ca.rs @@ -38,7 +38,7 @@ use tracing::{info, info_span, warn}; use crate::{ backend::SecretBackendError, - crd::v1alpha1, + crd::v1alpha2, utils::{Asn1TimeParseError, Unloggable, asn1time_to_offsetdatetime}, }; @@ -202,7 +202,7 @@ pub struct Config { pub rotate_if_ca_expires_before: Option, /// Configuration how TLS private keys should be created. - pub key_generation: v1alpha1::CertificateKeyGeneration, + pub key_generation: v1alpha2::CertificateKeyGeneration, } /// A single certificate authority certificate. @@ -241,7 +241,7 @@ impl CertificateAuthority { Conf::new(ConfMethod::default()).expect("failed to initialize OpenSSL configuration"); let private_key_length = match config.key_generation { - v1alpha1::CertificateKeyGeneration::Rsa { length } => length, + v1alpha2::CertificateKeyGeneration::Rsa { length } => length, }; let private_key = Rsa::generate(private_key_length) @@ -348,7 +348,7 @@ impl Manager { pub async fn load_or_create( client: &stackable_operator::client::Client, secret_ref: &SecretReference, - additional_trust_roots: &[v1alpha1::AdditionalTrustRoot], + additional_trust_roots: &[v1alpha2::AdditionalTrustRoot], config: &Config, ) -> Result { // Use entry API rather than apply so that we crash and retry on conflicts (to avoid creating spurious certs that we throw away immediately) @@ -496,10 +496,10 @@ impl Manager { let mut additional_trusted_certificates = vec![]; for entry in additional_trust_roots { let certs = match entry { - v1alpha1::AdditionalTrustRoot::ConfigMap(config_map) => { + v1alpha2::AdditionalTrustRoot::ConfigMap(config_map) => { Self::read_extra_trust_roots_from_config_map(client, config_map).await? } - v1alpha1::AdditionalTrustRoot::Secret(secret) => { + v1alpha2::AdditionalTrustRoot::Secret(secret) => { Self::read_extra_trust_roots_from_secret(client, secret).await? } }; diff --git a/rust/operator-binary/src/backend/tls/mod.rs b/rust/operator-binary/src/backend/tls/mod.rs index 3713935c..0cca87db 100644 --- a/rust/operator-binary/src/backend/tls/mod.rs +++ b/rust/operator-binary/src/backend/tls/mod.rs @@ -33,7 +33,7 @@ use super::{ scope::SecretScope, }; use crate::{ - crd::v1alpha1, + crd::v1alpha2, format::{SecretData, WellKnownSecretData, well_known}, utils::iterator_try_concat_bytes, }; @@ -150,7 +150,7 @@ impl SecretBackendError for Error { pub struct TlsGenerate { ca_manager: ca::Manager, max_cert_lifetime: Duration, - key_generation: v1alpha1::CertificateKeyGeneration, + key_generation: v1alpha2::CertificateKeyGeneration, } impl TlsGenerate { @@ -162,13 +162,13 @@ impl TlsGenerate { /// an independent self-signed CA. pub async fn get_or_create_k8s_certificate( client: &stackable_operator::client::Client, - v1alpha1::AutoTlsCa { + v1alpha2::AutoTlsCa { secret: ca_secret, auto_generate: auto_generate_ca, ca_certificate_lifetime, key_generation, - }: &v1alpha1::AutoTlsCa, - additional_trust_roots: &[v1alpha1::AdditionalTrustRoot], + }: &v1alpha2::AutoTlsCa, + additional_trust_roots: &[v1alpha2::AdditionalTrustRoot], max_cert_lifetime: Duration, ) -> Result { Ok(Self { @@ -260,7 +260,7 @@ impl SecretBackend for TlsGenerate { Conf::new(ConfMethod::default()).expect("failed to initialize OpenSSL configuration"); let pod_key_length = match self.key_generation { - v1alpha1::CertificateKeyGeneration::Rsa { length } => length, + v1alpha2::CertificateKeyGeneration::Rsa { length } => length, }; let pod_key = Rsa::generate(pod_key_length) diff --git a/rust/operator-binary/src/crd/mod.rs b/rust/operator-binary/src/crd/mod.rs index 41b156f7..27aa29ec 100644 --- a/rust/operator-binary/src/crd/mod.rs +++ b/rust/operator-binary/src/crd/mod.rs @@ -1,448 +1,78 @@ -use serde::{Deserialize, Serialize}; -use stackable_operator::{ - commons::networking::{HostName, KerberosRealmName}, - kube::CustomResource, - schemars::{self, JsonSchema}, - shared::time::Duration, - versioned::versioned, -}; -use stackable_secret_operator_utils::crd::{ConfigMapReference, SecretReference}; - -use crate::format::SecretFormat; - -mod v1alpha1_impl; - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -#[serde(try_from = "String", into = "String")] -pub struct KerberosPrincipal(String); - -#[versioned( - version(name = "v1alpha1"), - crates( - kube_core = "stackable_operator::kube::core", - kube_client = "stackable_operator::kube::client", - k8s_openapi = "stackable_operator::k8s_openapi", - schemars = "stackable_operator::schemars", - versioned = "stackable_operator::versioned" - ) -)] -pub mod versioned { - pub mod v1alpha1 { - pub use v1alpha1_impl::*; - } - - /// A [SecretClass](DOCS_BASE_URL_PLACEHOLDER/secret-operator/secretclass) is a cluster-global Kubernetes resource - /// that defines a category of secrets that the Secret Operator knows how to provision. - #[versioned(crd(group = "secrets.stackable.tech"))] - #[derive(CustomResource, Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] - #[serde(rename_all = "camelCase")] - pub struct SecretClassSpec { - /// Each SecretClass is associated with a single - /// [backend](DOCS_BASE_URL_PLACEHOLDER/secret-operator/secretclass#backend), - /// which dictates the mechanism for issuing that kind of Secret. - pub backend: SecretClassBackend, - } - - #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] - #[serde(rename_all = "camelCase")] - #[allow(clippy::large_enum_variant)] - pub enum SecretClassBackend { - /// The [`k8sSearch` backend](DOCS_BASE_URL_PLACEHOLDER/secret-operator/secretclass#backend-k8ssearch) - /// can be used to mount Secrets across namespaces into Pods. - K8sSearch(K8sSearchBackend), - - /// The [`autoTls` backend](DOCS_BASE_URL_PLACEHOLDER/secret-operator/secretclass#backend-autotls) - /// issues a TLS certificate signed by the Secret Operator. - /// The certificate authority can be provided by the administrator, or managed automatically by the Secret Operator. - /// - /// A new certificate and key pair will be generated and signed for each Pod, keys or certificates are never reused. - AutoTls(AutoTlsBackend), - - /// The [`experimentalCertManager` backend][1] injects a TLS certificate issued - /// by [cert-manager](https://cert-manager.io/). - /// - /// A new certificate will be requested the first time it is used by a Pod, it - /// will be reused after that (subject to cert-manager renewal rules). - /// - /// [1]: DOCS_BASE_URL_PLACEHOLDER/secret-operator/secretclass#backend-certmanager - #[serde(rename = "experimentalCertManager")] - CertManager(CertManagerBackend), - - /// The [`kerberosKeytab` backend](DOCS_BASE_URL_PLACEHOLDER/secret-operator/secretclass#backend-kerberoskeytab) - /// creates a Kerberos keytab file for a selected realm. - /// The Kerberos KDC and administrator credentials must be provided by the administrator. - KerberosKeytab(KerberosKeytabBackend), - } - - #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] - #[serde(rename_all = "camelCase")] - pub struct K8sSearchBackend { - /// Configures the namespace searched for Secret objects. - pub search_namespace: SearchNamespace, - - /// Name of a ConfigMap that contains the information required to validate against this SecretClass. - /// - /// Resolved relative to `search_namespace`. - /// - /// Required to request a TrustStore for this SecretClass. - pub trust_store_config_map_name: Option, - } - - #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, Hash, JsonSchema)] - #[serde(rename_all = "camelCase")] - pub enum SearchNamespace { - /// The Secret objects are located in the same namespace as the Pod object. - /// Should be used for Secrets that are provisioned by the application administrator. - Pod {}, - - /// The Secret objects are located in a single global namespace. - /// Should be used for secrets that are provisioned by the cluster administrator. - Name(String), - } - - /// A partially evaluated match returned by [`SearchNamespace::matches_namespace`]. - /// Use [`Self::matches_pod_namespace`] to evaluate fully. - #[derive(Debug)] - pub enum SearchNamespaceMatchCondition { - /// The target object matches the search namespace. - True, - - /// The target object only matches the search namespace if mounted into a pod in - /// `namespace`. - IfPodIsInNamespace { namespace: String }, - } - - #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] - #[serde(rename_all = "camelCase")] - pub struct AutoTlsBackend { - /// Configures the certificate authority used to issue Pod certificates. - pub ca: AutoTlsCa, - - /// Additional trust roots which are added to the provided `ca.crt` file. - #[serde(default)] - pub additional_trust_roots: Vec, - - /// Maximum lifetime the created certificates are allowed to have. - /// In case consumers request a longer lifetime than allowed by this setting, - /// the lifetime will be the minimum of both, so this setting takes precedence. - /// The default value is 15 days. - #[serde(default = "AutoTlsBackend::default_max_certificate_lifetime")] - pub max_certificate_lifetime: Duration, - } - - #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] - #[serde(rename_all = "camelCase")] - pub struct AutoTlsCa { - /// Reference (name and namespace) to a Kubernetes Secret object where the CA certificate - /// and key is stored in the keys `ca.crt` and `ca.key` respectively. - pub secret: SecretReference, - - /// Whether the certificate authority should be managed by Secret Operator, including being generated - /// if it does not already exist. - // TODO: Consider renaming to `manage` for v1alpha2 - #[serde(default)] - pub auto_generate: bool, - - /// The lifetime of each generated certificate authority. - /// - /// Should always be more than double `maxCertificateLifetime`. - /// - /// If `autoGenerate: true` then the Secret Operator will prepare a new CA certificate the old CA approaches expiration. - /// If `autoGenerate: false` then the Secret Operator will log a warning instead. - #[serde(default = "AutoTlsCa::default_ca_certificate_lifetime")] - pub ca_certificate_lifetime: Duration, - - /// The algorithm used to generate a key pair and required configuration settings. - /// Currently only RSA and a key length of 2048, 3072 or 4096 bits can be configured. - #[serde(default)] - pub key_generation: CertificateKeyGeneration, - } +use std::{fmt::Display, ops::Deref}; - #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] - #[serde(rename_all = "camelCase")] - pub enum AdditionalTrustRoot { - /// Reference (name and namespace) to a Kubernetes ConfigMap object where additional - /// certificates are stored. - /// The extensions of the keys denote its contents: A key suffixed with `.crt` contains a stack - /// of base64 encoded DER certificates, a key suffixed with `.der` contains a binary DER - /// certificate. - ConfigMap(ConfigMapReference), - - /// Reference (name and namespace) to a Kubernetes Secret object where additional certificates - /// are stored. - /// The extensions of the keys denote its contents: A key suffixed with `.crt` contains a stack - /// of base64 encoded DER certificates, a key suffixed with `.der` contains a binary DER - /// certificate. - Secret(SecretReference), - } - - #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] - #[serde(rename_all = "camelCase")] - pub enum CertificateKeyGeneration { - Rsa { - /// The amount of bits used for generating the RSA keypair. - /// Currently, `2048`, `3072` and `4096` are supported. Defaults to `2048` bits. - #[schemars(schema_with = "CertificateKeyGeneration::tls_key_length_schema")] - length: u32, - }, - } - - #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] - #[serde(rename_all = "camelCase")] - pub struct CertManagerBackend { - /// A reference to the cert-manager issuer that the certificates should be requested from. - pub issuer: CertManagerIssuer, - - /// The default lifetime of certificates. - /// - /// Defaults to 1 day. This may need to be increased for external issuers that impose rate limits (such as Let's Encrypt). - #[serde(default = "CertManagerBackend::default_certificate_lifetime")] - pub default_certificate_lifetime: Duration, - - /// The algorithm used to generate a key pair and required configuration settings. - /// Currently only RSA and a key length of 2048, 3072 or 4096 bits can be configured. - #[serde(default)] - pub key_generation: CertificateKeyGeneration, - } - - #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] - #[serde(rename_all = "camelCase")] - pub struct CertManagerIssuer { - /// The kind of the issuer, Issuer or ClusterIssuer. - /// - /// If Issuer then it must be in the same namespace as the Pods using it. - pub kind: CertManagerIssuerKind, - - /// The name of the issuer. - pub name: String, - } - - #[derive(Serialize, Deserialize, Clone, Copy, Debug, PartialEq, JsonSchema, strum::Display)] - pub enum CertManagerIssuerKind { - /// An [Issuer](https://cert-manager.io/docs/reference/api-docs/#cert-manager.io/v1.Issuer) in the same namespace as the Pod. - Issuer, - - /// A cluster-scoped [ClusterIssuer](https://cert-manager.io/docs/reference/api-docs/#cert-manager.io/v1.ClusterIssuer). - ClusterIssuer, - } - - #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] - #[serde(rename_all = "camelCase")] - pub struct KerberosKeytabBackend { - /// The name of the Kerberos realm. This should be provided by the Kerberos administrator. - pub realm_name: KerberosRealmName, - - /// The hostname of the Kerberos Key Distribution Center (KDC). - /// This should be provided by the Kerberos administrator. - pub kdc: HostName, - - /// Kerberos admin configuration settings. - pub admin: KerberosKeytabBackendAdmin, - - /// Reference (`name` and `namespace`) to a K8s Secret object where a - /// keytab with administrative privileges is stored in the key `keytab`. - pub admin_keytab_secret: SecretReference, +use serde::{Deserialize, Serialize}; +use snafu::Snafu; +use stackable_operator::schemars::{self, JsonSchema}; - /// The admin principal. - pub admin_principal: KerberosPrincipal, - } +mod secret_class; +mod trust_store; - #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] - #[serde(rename_all = "camelCase")] - pub enum KerberosKeytabBackendAdmin { - /// Credentials should be provisioned in a MIT Kerberos Admin Server. - #[serde(rename_all = "camelCase")] - Mit { - /// The hostname of the Kerberos Admin Server. - /// This should be provided by the Kerberos administrator. - kadmin_server: HostName, - }, +pub mod v1alpha1 { + // NOTE (@Techassi): SecretClass v1alpha1 is unused and as such not exported. + pub use crate::crd::trust_store::v1alpha1::*; +} - /// Credentials should be provisioned in a Microsoft Active Directory domain. - #[serde(rename_all = "camelCase")] - ActiveDirectory { - /// An AD LDAP server, such as the AD Domain Controller. - /// This must match the server’s FQDN, or GSSAPI authentication will fail. - ldap_server: HostName, +pub use secret_class::{SecretClass, SecretClassVersion}; - /// Reference (name and namespace) to a Kubernetes Secret object containing - /// the TLS CA (in `ca.crt`) that the LDAP server’s certificate should be authenticated against. - ldap_tls_ca_secret: SecretReference, +pub mod v1alpha2 { + pub use crate::crd::secret_class::v1alpha2::*; +} - /// Reference (name and namespace) to a Kubernetes Secret object where workload - /// passwords will be stored. This must not be accessible to end users. - password_cache_secret: SecretReference, +pub use trust_store::{TrustStore, TrustStoreVersion}; - /// The root Distinguished Name (DN) where service accounts should be provisioned, - /// typically `CN=Users,{domain_dn}`. - user_distinguished_name: String, +#[derive(Debug, Snafu)] +#[snafu(module)] +pub enum InvalidKerberosPrincipal { + #[snafu(display( + "principal contains illegal characters (allowed: alphanumeric, /, @, -, _, and .)" + ))] + IllegalCharacter, - /// The root Distinguished Name (DN) for AD-managed schemas, - /// typically `CN=Schema,CN=Configuration,{domain_dn}`. - schema_distinguished_name: String, + #[snafu(display("principal may not start with a dash"))] + StartWithDash, +} - /// Allows samAccountName generation for new accounts to be customized. - /// Note that setting this field (even if empty) makes the Secret Operator take - /// over the generation duty from the domain controller. - #[serde(rename = "experimentalGenerateSamAccountName")] - generate_sam_account_name: Option, - }, - } +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +#[serde(try_from = "String", into = "String")] +pub struct KerberosPrincipal(String); - #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] - #[serde(rename_all = "camelCase")] - pub struct ActiveDirectorySamAccountNameRules { - /// A prefix to be prepended to generated samAccountNames. - #[serde(default)] - pub prefix: String, - /// The total length of generated samAccountNames, _including_ `prefix`. - /// Must be larger than the length of `prefix`, but at most `20`. - /// - /// Note that this should be as large as possible, to minimize the risk of collisions. - #[serde(default = "ActiveDirectorySamAccountNameRules::default_total_length")] - pub total_length: u8, +impl TryFrom for KerberosPrincipal { + type Error = InvalidKerberosPrincipal; + + fn try_from(value: String) -> Result { + if value.starts_with('-') { + invalid_kerberos_principal::StartWithDashSnafu.fail() + } else if value.contains(|chr: char| { + !chr.is_alphanumeric() + && chr != '/' + && chr != '@' + && chr != '.' + && chr != '-' + && chr != '_' + }) { + invalid_kerberos_principal::IllegalCharacterSnafu.fail() + } else { + Ok(KerberosPrincipal(value)) + } } +} - /// A [TrustStore](DOCS_BASE_URL_PLACEHOLDER/secret-operator/truststore) requests information about how to - /// validate secrets issued by a [SecretClass](DOCS_BASE_URL_PLACEHOLDER/secret-operator/secretclass). - /// - /// The requested information is written to a ConfigMap with the same name as the TrustStore. - #[versioned(crd(group = "secrets.stackable.tech", namespaced))] - #[derive(CustomResource, Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] - #[serde(rename_all = "camelCase")] - pub struct TrustStoreSpec { - /// The name of the SecretClass that the request concerns. - pub secret_class_name: String, - - /// Which Kubernetes kind should be used to output the requested information to. - /// - /// The trust information (such as a `ca.crt`) can be considered public information, so we put - /// it in a `ConfigMap` by default. However, some tools might require it to be placed in a - /// `Secret`, so we also support that. - /// - /// Can be either `ConfigMap` or `Secret`, defaults to `ConfigMap`. - #[serde(default)] - pub target_kind: TrustStoreOutputType, - - /// The [format](DOCS_BASE_URL_PLACEHOLDER/secret-operator/secretclass#format) that the data should be converted into. - pub format: Option, +impl From for String { + fn from(value: KerberosPrincipal) -> Self { + value.0 } +} - #[derive(Clone, Debug, Default, PartialEq, JsonSchema, Serialize, Deserialize)] - #[serde(rename_all = "PascalCase")] - pub enum TrustStoreOutputType { - Secret, - - #[default] - ConfigMap, +impl Display for KerberosPrincipal { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(&self.0) } } -#[cfg(test)] -mod test { - use super::*; - use crate::{ - backend::tls::{DEFAULT_CA_CERT_LIFETIME, DEFAULT_MAX_CERT_LIFETIME}, - crd::v1alpha1::{ - AdditionalTrustRoot, AutoTlsBackend, AutoTlsCa, CertificateKeyGeneration, SecretClass, - SecretClassBackend, SecretClassSpec, - }, - }; - - #[test] - fn test_deserialization() { - let input: &str = r#" - apiVersion: secrets.stackable.tech/v1alpha1 - kind: SecretClass - metadata: - name: tls - spec: - backend: - autoTls: - ca: - secret: - name: secret-provisioner-tls-ca - namespace: default - keyGeneration: - rsa: - length: 3072 - "#; - let deserializer = serde_yaml::Deserializer::from_str(input); - let secret_class: SecretClass = - serde_yaml::with::singleton_map_recursive::deserialize(deserializer).unwrap(); - assert_eq!( - secret_class.spec, - SecretClassSpec { - backend: SecretClassBackend::AutoTls(AutoTlsBackend { - ca: AutoTlsCa { - secret: SecretReference { - name: "secret-provisioner-tls-ca".to_string(), - namespace: "default".to_string(), - }, - auto_generate: false, - ca_certificate_lifetime: DEFAULT_CA_CERT_LIFETIME, - key_generation: CertificateKeyGeneration::Rsa { - length: CertificateKeyGeneration::RSA_KEY_LENGTH_3072 - } - }, - additional_trust_roots: vec![], - max_certificate_lifetime: DEFAULT_MAX_CERT_LIFETIME, - }) - } - ); +impl Deref for KerberosPrincipal { + type Target = str; - let input: &str = r#" - apiVersion: secrets.stackable.tech/v1alpha1 - kind: SecretClass - metadata: - name: tls - spec: - backend: - autoTls: - ca: - secret: - name: secret-provisioner-tls-ca - namespace: default - autoGenerate: true - caCertificateLifetime: 100d - additionalTrustRoots: - - configMap: - name: tls-root-ca-config-map - namespace: default - - secret: - name: tls-root-ca-secret - namespace: default - maxCertificateLifetime: 31d - "#; - let deserializer = serde_yaml::Deserializer::from_str(input); - let secret_class: SecretClass = - serde_yaml::with::singleton_map_recursive::deserialize(deserializer).unwrap(); - assert_eq!( - secret_class.spec, - SecretClassSpec { - backend: SecretClassBackend::AutoTls(AutoTlsBackend { - ca: AutoTlsCa { - secret: SecretReference { - name: "secret-provisioner-tls-ca".to_string(), - namespace: "default".to_string(), - }, - auto_generate: true, - ca_certificate_lifetime: Duration::from_days_unchecked(100), - key_generation: CertificateKeyGeneration::default() - }, - additional_trust_roots: vec![ - AdditionalTrustRoot::ConfigMap(ConfigMapReference { - name: "tls-root-ca-config-map".to_string(), - namespace: "default".to_string(), - }), - AdditionalTrustRoot::Secret(SecretReference { - name: "tls-root-ca-secret".to_string(), - namespace: "default".to_string(), - }) - ], - max_certificate_lifetime: Duration::from_days_unchecked(31), - }) - } - ); + fn deref(&self) -> &Self::Target { + &self.0 } } diff --git a/rust/operator-binary/src/crd/secret_class/mod.rs b/rust/operator-binary/src/crd/secret_class/mod.rs new file mode 100644 index 00000000..383cd6fc --- /dev/null +++ b/rust/operator-binary/src/crd/secret_class/mod.rs @@ -0,0 +1,424 @@ +use serde::{Deserialize, Serialize}; +use stackable_operator::{ + commons::networking::{HostName, KerberosRealmName}, + kube::CustomResource, + schemars::{self, JsonSchema}, + shared::time::Duration, + versioned::versioned, +}; +use stackable_secret_operator_utils::crd::{ConfigMapReference, SecretReference}; + +use crate::crd::KerberosPrincipal; + +mod v1alpha1_impl; +mod v1alpha2_impl; + +#[versioned( + version(name = "v1alpha1"), + version(name = "v1alpha2"), + crates( + kube_core = "stackable_operator::kube::core", + kube_client = "stackable_operator::kube::client", + k8s_openapi = "stackable_operator::k8s_openapi", + schemars = "stackable_operator::schemars", + versioned = "stackable_operator::versioned" + ), + options(k8s(enable_tracing)) +)] +pub mod versioned { + /// A [SecretClass](DOCS_BASE_URL_PLACEHOLDER/secret-operator/secretclass) is a cluster-global Kubernetes resource + /// that defines a category of secrets that the Secret Operator knows how to provision. + #[versioned(crd(group = "secrets.stackable.tech"))] + #[derive(CustomResource, Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] + #[serde(rename_all = "camelCase")] + pub struct SecretClassSpec { + /// Each SecretClass is associated with a single + /// [backend](DOCS_BASE_URL_PLACEHOLDER/secret-operator/secretclass#backend), + /// which dictates the mechanism for issuing that kind of Secret. + pub backend: SecretClassBackend, + } + + #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] + #[serde(rename_all = "camelCase")] + #[allow(clippy::large_enum_variant)] + pub enum SecretClassBackend { + /// The [`k8sSearch` backend](DOCS_BASE_URL_PLACEHOLDER/secret-operator/secretclass#backend-k8ssearch) + /// can be used to mount Secrets across namespaces into Pods. + K8sSearch(K8sSearchBackend), + + /// The [`autoTls` backend](DOCS_BASE_URL_PLACEHOLDER/secret-operator/secretclass#backend-autotls) + /// issues a TLS certificate signed by the Secret Operator. + /// The certificate authority can be provided by the administrator, or managed automatically by the Secret Operator. + /// + /// A new certificate and key pair will be generated and signed for each Pod, keys or certificates are never reused. + AutoTls(AutoTlsBackend), + + /// The [`experimentalCertManager` backend][1] injects a TLS certificate issued + /// by [cert-manager](https://cert-manager.io/). + /// + /// A new certificate will be requested the first time it is used by a Pod, it + /// will be reused after that (subject to cert-manager renewal rules). + /// + /// [1]: DOCS_BASE_URL_PLACEHOLDER/secret-operator/secretclass#backend-certmanager + #[serde(rename = "experimentalCertManager")] + CertManager(CertManagerBackend), + + /// The [`kerberosKeytab` backend](DOCS_BASE_URL_PLACEHOLDER/secret-operator/secretclass#backend-kerberoskeytab) + /// creates a Kerberos keytab file for a selected realm. + /// The Kerberos KDC and administrator credentials must be provided by the administrator. + KerberosKeytab(KerberosKeytabBackend), + } + + #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] + #[serde(rename_all = "camelCase")] + pub struct K8sSearchBackend { + /// Configures the namespace searched for Secret objects. + pub search_namespace: SearchNamespace, + + /// Name of a ConfigMap that contains the information required to validate against this SecretClass. + /// + /// Resolved relative to `search_namespace`. + /// + /// Required to request a TrustStore for this SecretClass. + pub trust_store_config_map_name: Option, + } + + #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, Hash, JsonSchema)] + #[serde(rename_all = "camelCase")] + pub enum SearchNamespace { + /// The Secret objects are located in the same namespace as the Pod object. + /// Should be used for Secrets that are provisioned by the application administrator. + Pod {}, + + /// The Secret objects are located in a single global namespace. + /// Should be used for secrets that are provisioned by the cluster administrator. + Name(String), + } + + /// A partially evaluated match returned by [`SearchNamespace::matches_namespace`]. + /// Use [`Self::matches_pod_namespace`] to evaluate fully. + #[derive(Debug)] + pub enum SearchNamespaceMatchCondition { + /// The target object matches the search namespace. + True, + + /// The target object only matches the search namespace if mounted into a pod in + /// `namespace`. + IfPodIsInNamespace { namespace: String }, + } + + #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] + #[serde(rename_all = "camelCase")] + pub struct AutoTlsBackend { + /// Configures the certificate authority used to issue Pod certificates. + pub ca: AutoTlsCa, + + /// Additional trust roots which are added to the provided `ca.crt` file. + #[versioned(hint(vec))] + #[serde(default)] + pub additional_trust_roots: Vec, + + /// Maximum lifetime the created certificates are allowed to have. + /// In case consumers request a longer lifetime than allowed by this setting, + /// the lifetime will be the minimum of both, so this setting takes precedence. + /// The default value is 15 days. + #[serde(default = "v1alpha2::AutoTlsBackend::default_max_certificate_lifetime")] + pub max_certificate_lifetime: Duration, + } + + #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] + #[serde(rename_all = "camelCase")] + pub struct AutoTlsCa { + /// Reference (name and namespace) to a Kubernetes Secret object where the CA certificate + /// and key is stored in the keys `ca.crt` and `ca.key` respectively. + pub secret: SecretReference, + + /// Whether the certificate authority should be managed by Secret Operator, including being generated + /// if it does not already exist. + // TODO: Consider renaming to `manage` for v1alpha2 + #[serde(default)] + pub auto_generate: bool, + + /// The lifetime of each generated certificate authority. + /// + /// Should always be more than double `maxCertificateLifetime`. + /// + /// If `autoGenerate: true` then the Secret Operator will prepare a new CA certificate the old CA approaches expiration. + /// If `autoGenerate: false` then the Secret Operator will log a warning instead. + #[serde(default = "v1alpha2::AutoTlsCa::default_ca_certificate_lifetime")] + pub ca_certificate_lifetime: Duration, + + /// The algorithm used to generate a key pair and required configuration settings. + /// Currently only RSA and a key length of 2048, 3072 or 4096 bits can be configured. + #[serde(default)] + pub key_generation: CertificateKeyGeneration, + } + + #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] + #[serde(rename_all = "camelCase")] + pub enum AdditionalTrustRoot { + /// Reference (name and namespace) to a Kubernetes ConfigMap object where additional + /// certificates are stored. + /// The extensions of the keys denote its contents: A key suffixed with `.crt` contains a stack + /// of base64 encoded DER certificates, a key suffixed with `.der` contains a binary DER + /// certificate. + ConfigMap(ConfigMapReference), + + /// Reference (name and namespace) to a Kubernetes Secret object where additional certificates + /// are stored. + /// The extensions of the keys denote its contents: A key suffixed with `.crt` contains a stack + /// of base64 encoded DER certificates, a key suffixed with `.der` contains a binary DER + /// certificate. + Secret(SecretReference), + } + + #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] + #[serde(rename_all = "camelCase")] + pub enum CertificateKeyGeneration { + Rsa { + /// The amount of bits used for generating the RSA keypair. + /// Currently, `2048`, `3072` and `4096` are supported. Defaults to `2048` bits. + #[schemars(schema_with = "v1alpha2::CertificateKeyGeneration::tls_key_length_schema")] + length: u32, + }, + } + + #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] + #[serde(rename_all = "camelCase")] + pub struct CertManagerBackend { + /// A reference to the cert-manager issuer that the certificates should be requested from. + pub issuer: CertManagerIssuer, + + /// The default lifetime of certificates. + /// + /// Defaults to 1 day. This may need to be increased for external issuers that impose rate limits (such as Let's Encrypt). + #[serde(default = "v1alpha2::CertManagerBackend::default_certificate_lifetime")] + pub default_certificate_lifetime: Duration, + + /// The algorithm used to generate a key pair and required configuration settings. + /// Currently only RSA and a key length of 2048, 3072 or 4096 bits can be configured. + #[serde(default)] + pub key_generation: CertificateKeyGeneration, + } + + #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] + #[serde(rename_all = "camelCase")] + pub struct CertManagerIssuer { + /// The kind of the issuer, Issuer or ClusterIssuer. + /// + /// If Issuer then it must be in the same namespace as the Pods using it. + pub kind: CertManagerIssuerKind, + + /// The name of the issuer. + pub name: String, + } + + #[derive(Serialize, Deserialize, Clone, Copy, Debug, PartialEq, JsonSchema, strum::Display)] + pub enum CertManagerIssuerKind { + /// An [Issuer](https://cert-manager.io/docs/reference/api-docs/#cert-manager.io/v1.Issuer) in the same namespace as the Pod. + Issuer, + + /// A cluster-scoped [ClusterIssuer](https://cert-manager.io/docs/reference/api-docs/#cert-manager.io/v1.ClusterIssuer). + ClusterIssuer, + } + + #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] + #[serde(rename_all = "camelCase")] + pub struct KerberosKeytabBackend { + /// The name of the Kerberos realm. This should be provided by the Kerberos administrator. + pub realm_name: KerberosRealmName, + + /// The hostname of the Kerberos Key Distribution Center (KDC). + /// This should be provided by the Kerberos administrator. + pub kdc: HostName, + + /// Kerberos admin configuration settings. + pub admin: KerberosKeytabBackendAdmin, + + /// Reference (`name` and `namespace`) to a K8s Secret object where a + /// keytab with administrative privileges is stored in the key `keytab`. + pub admin_keytab_secret: SecretReference, + + /// The admin principal. + pub admin_principal: KerberosPrincipal, + } + + #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] + #[serde(rename_all = "camelCase")] + pub enum KerberosKeytabBackendAdmin { + /// Credentials should be provisioned in a MIT Kerberos Admin Server. + Mit(KerberosKeytabBackendMit), + + /// Credentials should be provisioned in a Microsoft Active Directory domain. + ActiveDirectory(KerberosKeytabBackendActiveDirectory), + } + + #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] + #[serde(rename_all = "camelCase")] + pub struct KerberosKeytabBackendMit { + /// The hostname of the Kerberos Admin Server. + /// This should be provided by the Kerberos administrator. + kadmin_server: HostName, + } + + #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] + #[serde(rename_all = "camelCase")] + pub struct KerberosKeytabBackendActiveDirectory { + /// An AD LDAP server, such as the AD Domain Controller. + /// This must match the server’s FQDN, or GSSAPI authentication will fail. + ldap_server: HostName, + + /// Reference (name and namespace) to a Kubernetes Secret object containing + /// the TLS CA (in `ca.crt`) that the LDAP server’s certificate should be authenticated against. + ldap_tls_ca_secret: SecretReference, + + /// Reference (name and namespace) to a Kubernetes Secret object where workload + /// passwords will be stored. This must not be accessible to end users. + password_cache_secret: SecretReference, + + /// The root Distinguished Name (DN) where service accounts should be provisioned, + /// typically `CN=Users,{domain_dn}`. + user_distinguished_name: String, + + /// The root Distinguished Name (DN) for AD-managed schemas, + /// typically `CN=Schema,CN=Configuration,{domain_dn}`. + schema_distinguished_name: String, + + /// Allows samAccountName generation for new accounts to be customized. + /// Note that setting this field (even if empty) makes the Secret Operator take + /// over the generation duty from the domain controller. + #[versioned( + changed( + since = "v1alpha2", + from_name = "experimental_generate_sam_account_name" + ), + hint(option) + )] + generate_sam_account_name: Option, + } + + #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] + #[serde(rename_all = "camelCase")] + pub struct ActiveDirectorySamAccountNameRules { + /// A prefix to be prepended to generated samAccountNames. + #[serde(default)] + pub prefix: String, + /// The total length of generated samAccountNames, _including_ `prefix`. + /// Must be larger than the length of `prefix`, but at most `20`. + /// + /// Note that this should be as large as possible, to minimize the risk of collisions. + #[serde(default = "v1alpha2::ActiveDirectorySamAccountNameRules::default_total_length")] + pub total_length: u8, + } +} + +#[cfg(test)] +mod test { + use stackable_operator::shared::time::Duration; + use stackable_secret_operator_utils::crd::{ConfigMapReference, SecretReference}; + + use crate::{ + backend::tls::{DEFAULT_CA_CERT_LIFETIME, DEFAULT_MAX_CERT_LIFETIME}, + crd::v1alpha2::{ + AdditionalTrustRoot, AutoTlsBackend, AutoTlsCa, CertificateKeyGeneration, SecretClass, + SecretClassBackend, SecretClassSpec, + }, + }; + + #[test] + fn test_deserialization() { + let input: &str = r#" + apiVersion: secrets.stackable.tech/v1alpha1 + kind: SecretClass + metadata: + name: tls + spec: + backend: + autoTls: + ca: + secret: + name: secret-provisioner-tls-ca + namespace: default + keyGeneration: + rsa: + length: 3072 + "#; + let deserializer = serde_yaml::Deserializer::from_str(input); + let secret_class: SecretClass = + serde_yaml::with::singleton_map_recursive::deserialize(deserializer).unwrap(); + assert_eq!( + secret_class.spec, + SecretClassSpec { + backend: SecretClassBackend::AutoTls(AutoTlsBackend { + ca: AutoTlsCa { + secret: SecretReference { + name: "secret-provisioner-tls-ca".to_string(), + namespace: "default".to_string(), + }, + auto_generate: false, + ca_certificate_lifetime: DEFAULT_CA_CERT_LIFETIME, + key_generation: CertificateKeyGeneration::Rsa { + length: CertificateKeyGeneration::RSA_KEY_LENGTH_3072 + } + }, + additional_trust_roots: vec![], + max_certificate_lifetime: DEFAULT_MAX_CERT_LIFETIME, + }) + } + ); + + let input: &str = r#" + apiVersion: secrets.stackable.tech/v1alpha1 + kind: SecretClass + metadata: + name: tls + spec: + backend: + autoTls: + ca: + secret: + name: secret-provisioner-tls-ca + namespace: default + autoGenerate: true + caCertificateLifetime: 100d + additionalTrustRoots: + - configMap: + name: tls-root-ca-config-map + namespace: default + - secret: + name: tls-root-ca-secret + namespace: default + maxCertificateLifetime: 31d + "#; + let deserializer = serde_yaml::Deserializer::from_str(input); + let secret_class: SecretClass = + serde_yaml::with::singleton_map_recursive::deserialize(deserializer).unwrap(); + assert_eq!( + secret_class.spec, + SecretClassSpec { + backend: SecretClassBackend::AutoTls(AutoTlsBackend { + ca: AutoTlsCa { + secret: SecretReference { + name: "secret-provisioner-tls-ca".to_string(), + namespace: "default".to_string(), + }, + auto_generate: true, + ca_certificate_lifetime: Duration::from_days_unchecked(100), + key_generation: CertificateKeyGeneration::default() + }, + additional_trust_roots: vec![ + AdditionalTrustRoot::ConfigMap(ConfigMapReference { + name: "tls-root-ca-config-map".to_string(), + namespace: "default".to_string(), + }), + AdditionalTrustRoot::Secret(SecretReference { + name: "tls-root-ca-secret".to_string(), + namespace: "default".to_string(), + }) + ], + max_certificate_lifetime: Duration::from_days_unchecked(31), + }) + } + ); + } +} diff --git a/rust/operator-binary/src/crd/secret_class/v1alpha1_impl.rs b/rust/operator-binary/src/crd/secret_class/v1alpha1_impl.rs new file mode 100644 index 00000000..8d22454d --- /dev/null +++ b/rust/operator-binary/src/crd/secret_class/v1alpha1_impl.rs @@ -0,0 +1,135 @@ +use stackable_operator::{ + k8s_openapi::api::core::v1::{ConfigMap, Secret}, + kube::api::PartialObjectMeta, + schemars::{Schema, SchemaGenerator}, +}; + +use crate::crd::secret_class::v1alpha1::{ + CertificateKeyGeneration, SearchNamespace, SearchNamespaceMatchCondition, SecretClassBackend, +}; + +impl SecretClassBackend { + // Currently no `refers_to_*` method actually returns more than one element, + // but returning `Iterator` instead of `Option` to ensure that all consumers are ready + // for adding more conditions. + + // The matcher methods are on the CRD type rather than the initialized `Backend` impls + // to avoid having to initialize the backend for each watch event. + + /// Returns the conditions where the backend refers to `config_map`. + pub fn refers_to_config_map( + &self, + config_map: &PartialObjectMeta, + ) -> impl Iterator { + let cm_namespace = config_map.metadata.namespace.as_deref(); + match self { + Self::K8sSearch(backend) => { + let name_matches = backend.trust_store_config_map_name == config_map.metadata.name; + cm_namespace + .filter(|_| name_matches) + .and_then(|cm_ns| backend.search_namespace.matches_namespace(cm_ns)) + } + Self::AutoTls(_) => None, + Self::CertManager(_) => None, + Self::KerberosKeytab(_) => None, + } + .into_iter() + } + + /// Returns the conditions where the backend refers to `secret`. + pub fn refers_to_secret( + &self, + secret: &PartialObjectMeta, + ) -> impl Iterator { + match self { + Self::AutoTls(backend) => { + (backend.ca.secret == *secret).then_some(SearchNamespaceMatchCondition::True) + } + Self::K8sSearch(_) => None, + Self::CertManager(_) => None, + Self::KerberosKeytab(_) => None, + } + .into_iter() + } +} + +impl SearchNamespace { + pub fn resolve<'a>(&'a self, pod_namespace: &'a str) -> &'a str { + match self { + SearchNamespace::Pod {} => pod_namespace, + SearchNamespace::Name(ns) => ns, + } + } + + /// Returns [`Some`] if this `SearchNamespace` could possibly match an object in the namespace + /// `object_namespace`, otherwise [`None`]. + /// + /// This is optimistic, you then need to call [`SearchNamespaceMatchCondition::matches_pod_namespace`] + /// to evaluate the match for a specific pod's namespace. + pub fn matches_namespace( + &self, + object_namespace: &str, + ) -> Option { + match self { + SearchNamespace::Pod {} => Some(SearchNamespaceMatchCondition::IfPodIsInNamespace { + namespace: object_namespace.to_string(), + }), + SearchNamespace::Name(ns) => { + (ns == object_namespace).then_some(SearchNamespaceMatchCondition::True) + } + } + } +} + +impl SearchNamespaceMatchCondition { + pub fn matches_pod_namespace(&self, pod_ns: &str) -> bool { + match self { + Self::True => true, + Self::IfPodIsInNamespace { namespace } => namespace == pod_ns, + } + } +} + +impl CertificateKeyGeneration { + pub const RSA_KEY_LENGTH_2048: u32 = 2048; + pub const RSA_KEY_LENGTH_3072: u32 = 3072; + pub const RSA_KEY_LENGTH_4096: u32 = 4096; + + // Could not get a "standard" enum with assigned values/discriminants to work as integers in the schema + // The following was generated and requires the length to be provided as string (we want an integer) + // keyGeneration: + // default: + // rsa: + // length: '2048' + // oneOf: + // - required: + // - rsa + // properties: + // rsa: + // properties: + // length: + // enum: + // - '2048' + // - '3072' + // - '4096' + // type: string + pub fn tls_key_length_schema(_: &mut SchemaGenerator) -> Schema { + serde_json::from_value(serde_json::json!({ + "type": "integer", + "enum": [ + Self::RSA_KEY_LENGTH_2048, + Self::RSA_KEY_LENGTH_3072, + Self::RSA_KEY_LENGTH_4096 + ] + })) + .expect("Failed to parse JSON of custom tls key length schema") + } +} + +impl Default for CertificateKeyGeneration { + fn default() -> Self { + Self::Rsa { + length: Self::RSA_KEY_LENGTH_2048, + } + } +} diff --git a/rust/operator-binary/src/crd/v1alpha1_impl.rs b/rust/operator-binary/src/crd/secret_class/v1alpha2_impl.rs similarity index 73% rename from rust/operator-binary/src/crd/v1alpha1_impl.rs rename to rust/operator-binary/src/crd/secret_class/v1alpha2_impl.rs index e3010ef8..57c1f49b 100644 --- a/rust/operator-binary/src/crd/v1alpha1_impl.rs +++ b/rust/operator-binary/src/crd/secret_class/v1alpha2_impl.rs @@ -1,37 +1,19 @@ -use std::{fmt::Display, ops::Deref}; - -use snafu::Snafu; use stackable_operator::{ k8s_openapi::api::core::v1::{ConfigMap, Secret}, kube::api::PartialObjectMeta, - schemars::{self, schema::Schema}, + schemars::{Schema, SchemaGenerator}, shared::time::Duration, }; use crate::{ backend, - crd::{ - KerberosPrincipal, - v1alpha1::{ - ActiveDirectorySamAccountNameRules, AutoTlsBackend, AutoTlsCa, CertManagerBackend, - CertificateKeyGeneration, SearchNamespace, SearchNamespaceMatchCondition, - SecretClassBackend, - }, + crd::v1alpha2::{ + ActiveDirectorySamAccountNameRules, AutoTlsBackend, AutoTlsCa, CertManagerBackend, + CertificateKeyGeneration, SearchNamespace, SearchNamespaceMatchCondition, + SecretClassBackend, }, }; -#[derive(Debug, Snafu)] -#[snafu(module)] -pub enum InvalidKerberosPrincipal { - #[snafu(display( - "principal contains illegal characters (allowed: alphanumeric, /, @, -, _, and .)" - ))] - IllegalCharacter, - - #[snafu(display("principal may not start with a dash"))] - StartWithDash, -} - impl SecretClassBackend { // Currently no `refers_to_*` method actually returns more than one element, // but returning `Iterator` instead of `Option` to ensure that all consumers are ready @@ -149,7 +131,7 @@ impl CertificateKeyGeneration { // - '3072' // - '4096' // type: string - pub fn tls_key_length_schema(_: &mut schemars::gen::SchemaGenerator) -> Schema { + pub fn tls_key_length_schema(_: &mut SchemaGenerator) -> Schema { serde_json::from_value(serde_json::json!({ "type": "integer", "enum": [ @@ -182,44 +164,3 @@ impl ActiveDirectorySamAccountNameRules { 20 } } - -impl TryFrom for KerberosPrincipal { - type Error = InvalidKerberosPrincipal; - - fn try_from(value: String) -> Result { - if value.starts_with('-') { - invalid_kerberos_principal::StartWithDashSnafu.fail() - } else if value.contains(|chr: char| { - !chr.is_alphanumeric() - && chr != '/' - && chr != '@' - && chr != '.' - && chr != '-' - && chr != '_' - }) { - invalid_kerberos_principal::IllegalCharacterSnafu.fail() - } else { - Ok(KerberosPrincipal(value)) - } - } -} - -impl From for String { - fn from(value: KerberosPrincipal) -> Self { - value.0 - } -} - -impl Display for KerberosPrincipal { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(&self.0) - } -} - -impl Deref for KerberosPrincipal { - type Target = str; - - fn deref(&self) -> &Self::Target { - &self.0 - } -} diff --git a/rust/operator-binary/src/crd/trust_store/mod.rs b/rust/operator-binary/src/crd/trust_store/mod.rs new file mode 100644 index 00000000..18e5c3fe --- /dev/null +++ b/rust/operator-binary/src/crd/trust_store/mod.rs @@ -0,0 +1,54 @@ +use serde::{Deserialize, Serialize}; +use stackable_operator::{ + kube::CustomResource, + schemars::{self, JsonSchema}, + versioned::versioned, +}; + +use crate::format::SecretFormat; + +#[versioned( + version(name = "v1alpha1"), + crates( + kube_core = "stackable_operator::kube::core", + kube_client = "stackable_operator::kube::client", + k8s_openapi = "stackable_operator::k8s_openapi", + schemars = "stackable_operator::schemars", + versioned = "stackable_operator::versioned" + ) +)] +pub mod versioned { + /// A [TrustStore](DOCS_BASE_URL_PLACEHOLDER/secret-operator/truststore) requests information about how to + /// validate secrets issued by a [SecretClass](DOCS_BASE_URL_PLACEHOLDER/secret-operator/secretclass). + /// + /// The requested information is written to a ConfigMap with the same name as the TrustStore. + #[versioned(crd(group = "secrets.stackable.tech", namespaced))] + #[derive(CustomResource, Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] + #[serde(rename_all = "camelCase")] + pub struct TrustStoreSpec { + /// The name of the SecretClass that the request concerns. + pub secret_class_name: String, + + /// Which Kubernetes kind should be used to output the requested information to. + /// + /// The trust information (such as a `ca.crt`) can be considered public information, so we put + /// it in a `ConfigMap` by default. However, some tools might require it to be placed in a + /// `Secret`, so we also support that. + /// + /// Can be either `ConfigMap` or `Secret`, defaults to `ConfigMap`. + #[serde(default)] + pub target_kind: TrustStoreOutputType, + + /// The [format](DOCS_BASE_URL_PLACEHOLDER/secret-operator/secretclass#format) that the data should be converted into. + pub format: Option, + } + + #[derive(Clone, Debug, Default, PartialEq, JsonSchema, Serialize, Deserialize)] + #[serde(rename_all = "PascalCase")] + pub enum TrustStoreOutputType { + Secret, + + #[default] + ConfigMap, + } +} diff --git a/rust/operator-binary/src/main.rs b/rust/operator-binary/src/main.rs index 5c9b3b81..296a18b6 100644 --- a/rust/operator-binary/src/main.rs +++ b/rust/operator-binary/src/main.rs @@ -2,30 +2,39 @@ // This will need changes in our and upstream error types. #![allow(clippy::result_large_err)] -use std::{os::unix::prelude::FileTypeExt, path::PathBuf, pin::pin}; +use std::{os::unix::prelude::FileTypeExt, path::PathBuf}; -use anyhow::Context; +use anyhow::{Context, anyhow}; use clap::Parser; use csi_server::{ controller::SecretProvisionerController, identity::SecretProvisionerIdentity, node::SecretProvisionerNode, }; -use futures::{FutureExt, TryStreamExt}; +use futures::{FutureExt, TryFutureExt, TryStreamExt, try_join}; use grpc::csi::v1::{ controller_server::ControllerServer, identity_server::IdentityServer, node_server::NodeServer, }; use stackable_operator::{ YamlSchema, - cli::{CommonOptions, ProductOperatorRun}, + cli::{CommonOptions, RunArguments}, + client::Client, + crd::maintainer::{ + CustomResourceDefinitionMaintainer, CustomResourceDefinitionMaintainerOptions, + }, shared::yaml::SerializeOptions, telemetry::Tracing, + webhook::WebhookServer, +}; +use tokio::{ + signal::unix::{SignalKind, signal}, + sync::oneshot, }; -use tokio::signal::unix::{SignalKind, signal}; use tokio_stream::wrappers::UnixListenerStream; use tonic::transport::Server; use utils::{TonicUnixStream, uds_bind_private}; +use webhooks::conversion::conversion_webhook; -use crate::crd::{SecretClass, TrustStore}; +use crate::crd::{SecretClass, SecretClassVersion, TrustStore, TrustStoreVersion, v1alpha2}; mod backend; mod crd; @@ -35,6 +44,7 @@ mod format; mod grpc; mod truststore_controller; mod utils; +mod webhooks; pub const OPERATOR_NAME: &str = "secrets.stackable.tech"; @@ -60,7 +70,7 @@ struct SecretOperatorRun { privileged: bool, #[clap(flatten)] - common: ProductOperatorRun, + common: RunArguments, } mod built_info { @@ -72,7 +82,7 @@ async fn main() -> anyhow::Result<()> { let opts = Opts::parse(); match opts.cmd { stackable_operator::cli::Command::Crd => { - SecretClass::merged_crd(crd::SecretClassVersion::V1Alpha1)? + SecretClass::merged_crd(crd::SecretClassVersion::V1Alpha2)? .print_yaml_schema(built_info::PKG_VERSION, SerializeOptions::default())?; TrustStore::merged_crd(crd::TrustStoreVersion::V1Alpha1)? .print_yaml_schema(built_info::PKG_VERSION, SerializeOptions::default())?; @@ -81,7 +91,7 @@ async fn main() -> anyhow::Result<()> { csi_endpoint, privileged, common: - ProductOperatorRun { + RunArguments { common: CommonOptions { telemetry, @@ -89,7 +99,8 @@ async fn main() -> anyhow::Result<()> { }, product_config: _, watch_namespace, - operator_environment: _, + operator_environment, + maintenance, }, }) => { // NOTE (@NickLarsenNZ): Before stackable-telemetry was used: @@ -119,40 +130,92 @@ async fn main() -> anyhow::Result<()> { { let _ = std::fs::remove_file(&csi_endpoint); } + + let (conversion_webhook, certificate_rx) = conversion_webhook(&operator_environment) + .await + .context("failed to create conversion webhook")?; + + let (maintainer, initial_reconcile_rx) = CustomResourceDefinitionMaintainer::new( + client.as_kube_client(), + certificate_rx, + [ + SecretClass::merged_crd(SecretClassVersion::V1Alpha2).unwrap(), + TrustStore::merged_crd(TrustStoreVersion::V1Alpha1).unwrap(), + ], + CustomResourceDefinitionMaintainerOptions { + operator_service_name: operator_environment.operator_service_name, + operator_namespace: operator_environment.operator_namespace, + field_manager: OPERATOR_NAME.to_owned(), + webhook_https_port: WebhookServer::DEFAULT_HTTPS_PORT, + disabled: maintenance.disable_crd_maintenance, + }, + ); + let mut sigterm = signal(SignalKind::terminate())?; - let csi_server = pin!( - Server::builder() - .add_service( - tonic_reflection::server::Builder::configure() - .include_reflection_service(true) - .register_encoded_file_descriptor_set(grpc::FILE_DESCRIPTOR_SET_BYTES) - .build_v1()?, - ) - .add_service(IdentityServer::new(SecretProvisionerIdentity)) - .add_service(ControllerServer::new(SecretProvisionerController { - client: client.clone(), - })) - .add_service(NodeServer::new(SecretProvisionerNode { - client: client.clone(), - node_name: cluster_info.kubernetes_node_name.to_owned(), - privileged, - })) - .serve_with_incoming_shutdown( - UnixListenerStream::new( - uds_bind_private(csi_endpoint) - .context("failed to bind CSI listener")?, - ) - .map_ok(TonicUnixStream), - sigterm.recv().map(|_| ()), + let csi_server = Server::builder() + .add_service( + tonic_reflection::server::Builder::configure() + .include_reflection_service(true) + .register_encoded_file_descriptor_set(grpc::FILE_DESCRIPTOR_SET_BYTES) + .build_v1()?, + ) + .add_service(IdentityServer::new(SecretProvisionerIdentity)) + .add_service(ControllerServer::new(SecretProvisionerController { + client: client.clone(), + })) + .add_service(NodeServer::new(SecretProvisionerNode { + client: client.clone(), + node_name: cluster_info.kubernetes_node_name.to_owned(), + privileged, + })) + .serve_with_incoming_shutdown( + UnixListenerStream::new( + uds_bind_private(csi_endpoint).context("failed to bind CSI listener")?, ) - ); + .map_ok(TonicUnixStream), + sigterm.recv().map(|_| ()), + ) + .map_err(|err| anyhow!(err).context("failed to run csi server")); + let truststore_controller = - pin!(truststore_controller::start(&client, &watch_namespace).map(Ok)); - futures::future::select(csi_server, truststore_controller) - .await - .factor_first() - .0?; + truststore_controller::start(&client, &watch_namespace).map(anyhow::Ok); + + let conversion_webhook = conversion_webhook + .run() + .map_err(|err| anyhow!(err).context("failed to run conversion webhook")); + + let maintainer = maintainer + .run() + .map_err(|err| anyhow!(err).context("failed to run CRD maintainer")); + + let cr_applier = apply_crs(initial_reconcile_rx, client.clone()) + .map_err(|err| anyhow!(err).context("failed to apply default custom resources")); + + try_join!( + csi_server, + truststore_controller, + conversion_webhook, + maintainer, + cr_applier, + )?; } } Ok(()) } + +async fn apply_crs( + initial_reconcile_rx: oneshot::Receiver<()>, + client: Client, +) -> anyhow::Result<()> { + initial_reconcile_rx.await?; + + tracing::info!("applying default custom resources"); + + let deserializer = serde_yaml::Deserializer::from_slice(include_bytes!("secretclass.yaml")); + let tls_secret_class: v1alpha2::SecretClass = + serde_yaml::with::singleton_map_recursive::deserialize(deserializer)?; + + client.create_if_missing(&tls_secret_class).await?; + + Ok(()) +} diff --git a/rust/operator-binary/src/secretclass.yaml b/rust/operator-binary/src/secretclass.yaml new file mode 100644 index 00000000..badd5b3c --- /dev/null +++ b/rust/operator-binary/src/secretclass.yaml @@ -0,0 +1,13 @@ +--- +apiVersion: secrets.stackable.tech/v1alpha2 +kind: SecretClass +metadata: + name: tls +spec: + backend: + autoTls: + ca: + secret: + name: secret-provisioner-tls-ca + namespace: stackable-operator + autoGenerate: true diff --git a/rust/operator-binary/src/truststore_controller.rs b/rust/operator-binary/src/truststore_controller.rs index 28bec96d..6045c386 100644 --- a/rust/operator-binary/src/truststore_controller.rs +++ b/rust/operator-binary/src/truststore_controller.rs @@ -32,7 +32,7 @@ use strum::{EnumDiscriminants, IntoStaticStr}; use crate::{ OPERATOR_NAME, backend::{self, SecretBackendError, TrustSelector}, - crd::v1alpha1, + crd::{v1alpha1, v1alpha2}, format::{ self, well_known::{CompatibilityOptions, NamingOptions}, @@ -60,7 +60,7 @@ pub async fn start(client: &stackable_operator::client::Client, watch_namespace: controller .watches_stream( watcher( - client.get_api::>(&()), + client.get_api::>(&()), watcher::Config::default(), ) .reflect(secretclasses_writer) @@ -124,15 +124,15 @@ pub async fn start(client: &stackable_operator::client::Client, watch_namespace: .await; } -/// Resolves modifications to dependencies of [`v1alpha1::SecretClass`] objects into +/// Resolves modifications to dependencies of [`v1alpha2::SecretClass`] objects into /// a list of affected [`v1alpha1::TrustStore`]s. fn secretclass_dependency_watch_mapper( truststores: reflector::Store>, - secretclasses: reflector::Store>, - reference_conditions: impl Copy + Fn(&v1alpha1::SecretClass, &Dep) -> Conds, + secretclasses: reflector::Store>, + reference_conditions: impl Copy + Fn(&v1alpha2::SecretClass, &Dep) -> Conds, ) -> impl Fn(Dep) -> Vec>> where - Conds: IntoIterator, + Conds: IntoIterator, { move |dep| { let potentially_matching_secretclasses = @@ -148,8 +148,8 @@ where }) }) .collect::, - Vec, + ObjectRef, + Vec, >>(); truststores .state() @@ -160,7 +160,7 @@ where return false; }; let secret_class_ref = - ObjectRef::::new(&ts.spec.secret_class_name); + ObjectRef::::new(&ts.spec.secret_class_name); potentially_matching_secretclasses .get(&secret_class_ref) .is_some_and(|conds| { @@ -186,13 +186,13 @@ pub enum Error { #[snafu(display("failed to get {secret_class} for TrustStore"))] GetSecretClass { source: stackable_operator::client::Error, - secret_class: ObjectRef, + secret_class: ObjectRef, }, #[snafu(display("failed to initialize SecretClass backend for {secret_class}"))] InitBackend { source: backend::dynamic::FromClassError, - secret_class: ObjectRef, + secret_class: ObjectRef, }, #[snafu(display("failed to get trust data from backend"))] @@ -204,7 +204,7 @@ pub enum Error { #[snafu(display("failed to convert trust data into desired format"))] FormatData { source: format::IntoFilesError, - secret_class: ObjectRef, + secret_class: ObjectRef, }, #[snafu(display("failed to build owner reference to the TrustStore"))] @@ -262,10 +262,10 @@ async fn reconcile( let secret_class_name = &truststore.spec.secret_class_name; let secret_class = ctx .client - .get::(secret_class_name, &()) + .get::(secret_class_name, &()) .await .context(GetSecretClassSnafu { - secret_class: ObjectRef::::new(secret_class_name), + secret_class: ObjectRef::::new(secret_class_name), })?; let secret_class_ref = secret_class.to_object_ref(()); let backend = backend::dynamic::from_class(&ctx.client, secret_class) diff --git a/rust/operator-binary/src/webhooks/conversion.rs b/rust/operator-binary/src/webhooks/conversion.rs new file mode 100644 index 00000000..388c2dbb --- /dev/null +++ b/rust/operator-binary/src/webhooks/conversion.rs @@ -0,0 +1,33 @@ +use stackable_operator::{ + cli::OperatorEnvironmentOptions, + webhook::{ + servers::{ConversionWebhookOptions, ConversionWebhookServer}, + x509_cert::Certificate, + }, +}; +use tokio::sync::mpsc; + +use crate::crd::{SecretClass, SecretClassVersion, TrustStore, TrustStoreVersion}; + +pub async fn conversion_webhook( + operator_environment: &OperatorEnvironmentOptions, +) -> anyhow::Result<(ConversionWebhookServer, mpsc::Receiver)> { + let crds_and_handlers = [ + ( + SecretClass::merged_crd(SecretClassVersion::V1Alpha2)?, + SecretClass::try_convert as fn(_) -> _, + ), + ( + TrustStore::merged_crd(TrustStoreVersion::V1Alpha1)?, + TrustStore::try_convert as fn(_) -> _, + ), + ]; + + let options = ConversionWebhookOptions { + socket_addr: ConversionWebhookServer::DEFAULT_SOCKET_ADDRESS, + namespace: operator_environment.operator_namespace.clone(), + service_name: operator_environment.operator_service_name.clone(), + }; + + Ok(ConversionWebhookServer::new(crds_and_handlers, options).await?) +} diff --git a/rust/operator-binary/src/webhooks/mod.rs b/rust/operator-binary/src/webhooks/mod.rs new file mode 100644 index 00000000..11eb2fc0 --- /dev/null +++ b/rust/operator-binary/src/webhooks/mod.rs @@ -0,0 +1 @@ +pub mod conversion;