diff --git a/CHANGELOG.md b/CHANGELOG.md index 1a634586..c6825b84 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ All notable changes to this project will be documented in this file. ### Added +- - Add end-of-support checker which can be controlled with environment variables and CLI arguments ([#804]). + - `EOS_CHECK_MODE` (`--eos-check-mode`) to set the EoS check mode. Currently, only "offline" is supported. + - `EOS_INTERVAL` (`--eos-interval`) to set the interval in which the operator checks if it is EoS. + - `EOS_DISABLED` (`--eos-disabled`) to disable the EoS checker completely. - Support for fault-tolerant execution ([#779], [#793]). - Support for the client spooling protocol ([#793]). - Helm: Allow Pod `priorityClassName` to be configured ([#798]). @@ -34,6 +38,7 @@ All notable changes to this project will be documented in this file. [#796]: https://github.com/stackabletech/trino-operator/pull/796 [#798]: https://github.com/stackabletech/trino-operator/pull/798 [#801]: https://github.com/stackabletech/trino-operator/pull/801 +[#804]: https://github.com/stackabletech/trino-operator/pull/804 ## [25.7.0] - 2025-07-23 diff --git a/Cargo.lock b/Cargo.lock index e853b24f..8fb1c2ab 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -261,18 +261,18 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[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" @@ -425,16 +425,6 @@ dependencies = [ "unicode-segmentation", ] -[[package]] -name = "core-foundation" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" -dependencies = [ - "core-foundation-sys", - "libc", -] - [[package]] name = "core-foundation" version = "0.10.1" @@ -494,38 +484,14 @@ dependencies = [ "typenum", ] -[[package]] -name = "darling" -version = "0.20.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" -dependencies = [ - "darling_core 0.20.11", - "darling_macro 0.20.11", -] - [[package]] name = "darling" version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08440b3dd222c3d0433e63e097463969485f112baff337dfdaca043a0d760570" dependencies = [ - "darling_core 0.21.2", - "darling_macro 0.21.2", -] - -[[package]] -name = "darling_core" -version = "0.20.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 2.0.106", + "darling_core", + "darling_macro", ] [[package]] @@ -542,24 +508,13 @@ dependencies = [ "syn 2.0.106", ] -[[package]] -name = "darling_macro" -version = "0.20.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" -dependencies = [ - "darling_core 0.20.11", - "quote", - "syn 2.0.106", -] - [[package]] name = "darling_macro" version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce154b9bea7fb0c8e8326e62d00354000c36e79770ff21b8c84e3aa267d9d531" dependencies = [ - "darling_core 0.21.2", + "darling_core", "quote", "syn 2.0.106", ] @@ -736,9 +691,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", @@ -999,30 +954,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" @@ -1118,26 +1049,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" @@ -1149,7 +1060,7 @@ dependencies = [ "hyper-util", "log", "rustls", - "rustls-native-certs 0.8.1", + "rustls-native-certs", "rustls-pki-types", "tokio", "tokio-rustls", @@ -1462,9 +1373,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", @@ -1476,18 +1387,18 @@ dependencies = [ [[package]] name = "k8s-version" version = "0.1.3" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.95.0#20659fe864c643fe48c7ff70ed417f0ed05ccf45" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.99.0#be422046081be2fb9f37dfece660e007273f4e32" dependencies = [ - "darling 0.21.2", + "darling", "regex", "snafu 0.8.7", ] [[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", @@ -1498,9 +1409,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", @@ -1512,7 +1423,6 @@ dependencies = [ "http-body", "http-body-util", "hyper", - "hyper-http-proxy", "hyper-rustls", "hyper-timeout", "hyper-util", @@ -1535,9 +1445,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", @@ -1554,11 +1464,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", @@ -1568,9 +1478,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", @@ -1789,9 +1699,9 @@ dependencies = [ [[package]] name = "opentelemetry" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaf416e4cb72756655126f7dd7bb0af49c674f4c1b9903e80c009e0c37e552e6" +checksum = "b84bcd6ae87133e903af7ef497404dda70c60d0ea14895fc8a5e6722754fc2a0" dependencies = [ "futures-core", "futures-sink", @@ -1803,9 +1713,9 @@ dependencies = [ [[package]] name = "opentelemetry-appender-tracing" -version = "0.30.1" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e68f63eca5fad47e570e00e893094fc17be959c80c79a7d6ec1abdd5ae6ffc16" +checksum = "ef6a1ac5ca3accf562b8c306fa8483c85f4390f768185ab775f242f7fe8fdcc2" dependencies = [ "opentelemetry", "tracing", @@ -1815,9 +1725,9 @@ dependencies = [ [[package]] name = "opentelemetry-http" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f6639e842a97dbea8886e3439710ae463120091e2e064518ba8e716e6ac36d" +checksum = "d7a6d09a73194e6b66df7c8f1b680f156d916a1a942abf2de06823dd02b7855d" dependencies = [ "async-trait", "bytes", @@ -1828,9 +1738,9 @@ dependencies = [ [[package]] name = "opentelemetry-otlp" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbee664a43e07615731afc539ca60c6d9f1a9425e25ca09c57bc36c87c55852b" +checksum = "7a2366db2dca4d2ad033cad11e6ee42844fd727007af5ad04a1730f4cb8163bf" dependencies = [ "http", "opentelemetry", @@ -1847,27 +1757,28 @@ dependencies = [ [[package]] name = "opentelemetry-proto" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e046fd7660710fe5a05e8748e70d9058dc15c94ba914e7c4faa7c728f0e8ddc" +checksum = "a7175df06de5eaee9909d4805a3d07e28bb752c34cab57fa9cff549da596b30f" dependencies = [ "opentelemetry", "opentelemetry_sdk", "prost", "tonic", + "tonic-prost", ] [[package]] name = "opentelemetry-semantic-conventions" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83d059a296a47436748557a353c5e6c5705b9470ef6c95cfc52c21a8814ddac2" +checksum = "e62e29dfe041afb8ed2a6c9737ab57db4907285d999ef8ad3a59092a36bdc846" [[package]] name = "opentelemetry_sdk" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f644aa9e5e31d11896e024305d7e3c98a88884d9f8919dbf37a9991bc47a4b" +checksum = "e14ae4f5991976fd48df6d843de219ca6d31b01daaab2dad5af2badeded372bd" dependencies = [ "futures-channel", "futures-executor", @@ -1875,7 +1786,6 @@ dependencies = [ "opentelemetry", "percent-encoding", "rand", - "serde_json", "thiserror 2.0.16", "tokio", "tokio-stream", @@ -2061,8 +1971,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", @@ -2072,14 +1982,14 @@ dependencies = [ "serde_json", "serde_yaml", "snafu 0.8.7", - "xml-rs", + "xml", ] [[package]] name = "prost" -version = "0.13.5" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" +checksum = "7231bd9b3d3d33c86b58adbac74b5ec0ad9f496b19d22801d773636feaa95f3d" dependencies = [ "bytes", "prost-derive", @@ -2087,9 +1997,9 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.13.5" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" +checksum = "9120690fafc389a67ba3803df527d0ec9cbbc9cc45e4cc20b332996dfb672425" dependencies = [ "anyhow", "itertools", @@ -2151,6 +2061,26 @@ dependencies = [ "bitflags", ] +[[package]] +name = "ref-cast" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "regex" version = "1.11.1" @@ -2293,19 +2223,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" @@ -2315,16 +2232,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", ] [[package]] @@ -2370,11 +2278,12 @@ dependencies = [ [[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", @@ -2383,9 +2292,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", @@ -2408,19 +2317,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "security-framework" -version = "2.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" -dependencies = [ - "bitflags", - "core-foundation 0.9.4", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - [[package]] name = "security-framework" version = "3.3.0" @@ -2428,7 +2324,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "80fb1d92c5028aa318b4b8bd7302a5bfcf48be96a37fc6fc790f806b0004ee0c" dependencies = [ "bitflags", - "core-foundation 0.10.1", + "core-foundation", "core-foundation-sys", "libc", "security-framework-sys", @@ -2538,17 +2434,6 @@ dependencies = [ "unsafe-libyaml", ] -[[package]] -name = "sha1" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sha2" version = "0.10.9" @@ -2656,8 +2541,8 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "stackable-operator" -version = "0.95.0" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.95.0#20659fe864c643fe48c7ff70ed417f0ed05ccf45" +version = "0.99.0" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.99.0#be422046081be2fb9f37dfece660e007273f4e32" dependencies = [ "chrono", "clap", @@ -2695,9 +2580,9 @@ dependencies = [ [[package]] name = "stackable-operator-derive" version = "0.3.1" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.95.0#20659fe864c643fe48c7ff70ed417f0ed05ccf45" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.99.0#be422046081be2fb9f37dfece660e007273f4e32" dependencies = [ - "darling 0.21.2", + "darling", "proc-macro2", "quote", "syn 2.0.106", @@ -2705,9 +2590,10 @@ dependencies = [ [[package]] name = "stackable-shared" -version = "0.0.2" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.95.0#20659fe864c643fe48c7ff70ed417f0ed05ccf45" +version = "0.0.3" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.99.0#be422046081be2fb9f37dfece660e007273f4e32" dependencies = [ + "chrono", "k8s-openapi", "kube", "schemars", @@ -2722,7 +2608,7 @@ dependencies = [ [[package]] name = "stackable-telemetry" version = "0.6.1" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.95.0#20659fe864c643fe48c7ff70ed417f0ed05ccf45" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.99.0#be422046081be2fb9f37dfece660e007273f4e32" dependencies = [ "axum", "clap", @@ -2769,8 +2655,8 @@ dependencies = [ [[package]] name = "stackable-versioned" -version = "0.8.1" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.95.0#20659fe864c643fe48c7ff70ed417f0ed05ccf45" +version = "0.8.2" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.99.0#be422046081be2fb9f37dfece660e007273f4e32" dependencies = [ "schemars", "serde", @@ -2782,11 +2668,11 @@ dependencies = [ [[package]] name = "stackable-versioned-macros" -version = "0.8.1" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.95.0#20659fe864c643fe48c7ff70ed417f0ed05ccf45" +version = "0.8.2" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.99.0#be422046081be2fb9f37dfece660e007273f4e32" dependencies = [ "convert_case", - "darling 0.21.2", + "darling", "indoc", "itertools", "k8s-openapi", @@ -3047,9 +2933,9 @@ dependencies = [ [[package]] name = "tonic" -version = "0.13.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e581ba15a835f4d9ea06c55ab1bd4dce26fc53752c69a04aac00703bfb49ba9" +checksum = "eb7613188ce9f7df5bfe185db26c5814347d110db17920415cf2fbcad85e7203" dependencies = [ "async-trait", "base64", @@ -3063,7 +2949,7 @@ dependencies = [ "hyper-util", "percent-encoding", "pin-project", - "prost", + "sync_wrapper", "tokio", "tokio-stream", "tower", @@ -3072,6 +2958,17 @@ dependencies = [ "tracing", ] +[[package]] +name = "tonic-prost" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66bd50ad6ce1252d87ef024b3d64fe4c3cf54a86fb9ef4c631fdd0ded7aeaa67" +dependencies = [ + "bytes", + "prost", + "tonic", +] + [[package]] name = "tower" version = "0.5.2" @@ -3182,15 +3079,16 @@ dependencies = [ [[package]] name = "tracing-opentelemetry" -version = "0.31.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddcf5959f39507d0d04d6413119c04f33b623f4f951ebcbdddddfad2d0623a9c" +checksum = "1e6e5658463dd88089aba75c7791e1d3120633b1bfde22478b28f625a9bb1b8e" dependencies = [ "js-sys", - "once_cell", "opentelemetry", "opentelemetry_sdk", + "rustversion", "smallvec", + "thiserror 2.0.16", "tracing", "tracing-core", "tracing-log", @@ -3674,10 +3572,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" [[package]] -name = "xml-rs" -version = "0.8.27" +name = "xml" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fd8403733700263c6eb89f192880191f1b83e332f7a20371ddcf421c4a337c7" +checksum = "72e6e0a83ae73d886ab66fc2f82b598fbbb8f373357d5f2f9f783e50e4d06435" [[package]] name = "yoke" diff --git a/Cargo.nix b/Cargo.nix index 24d52494..b8cfa667 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -884,9 +884,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 " @@ -900,21 +900,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" ]; @@ -1358,7 +1363,7 @@ rec { "random" = [ "rand" ]; }; }; - "core-foundation 0.10.1" = rec { + "core-foundation" = rec { crateName = "core-foundation"; version = "0.10.1"; edition = "2021"; @@ -1387,38 +1392,6 @@ rec { }; resolvedDefaultFeatures = [ "default" "link" ]; }; - "core-foundation 0.9.4" = rec { - crateName = "core-foundation"; - version = "0.9.4"; - edition = "2018"; - sha256 = "13zvbbj07yk3b61b8fhwfzhy35535a583irf23vlcg59j7h9bqci"; - libName = "core_foundation"; - authors = [ - "The Servo Project Developers" - ]; - dependencies = [ - { - name = "core-foundation-sys"; - packageId = "core-foundation-sys"; - usesDefaultFeatures = false; - } - { - name = "libc"; - packageId = "libc"; - } - ]; - features = { - "chrono" = [ "dep:chrono" ]; - "default" = [ "link" ]; - "link" = [ "core-foundation-sys/link" ]; - "mac_os_10_7_support" = [ "core-foundation-sys/mac_os_10_7_support" ]; - "mac_os_10_8_features" = [ "core-foundation-sys/mac_os_10_8_features" ]; - "uuid" = [ "dep:uuid" ]; - "with-chrono" = [ "chrono" ]; - "with-uuid" = [ "uuid" ]; - }; - resolvedDefaultFeatures = [ "default" "link" ]; - }; "core-foundation-sys" = rec { crateName = "core-foundation-sys"; version = "0.8.7"; @@ -1544,34 +1517,8 @@ rec { "getrandom" = [ "rand_core/getrandom" ]; "rand_core" = [ "dep:rand_core" ]; }; - resolvedDefaultFeatures = [ "std" ]; - }; - "darling 0.20.11" = rec { - crateName = "darling"; - version = "0.20.11"; - edition = "2021"; - sha256 = "1vmlphlrlw4f50z16p4bc9p5qwdni1ba95qmxfrrmzs6dh8lczzw"; - authors = [ - "Ted Driggs " - ]; - dependencies = [ - { - name = "darling_core"; - packageId = "darling_core 0.20.11"; - } - { - name = "darling_macro"; - packageId = "darling_macro 0.20.11"; - } - ]; - features = { - "default" = [ "suggestions" ]; - "diagnostics" = [ "darling_core/diagnostics" ]; - "suggestions" = [ "darling_core/suggestions" ]; - }; - resolvedDefaultFeatures = [ "default" "suggestions" ]; }; - "darling 0.21.2" = rec { + "darling" = rec { crateName = "darling"; version = "0.21.2"; edition = "2021"; @@ -1582,11 +1529,11 @@ rec { dependencies = [ { name = "darling_core"; - packageId = "darling_core 0.21.2"; + packageId = "darling_core"; } { name = "darling_macro"; - packageId = "darling_macro 0.21.2"; + packageId = "darling_macro"; } ]; features = { @@ -1597,49 +1544,7 @@ rec { }; resolvedDefaultFeatures = [ "default" "suggestions" ]; }; - "darling_core 0.20.11" = rec { - crateName = "darling_core"; - version = "0.20.11"; - edition = "2021"; - sha256 = "0bj1af6xl4ablnqbgn827m43b8fiicgv180749f5cphqdmcvj00d"; - authors = [ - "Ted Driggs " - ]; - dependencies = [ - { - name = "fnv"; - packageId = "fnv"; - } - { - name = "ident_case"; - packageId = "ident_case"; - } - { - name = "proc-macro2"; - packageId = "proc-macro2"; - } - { - name = "quote"; - packageId = "quote"; - } - { - name = "strsim"; - packageId = "strsim"; - optional = true; - } - { - name = "syn"; - packageId = "syn 2.0.106"; - features = [ "full" "extra-traits" ]; - } - ]; - features = { - "strsim" = [ "dep:strsim" ]; - "suggestions" = [ "strsim" ]; - }; - resolvedDefaultFeatures = [ "strsim" "suggestions" ]; - }; - "darling_core 0.21.2" = rec { + "darling_core" = rec { crateName = "darling_core"; version = "0.21.2"; edition = "2021"; @@ -1682,32 +1587,7 @@ rec { }; resolvedDefaultFeatures = [ "strsim" "suggestions" ]; }; - "darling_macro 0.20.11" = rec { - crateName = "darling_macro"; - version = "0.20.11"; - edition = "2021"; - sha256 = "1bbfbc2px6sj1pqqq97bgqn6c8xdnb2fmz66f7f40nrqrcybjd7w"; - procMacro = true; - authors = [ - "Ted Driggs " - ]; - dependencies = [ - { - name = "darling_core"; - packageId = "darling_core 0.20.11"; - } - { - name = "quote"; - packageId = "quote"; - } - { - name = "syn"; - packageId = "syn 2.0.106"; - } - ]; - - }; - "darling_macro 0.21.2" = rec { + "darling_macro" = rec { crateName = "darling_macro"; version = "0.21.2"; edition = "2021"; @@ -1719,7 +1599,7 @@ rec { dependencies = [ { name = "darling_core"; - packageId = "darling_core 0.21.2"; + packageId = "darling_core"; } { name = "quote"; @@ -1909,7 +1789,7 @@ rec { "std" = [ "alloc" "crypto-common/std" ]; "subtle" = [ "dep:subtle" ]; }; - resolvedDefaultFeatures = [ "alloc" "block-buffer" "core-api" "default" "std" ]; + resolvedDefaultFeatures = [ "block-buffer" "core-api" "default" ]; }; "displaydoc" = rec { crateName = "displaydoc"; @@ -2215,13 +2095,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 = [ { @@ -3064,64 +2945,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"; @@ -3397,104 +3220,6 @@ rec { }; resolvedDefaultFeatures = [ "client" "default" "http1" "http2" "server" ]; }; - "hyper-http-proxy" = rec { - crateName = "hyper-http-proxy"; - version = "1.1.0"; - edition = "2021"; - sha256 = "023w7w9si4zs5phfj30g3dkkk713ipix10dsqj5h443mwfhv1m3s"; - libName = "hyper_http_proxy"; - authors = [ - "MetalBear Tech LTD " - ]; - dependencies = [ - { - name = "bytes"; - packageId = "bytes"; - } - { - name = "futures-util"; - packageId = "futures-util"; - usesDefaultFeatures = false; - } - { - name = "headers"; - packageId = "headers"; - } - { - name = "http"; - packageId = "http"; - } - { - 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" ]; - } - { - name = "pin-project-lite"; - packageId = "pin-project-lite"; - } - { - name = "rustls-native-certs"; - packageId = "rustls-native-certs 0.7.3"; - optional = true; - } - { - name = "tokio"; - packageId = "tokio"; - features = [ "io-std" "io-util" ]; - } - { - name = "tokio-rustls"; - packageId = "tokio-rustls"; - optional = true; - usesDefaultFeatures = false; - } - { - name = "tower-service"; - packageId = "tower-service"; - } - ]; - devDependencies = [ - { - name = "hyper"; - packageId = "hyper"; - features = [ "client" "http1" ]; - } - { - name = "hyper-util"; - packageId = "hyper-util"; - features = [ "client" "client-legacy" "http1" "tokio" ]; - } - { - name = "tokio"; - packageId = "tokio"; - features = [ "full" ]; - } - ]; - 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" ]; - }; - resolvedDefaultFeatures = [ "__rustls" "__tls" "rustls-tls-native-roots" ]; - }; "hyper-rustls" = rec { crateName = "hyper-rustls"; version = "0.27.7"; @@ -3529,7 +3254,7 @@ rec { } { name = "rustls-native-certs"; - packageId = "rustls-native-certs 0.8.1"; + packageId = "rustls-native-certs"; optional = true; } { @@ -4558,10 +4283,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 " @@ -4600,10 +4325,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"; @@ -4612,8 +4337,8 @@ rec { workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "20659fe864c643fe48c7ff70ed417f0ed05ccf45"; - sha256 = "0db745j2nz5kz5mp8sh8af26gh9wx3cdad7ggl9f9jki1ms534z0"; + rev = "be422046081be2fb9f37dfece660e007273f4e32"; + sha256 = "14mp7m9x1d6s1xxhdh5rqvkxdksmz96km1hfn0yshdfw6ic5m8cv"; }; libName = "k8s_version"; authors = [ @@ -4622,7 +4347,7 @@ rec { dependencies = [ { name = "darling"; - packageId = "darling 0.21.2"; + packageId = "darling"; optional = true; } { @@ -4642,9 +4367,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 " @@ -4715,9 +4440,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 " @@ -4778,12 +4503,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"; @@ -4921,12 +4640,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" ]; @@ -4939,9 +4656,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" ]; @@ -4956,9 +4673,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 " @@ -5038,9 +4755,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 = [ @@ -5051,7 +4768,7 @@ rec { dependencies = [ { name = "darling"; - packageId = "darling 0.20.11"; + packageId = "darling"; } { name = "proc-macro2"; @@ -5087,9 +4804,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 " @@ -5766,9 +5483,9 @@ rec { }; "opentelemetry" = rec { crateName = "opentelemetry"; - version = "0.30.0"; + version = "0.31.0"; edition = "2021"; - sha256 = "1rjjwlvhr7h01kl0768v9i7ng77l1axxfzbg29ancxbjrgj1dx5a"; + sha256 = "18629xsj4rsyiby9aj511q6wcw6s9m09gx3ymw1yjcvix1mcsjxq"; dependencies = [ { name = "futures-core"; @@ -5820,14 +5537,15 @@ rec { }; "opentelemetry-appender-tracing" = rec { crateName = "opentelemetry-appender-tracing"; - version = "0.30.1"; + version = "0.31.1"; edition = "2021"; - sha256 = "05pwdypdbg8sxkbafy8cr1cyjyy19w4r7s001rbpxm7slpn673z6"; + sha256 = "1hnwizzgfhpjfnvml638yy846py8hf2gl1n3p1igbk1srb2ilspg"; libName = "opentelemetry_appender_tracing"; dependencies = [ { name = "opentelemetry"; packageId = "opentelemetry"; + usesDefaultFeatures = false; features = [ "logs" ]; } { @@ -5873,9 +5591,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 = [ { @@ -5895,6 +5613,7 @@ rec { { name = "opentelemetry"; packageId = "opentelemetry"; + usesDefaultFeatures = false; features = [ "trace" ]; } { @@ -5902,7 +5621,6 @@ rec { packageId = "reqwest"; optional = true; usesDefaultFeatures = false; - features = [ "blocking" ]; } ]; features = { @@ -5910,16 +5628,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 = [ { @@ -5938,6 +5657,7 @@ rec { name = "opentelemetry-http"; packageId = "opentelemetry-http"; optional = true; + usesDefaultFeatures = false; } { name = "opentelemetry-proto"; @@ -5986,6 +5706,12 @@ rec { } ]; devDependencies = [ + { + name = "opentelemetry_sdk"; + packageId = "opentelemetry_sdk"; + usesDefaultFeatures = false; + features = [ "trace" "testing" ]; + } { name = "tokio"; packageId = "tokio"; @@ -6001,20 +5727,22 @@ rec { ]; 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" ]; @@ -6028,15 +5756,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 = [ { @@ -6059,36 +5789,51 @@ rec { packageId = "tonic"; optional = true; usesDefaultFeatures = false; - features = [ "codegen" "prost" ]; + features = [ "codegen" ]; + } + { + 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 = { }; @@ -6096,9 +5841,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"; @@ -6117,6 +5862,7 @@ rec { { name = "opentelemetry"; packageId = "opentelemetry"; + usesDefaultFeatures = false; } { name = "percent-encoding"; @@ -6130,11 +5876,6 @@ rec { 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"; @@ -6145,7 +5886,6 @@ rec { packageId = "tokio"; optional = true; usesDefaultFeatures = false; - features = [ "rt" "time" ]; } { name = "tokio-stream"; @@ -6160,17 +5900,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" ]; @@ -6181,7 +5921,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"; @@ -6636,13 +6376,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 = [ @@ -6683,17 +6423,17 @@ rec { packageId = "snafu 0.8.7"; } { - name = "xml-rs"; - packageId = "xml-rs"; + name = "xml"; + packageId = "xml"; } ]; }; "prost" = rec { crateName = "prost"; - version = "0.13.5"; + version = "0.14.1"; edition = "2021"; - sha256 = "1r8yi6zxxwv9gq5ia9p55nspgwmchs94sqpp64x33v5k3njgm5i7"; + sha256 = "0gazm7m6yqvksw0jilhrdd4rzbf0br5wgfmdb1mwhcrx7ndvscbj"; authors = [ "Dan Burkert " "Lucio Franco " @@ -6715,15 +6455,14 @@ rec { features = { "default" = [ "derive" "std" ]; "derive" = [ "dep:prost-derive" ]; - "prost-derive" = [ "derive" ]; }; resolvedDefaultFeatures = [ "default" "derive" "std" ]; }; "prost-derive" = rec { crateName = "prost-derive"; - version = "0.13.5"; + version = "0.14.1"; edition = "2021"; - sha256 = "0kgc9gbzsa998xixblfi3kfydka64zqf6rmpm53b761cjxbxfmla"; + sha256 = "0994czxnv69jnchcrr25rk4vp77cs0kzagc0ldxsd2f3mw7nj84i"; procMacro = true; libName = "prost_derive"; authors = [ @@ -6905,6 +6644,49 @@ rec { }; resolvedDefaultFeatures = [ "default" "userspace" ]; }; + "ref-cast" = rec { + crateName = "ref-cast"; + version = "1.0.25"; + edition = "2021"; + sha256 = "0zdzc34qjva9xxgs889z5iz787g81hznk12zbk4g2xkgwq530m7k"; + 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.25"; + edition = "2021"; + sha256 = "1nkhn1fklmn342z5c4mzfzlxddv3x8yhxwwk02cj06djvh36065p"; + 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.1"; @@ -7537,41 +7319,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"; @@ -7596,31 +7344,12 @@ rec { } { name = "security-framework"; - packageId = "security-framework 3.3.0"; + packageId = "security-framework"; 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"; @@ -7729,9 +7458,9 @@ rec { }; "schemars" = rec { crateName = "schemars"; - version = "0.8.22"; + version = "1.0.4"; edition = "2021"; - sha256 = "05an9nbi18ynyxv1rjmwbg6j08j0496hd64mjggh53mwp3hjmgrz"; + sha256 = "1l7w773jfk6mz0v8wpahp60aslksjijlbm65ysi4y5mwj520rll2"; authors = [ "Graham Esau " ]; @@ -7740,6 +7469,10 @@ rec { name = "dyn-clone"; packageId = "dyn-clone"; } + { + name = "ref-cast"; + packageId = "ref-cast"; + } { name = "schemars_derive"; packageId = "schemars_derive"; @@ -7748,56 +7481,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 " @@ -7815,6 +7556,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"; @@ -7855,54 +7602,7 @@ rec { "serde" = [ "dep:serde" ]; }; }; - "security-framework 2.11.1" = rec { - crateName = "security-framework"; - version = "2.11.1"; - edition = "2021"; - sha256 = "00ldclwx78dm61v7wkach9lcx76awlrv0fdgjdwch4dmy12j4yw9"; - libName = "security_framework"; - authors = [ - "Steven Fackler " - "Kornel " - ]; - dependencies = [ - { - name = "bitflags"; - packageId = "bitflags"; - } - { - name = "core-foundation"; - packageId = "core-foundation 0.9.4"; - } - { - name = "core-foundation-sys"; - packageId = "core-foundation-sys"; - } - { - name = "libc"; - packageId = "libc"; - } - { - name = "security-framework-sys"; - packageId = "security-framework-sys"; - usesDefaultFeatures = false; - } - ]; - features = { - "OSX_10_10" = [ "OSX_10_9" "security-framework-sys/OSX_10_10" ]; - "OSX_10_11" = [ "OSX_10_10" "security-framework-sys/OSX_10_11" ]; - "OSX_10_12" = [ "OSX_10_11" "security-framework-sys/OSX_10_12" ]; - "OSX_10_13" = [ "OSX_10_12" "security-framework-sys/OSX_10_13" "alpn" "session-tickets" "serial-number-bigint" ]; - "OSX_10_14" = [ "OSX_10_13" "security-framework-sys/OSX_10_14" ]; - "OSX_10_15" = [ "OSX_10_14" "security-framework-sys/OSX_10_15" ]; - "OSX_10_9" = [ "security-framework-sys/OSX_10_9" ]; - "default" = [ "OSX_10_12" ]; - "log" = [ "dep:log" ]; - "serial-number-bigint" = [ "dep:num-bigint" ]; - }; - resolvedDefaultFeatures = [ "OSX_10_10" "OSX_10_11" "OSX_10_12" "OSX_10_9" "default" ]; - }; - "security-framework 3.3.0" = rec { + "security-framework" = rec { crateName = "security-framework"; version = "3.3.0"; edition = "2021"; @@ -7919,7 +7619,7 @@ rec { } { name = "core-foundation"; - packageId = "core-foundation 0.10.1"; + packageId = "core-foundation"; } { name = "core-foundation-sys"; @@ -8235,45 +7935,6 @@ rec { ]; }; - "sha1" = rec { - crateName = "sha1"; - version = "0.10.6"; - edition = "2018"; - sha256 = "1fnnxlfg08xhkmwf2ahv634as30l1i3xhlhkvxflmasi5nd85gz3"; - authors = [ - "RustCrypto Developers" - ]; - dependencies = [ - { - name = "cfg-if"; - packageId = "cfg-if"; - } - { - name = "cpufeatures"; - packageId = "cpufeatures"; - target = { target, features }: (("aarch64" == target."arch" or null) || ("x86" == target."arch" or null) || ("x86_64" == target."arch" or null)); - } - { - name = "digest"; - packageId = "digest"; - } - ]; - devDependencies = [ - { - name = "digest"; - packageId = "digest"; - features = [ "dev" ]; - } - ]; - features = { - "asm" = [ "sha1-asm" ]; - "default" = [ "std" ]; - "oid" = [ "digest/oid" ]; - "sha1-asm" = [ "dep:sha1-asm" ]; - "std" = [ "digest/std" ]; - }; - resolvedDefaultFeatures = [ "default" "std" ]; - }; "sha2" = rec { crateName = "sha2"; version = "0.10.9"; @@ -8572,13 +8233,13 @@ rec { }; "stackable-operator" = rec { crateName = "stackable-operator"; - version = "0.95.0"; + version = "0.99.0"; edition = "2024"; workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "20659fe864c643fe48c7ff70ed417f0ed05ccf45"; - sha256 = "0db745j2nz5kz5mp8sh8af26gh9wx3cdad7ggl9f9jki1ms534z0"; + rev = "be422046081be2fb9f37dfece660e007273f4e32"; + sha256 = "14mp7m9x1d6s1xxhdh5rqvkxdksmz96km1hfn0yshdfw6ic5m8cv"; }; libName = "stackable_operator"; authors = [ @@ -8637,7 +8298,7 @@ rec { name = "k8s-openapi"; packageId = "k8s-openapi"; usesDefaultFeatures = false; - features = [ "schemars" "v1_33" ]; + features = [ "schemars" "v1_34" ]; } { name = "kube"; @@ -8656,7 +8317,7 @@ rec { { name = "schemars"; packageId = "schemars"; - features = [ "url" ]; + features = [ "url2" ]; } { name = "semver"; @@ -8686,6 +8347,7 @@ rec { { name = "stackable-shared"; packageId = "stackable-shared"; + features = [ "chrono" "time" ]; } { name = "stackable-telemetry"; @@ -8729,14 +8391,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" "versioned" ]; + resolvedDefaultFeatures = [ "clap" "default" "telemetry" "versioned" ]; }; "stackable-operator-derive" = rec { crateName = "stackable-operator-derive"; @@ -8745,8 +8407,8 @@ rec { workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "20659fe864c643fe48c7ff70ed417f0ed05ccf45"; - sha256 = "0db745j2nz5kz5mp8sh8af26gh9wx3cdad7ggl9f9jki1ms534z0"; + rev = "be422046081be2fb9f37dfece660e007273f4e32"; + sha256 = "14mp7m9x1d6s1xxhdh5rqvkxdksmz96km1hfn0yshdfw6ic5m8cv"; }; procMacro = true; libName = "stackable_operator_derive"; @@ -8756,7 +8418,7 @@ rec { dependencies = [ { name = "darling"; - packageId = "darling 0.21.2"; + packageId = "darling"; } { name = "proc-macro2"; @@ -8775,24 +8437,30 @@ rec { }; "stackable-shared" = rec { crateName = "stackable-shared"; - version = "0.0.2"; + version = "0.0.3"; edition = "2024"; workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "20659fe864c643fe48c7ff70ed417f0ed05ccf45"; - sha256 = "0db745j2nz5kz5mp8sh8af26gh9wx3cdad7ggl9f9jki1ms534z0"; + rev = "be422046081be2fb9f37dfece660e007273f4e32"; + sha256 = "14mp7m9x1d6s1xxhdh5rqvkxdksmz96km1hfn0yshdfw6ic5m8cv"; }; libName = "stackable_shared"; authors = [ "Stackable GmbH " ]; dependencies = [ + { + name = "chrono"; + packageId = "chrono"; + optional = true; + usesDefaultFeatures = false; + } { name = "k8s-openapi"; packageId = "k8s-openapi"; usesDefaultFeatures = false; - features = [ "schemars" "v1_33" ]; + features = [ "schemars" "v1_34" ]; } { name = "kube"; @@ -8803,7 +8471,7 @@ rec { { name = "schemars"; packageId = "schemars"; - features = [ "url" ]; + features = [ "url2" ]; } { name = "semver"; @@ -8838,15 +8506,16 @@ rec { name = "k8s-openapi"; packageId = "k8s-openapi"; usesDefaultFeatures = false; - features = [ "schemars" "v1_33" ]; + features = [ "schemars" "v1_34" ]; } ]; features = { + "chrono" = [ "dep:chrono" ]; "default" = [ "time" ]; - "full" = [ "time" ]; + "full" = [ "chrono" "time" ]; "time" = [ "dep:time" ]; }; - resolvedDefaultFeatures = [ "default" "time" ]; + resolvedDefaultFeatures = [ "chrono" "default" "time" ]; }; "stackable-telemetry" = rec { crateName = "stackable-telemetry"; @@ -8855,8 +8524,8 @@ rec { workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "20659fe864c643fe48c7ff70ed417f0ed05ccf45"; - sha256 = "0db745j2nz5kz5mp8sh8af26gh9wx3cdad7ggl9f9jki1ms534z0"; + rev = "be422046081be2fb9f37dfece660e007273f4e32"; + sha256 = "14mp7m9x1d6s1xxhdh5rqvkxdksmz96km1hfn0yshdfw6ic5m8cv"; }; libName = "stackable_telemetry"; authors = [ @@ -9065,13 +8734,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 = "20659fe864c643fe48c7ff70ed417f0ed05ccf45"; - sha256 = "0db745j2nz5kz5mp8sh8af26gh9wx3cdad7ggl9f9jki1ms534z0"; + rev = "be422046081be2fb9f37dfece660e007273f4e32"; + sha256 = "14mp7m9x1d6s1xxhdh5rqvkxdksmz96km1hfn0yshdfw6ic5m8cv"; }; libName = "stackable_versioned"; authors = [ @@ -9081,7 +8750,7 @@ rec { { name = "schemars"; packageId = "schemars"; - features = [ "url" ]; + features = [ "url2" ]; } { name = "serde"; @@ -9109,13 +8778,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 = "20659fe864c643fe48c7ff70ed417f0ed05ccf45"; - sha256 = "0db745j2nz5kz5mp8sh8af26gh9wx3cdad7ggl9f9jki1ms534z0"; + rev = "be422046081be2fb9f37dfece660e007273f4e32"; + sha256 = "14mp7m9x1d6s1xxhdh5rqvkxdksmz96km1hfn0yshdfw6ic5m8cv"; }; procMacro = true; libName = "stackable_versioned_macros"; @@ -9129,7 +8798,7 @@ rec { } { name = "darling"; - packageId = "darling 0.21.2"; + packageId = "darling"; } { name = "indoc"; @@ -9143,7 +8812,7 @@ rec { name = "k8s-openapi"; packageId = "k8s-openapi"; usesDefaultFeatures = false; - features = [ "schemars" "v1_33" ]; + features = [ "schemars" "v1_34" ]; } { name = "k8s-version"; @@ -9957,9 +9626,9 @@ rec { }; "tonic" = rec { crateName = "tonic"; - version = "0.13.1"; + version = "0.14.2"; edition = "2021"; - sha256 = "1acvnjzh61y0m829mijj6z2nzqnwshdsnmbcl2g4spw3bahinn3y"; + sha256 = "00vjbvccmyzjbi0j0ydi1l8psd0lb1nb4p8qzrdxzxz9ihc16xpb"; authors = [ "Lucio Franco " ]; @@ -10020,11 +9689,8 @@ rec { packageId = "pin-project"; } { - name = "prost"; - packageId = "prost"; - optional = true; - usesDefaultFeatures = false; - features = [ "std" ]; + name = "sync_wrapper"; + packageId = "sync_wrapper"; } { name = "tokio"; @@ -10065,27 +9731,53 @@ rec { { name = "tower"; packageId = "tower"; - features = [ "full" ]; + features = [ "load-shed" "timeout" ]; } ]; features = { - "_tls-any" = [ "dep:tokio-rustls" "dep:tokio" "tokio?/rt" "tokio?/macros" ]; - "channel" = [ "dep:hyper" "hyper?/client" "dep:hyper-util" "hyper-util?/client-legacy" "dep:tower" "tower?/balance" "tower?/buffer" "tower?/discover" "tower?/limit" "tower?/util" "dep:tokio" "tokio?/time" "dep:hyper-timeout" ]; + "_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" "prost" ]; + "default" = [ "router" "transport" "codegen" ]; "deflate" = [ "dep:flate2" ]; "gzip" = [ "dep:flate2" ]; - "prost" = [ "dep:prost" ]; "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" ]; + "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" "gzip" "prost" ]; + resolvedDefaultFeatures = [ "channel" "codegen" "gzip" ]; + }; + "tonic-prost" = rec { + crateName = "tonic-prost"; + version = "0.14.2"; + edition = "2021"; + sha256 = "0rxamvbxxl7x673g97pvhr5gag2czrj3sjq2xy3js9g1djnm1gb6"; + libName = "tonic_prost"; + authors = [ + "Lucio Franco " + ]; + dependencies = [ + { + name = "bytes"; + packageId = "bytes"; + } + { + name = "prost"; + packageId = "prost"; + } + { + name = "tonic"; + packageId = "tonic"; + usesDefaultFeatures = false; + } + ]; + }; "tower" = rec { crateName = "tower"; @@ -10204,7 +9896,7 @@ rec { "tracing" = [ "dep:tracing" ]; "util" = [ "__common" "futures-util" "pin-project-lite" "sync_wrapper" ]; }; - resolvedDefaultFeatures = [ "__common" "balance" "buffer" "discover" "filter" "futures-core" "futures-util" "indexmap" "limit" "load" "log" "make" "pin-project-lite" "ready-cache" "retry" "slab" "sync_wrapper" "timeout" "tokio" "tokio-util" "tracing" "util" ]; + resolvedDefaultFeatures = [ "__common" "balance" "buffer" "discover" "filter" "futures-core" "futures-util" "indexmap" "limit" "load" "load-shed" "log" "make" "pin-project-lite" "ready-cache" "retry" "slab" "sync_wrapper" "timeout" "tokio" "tokio-util" "tracing" "util" ]; }; "tower-http" = rec { crateName = "tower-http"; @@ -10539,9 +10231,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 = [ { @@ -10549,10 +10241,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"; @@ -10565,11 +10253,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"; @@ -10608,7 +10305,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"; @@ -10624,14 +10321,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,15 +12704,14 @@ rec { "either" = [ "dep:either" ]; }; }; - "xml-rs" = rec { - crateName = "xml-rs"; - version = "0.8.27"; + "xml" = rec { + crateName = "xml"; + version = "1.0.0"; edition = "2021"; - crateBin = []; - sha256 = "1irplg223x6w3lvj0yig6czbiwci06495wc9xg3660kh6cvl1n3g"; - libName = "xml"; + sha256 = "0db4s3j50gkqkwpmyz9mfgrvifwgb4mzihkgnrm8hgg77alf1rkj"; authors = [ "Vladimir Matveev " + "Kornel (https://github.com/kornelski)" ]; }; diff --git a/Cargo.toml b/Cargo.toml index 166bdf24..86b6d049 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,8 +10,8 @@ edition = "2021" repository = "https://github.com/stackabletech/trino-operator" [workspace.dependencies] -product-config = { git = "https://github.com/stackabletech/product-config.git", tag = "0.7.0" } -stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", features = ["telemetry", "versioned"], tag = "stackable-operator-0.95.0" } +product-config = { git = "https://github.com/stackabletech/product-config.git", tag = "0.8.0" } +stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", features = ["telemetry", "versioned"], tag = "stackable-operator-0.99.0" } anyhow = "1.0" async-trait = "0.1" diff --git a/crate-hashes.json b/crate-hashes.json index 12db6439..676bb1d9 100644 --- a/crate-hashes.json +++ b/crate-hashes.json @@ -1,10 +1,10 @@ { - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.95.0#k8s-version@0.1.3": "0db745j2nz5kz5mp8sh8af26gh9wx3cdad7ggl9f9jki1ms534z0", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.95.0#stackable-operator-derive@0.3.1": "0db745j2nz5kz5mp8sh8af26gh9wx3cdad7ggl9f9jki1ms534z0", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.95.0#stackable-operator@0.95.0": "0db745j2nz5kz5mp8sh8af26gh9wx3cdad7ggl9f9jki1ms534z0", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.95.0#stackable-shared@0.0.2": "0db745j2nz5kz5mp8sh8af26gh9wx3cdad7ggl9f9jki1ms534z0", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.95.0#stackable-telemetry@0.6.1": "0db745j2nz5kz5mp8sh8af26gh9wx3cdad7ggl9f9jki1ms534z0", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.95.0#stackable-versioned-macros@0.8.1": "0db745j2nz5kz5mp8sh8af26gh9wx3cdad7ggl9f9jki1ms534z0", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.95.0#stackable-versioned@0.8.1": "0db745j2nz5kz5mp8sh8af26gh9wx3cdad7ggl9f9jki1ms534z0", - "git+https://github.com/stackabletech/product-config.git?tag=0.7.0#product-config@0.7.0": "0gjsm80g6r75pm3824dcyiz4ysq1ka4c1if6k1mjm9cnd5ym0gny" + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.99.0#k8s-version@0.1.3": "14mp7m9x1d6s1xxhdh5rqvkxdksmz96km1hfn0yshdfw6ic5m8cv", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.99.0#stackable-operator-derive@0.3.1": "14mp7m9x1d6s1xxhdh5rqvkxdksmz96km1hfn0yshdfw6ic5m8cv", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.99.0#stackable-operator@0.99.0": "14mp7m9x1d6s1xxhdh5rqvkxdksmz96km1hfn0yshdfw6ic5m8cv", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.99.0#stackable-shared@0.0.3": "14mp7m9x1d6s1xxhdh5rqvkxdksmz96km1hfn0yshdfw6ic5m8cv", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.99.0#stackable-telemetry@0.6.1": "14mp7m9x1d6s1xxhdh5rqvkxdksmz96km1hfn0yshdfw6ic5m8cv", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.99.0#stackable-versioned-macros@0.8.2": "14mp7m9x1d6s1xxhdh5rqvkxdksmz96km1hfn0yshdfw6ic5m8cv", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.99.0#stackable-versioned@0.8.2": "14mp7m9x1d6s1xxhdh5rqvkxdksmz96km1hfn0yshdfw6ic5m8cv", + "git+https://github.com/stackabletech/product-config.git?tag=0.8.0#product-config@0.8.0": "1dz70kapm2wdqcr7ndyjji0lhsl98bsq95gnb2lw487wf6yr7987" } \ No newline at end of file diff --git a/deploy/helm/trino-operator/crds/crds.yaml b/deploy/helm/trino-operator/crds/crds.yaml index 71e503e7..175348bb 100644 --- a/deploy/helm/trino-operator/crds/crds.yaml +++ b/deploy/helm/trino-operator/crds/crds.yaml @@ -23,14 +23,21 @@ spec: description: Auto-generated derived type for TrinoClusterSpec via `CustomResource` properties: spec: - description: A Trino cluster stacklet. This resource is managed by the Stackable operator for Trino. Find more information on how to use it and the resources that the operator generates in the [operator documentation](https://docs.stackable.tech/home/nightly/trino/). + description: |- + A Trino cluster stacklet. This resource is managed by the Stackable operator for Trino. + Find more information on how to use it and the resources that the operator generates in the + [operator documentation](https://docs.stackable.tech/home/nightly/trino/). properties: clusterConfig: - description: Settings that affect all roles and role groups. The settings in the `clusterConfig` are cluster wide settings that do not need to be configurable at role or role group level. + description: |- + Settings that affect all roles and role groups. + The settings in the `clusterConfig` are cluster wide settings that do not need to be configurable at role or role group level. properties: authentication: default: [] - description: Authentication options for Trino. Learn more in the [Trino authentication usage guide](https://docs.stackable.tech/home/nightly/trino/usage-guide/security#authentication). + description: |- + Authentication options for Trino. + Learn more in the [Trino authentication usage guide](https://docs.stackable.tech/home/nightly/trino/usage-guide/security#authentication). items: properties: authenticationClass: @@ -41,7 +48,9 @@ spec: nullable: true properties: clientCredentialsSecret: - description: A reference to the OIDC client credentials secret. The secret contains the client id and secret. + description: |- + A reference to the OIDC client credentials secret. The secret contains + the client id and secret. type: string extraScopes: default: [] @@ -57,15 +66,23 @@ spec: type: object type: array authorization: - description: Authorization options for Trino. Learn more in the [Trino authorization usage guide](https://docs.stackable.tech/home/nightly/trino/usage-guide/security#authorization). + description: |- + Authorization options for Trino. + Learn more in the [Trino authorization usage guide](https://docs.stackable.tech/home/nightly/trino/usage-guide/security#authorization). nullable: true properties: opa: - description: Configure the OPA stacklet [discovery ConfigMap](https://docs.stackable.tech/home/nightly/concepts/service_discovery) and the name of the Rego package containing your authorization rules. Consult the [OPA authorization documentation](https://docs.stackable.tech/home/nightly/concepts/opa) to learn how to deploy Rego authorization rules with OPA. + description: |- + Configure the OPA stacklet [discovery ConfigMap](https://docs.stackable.tech/home/nightly/concepts/service_discovery) + and the name of the Rego package containing your authorization rules. + Consult the [OPA authorization documentation](https://docs.stackable.tech/home/nightly/concepts/opa) + to learn how to deploy Rego authorization rules with OPA. nullable: true properties: configMapName: - description: The [discovery ConfigMap](https://docs.stackable.tech/home/nightly/concepts/service_discovery) for the OPA stacklet that should be used for authorization requests. + description: |- + The [discovery ConfigMap](https://docs.stackable.tech/home/nightly/concepts/service_discovery) + for the OPA stacklet that should be used for authorization requests. type: string package: description: The name of the Rego package containing the Rego rules for the product. @@ -76,7 +93,9 @@ spec: type: object type: object catalogLabelSelector: - description: '[LabelSelector](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors) selecting the Catalogs to include in the Trino instance.' + description: |- + [LabelSelector](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors) selecting the Catalogs + to include in the Trino instance. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -106,11 +125,14 @@ spec: type: object type: object clientProtocol: + anyOf: + - oneOf: + - required: + - spooling + - enum: + - null + nullable: true description: Client spooling protocol configuration. - nullable: true - oneOf: - - required: - - spooling properties: spooling: properties: @@ -129,40 +151,58 @@ spec: - reference properties: inline: - description: S3 connection definition as a resource. Learn more on the [S3 concept documentation](https://docs.stackable.tech/home/nightly/concepts/s3). + description: |- + S3 connection definition as a resource. + Learn more on the [S3 concept documentation](https://docs.stackable.tech/home/nightly/concepts/s3). properties: accessStyle: default: VirtualHosted - description: Which access style to use. Defaults to virtual hosted-style as most of the data products out there. Have a look at the [AWS documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html). + description: |- + Which access style to use. + Defaults to virtual hosted-style as most of the data products out there. + Have a look at the [AWS documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html). enum: - Path - VirtualHosted type: string credentials: - description: If the S3 uses authentication you have to specify you S3 credentials. In the most cases a [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass) providing `accessKey` and `secretKey` is sufficient. + description: |- + If the S3 uses authentication you have to specify you S3 credentials. + In the most cases a [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass) + providing `accessKey` and `secretKey` is sufficient. nullable: true properties: scope: - description: '[Scope](https://docs.stackable.tech/home/nightly/secret-operator/scope) of the [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass).' + description: |- + [Scope](https://docs.stackable.tech/home/nightly/secret-operator/scope) of the + [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass). nullable: true properties: listenerVolumes: default: [] - description: The listener volume scope allows Node and Service scopes to be inferred from the applicable listeners. This must correspond to Volume names in the Pod that mount Listeners. + description: |- + The listener volume scope allows Node and Service scopes to be inferred from the applicable listeners. + This must correspond to Volume names in the Pod that mount Listeners. items: type: string type: array node: default: false - description: The node scope is resolved to the name of the Kubernetes Node object that the Pod is running on. This will typically be the DNS name of the node. + description: |- + The node scope is resolved to the name of the Kubernetes Node object that the Pod is running on. + This will typically be the DNS name of the node. type: boolean pod: default: false - description: The pod scope is resolved to the name of the Kubernetes Pod. This allows the secret to differentiate between StatefulSet replicas. + description: |- + The pod scope is resolved to the name of the Kubernetes Pod. + This allows the secret to differentiate between StatefulSet replicas. type: boolean services: default: [] - description: The service scope allows Pod objects to specify custom scopes. This should typically correspond to Service objects that the Pod participates in. + description: |- + The service scope allows Pod objects to specify custom scopes. + This should typically correspond to Service objects that the Pod participates in. items: type: string type: array @@ -177,8 +217,11 @@ spec: description: 'Host of the S3 server without any protocol or port. For example: `west1.my-cloud.com`.' type: string port: - description: Port the S3 server listens on. If not specified the product will determine the port to use. + description: |- + Port the S3 server listens on. + If not specified the product will determine the port to use. format: uint16 + maximum: 65535.0 minimum: 0.0 nullable: true type: integer @@ -223,10 +266,15 @@ spec: - secretClass properties: secretClass: - description: Name of the [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass) which will provide the CA certificate. Note that a SecretClass does not need to have a key but can also work with just a CA certificate, so if you got provided with a CA cert but don't have access to the key you can still use this method. + description: |- + Name of the [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass) which will provide the CA certificate. + Note that a SecretClass does not need to have a key but can also work with just a CA certificate, + so if you got provided with a CA cert but don't have access to the key you can still use this method. type: string webPki: - description: Use TLS and the CA certificates trusted by the common web browsers to verify the server. This can be useful when you e.g. use public AWS S3 or other public available services. + description: |- + Use TLS and the CA certificates trusted by the common web browsers to verify the server. + This can be useful when you e.g. use public AWS S3 or other public available services. type: object type: object required: @@ -254,13 +302,18 @@ spec: type: object type: object faultTolerantExecution: - description: Fault tolerant execution configuration. When enabled, Trino can automatically retry queries or tasks in case of failures. - nullable: true - oneOf: - - required: - - query - - required: - - task + anyOf: + - oneOf: + - required: + - query + - required: + - task + - enum: + - null + nullable: true + description: |- + Fault tolerant execution configuration. + When enabled, Trino can automatically retry queries or tasks in case of failures. properties: query: description: Query-level fault tolerant execution. Retries entire queries on failure. @@ -270,15 +323,20 @@ spec: nullable: true type: string exchangeManager: - description: Exchange manager configuration for spooling intermediate data during fault tolerant execution. Optional for Query retry policy, recommended for large result sets. - nullable: true - oneOf: - - required: - - s3 - - required: - - hdfs - - required: - - local + anyOf: + - oneOf: + - required: + - s3 + - required: + - hdfs + - required: + - local + - enum: + - null + nullable: true + description: |- + Exchange manager configuration for spooling intermediate data during fault tolerant execution. + Optional for Query retry policy, recommended for large result sets. properties: encryptionEnabled: description: Whether to enable encryption of spooling data. @@ -333,7 +391,9 @@ spec: type: string type: array connection: - description: S3 connection configuration. Learn more about S3 configuration in the [S3 concept docs](https://docs.stackable.tech/home/nightly/concepts/s3). + description: |- + S3 connection configuration. + Learn more about S3 configuration in the [S3 concept docs](https://docs.stackable.tech/home/nightly/concepts/s3). oneOf: - required: - inline @@ -341,40 +401,58 @@ spec: - reference properties: inline: - description: S3 connection definition as a resource. Learn more on the [S3 concept documentation](https://docs.stackable.tech/home/nightly/concepts/s3). + description: |- + S3 connection definition as a resource. + Learn more on the [S3 concept documentation](https://docs.stackable.tech/home/nightly/concepts/s3). properties: accessStyle: default: VirtualHosted - description: Which access style to use. Defaults to virtual hosted-style as most of the data products out there. Have a look at the [AWS documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html). + description: |- + Which access style to use. + Defaults to virtual hosted-style as most of the data products out there. + Have a look at the [AWS documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html). enum: - Path - VirtualHosted type: string credentials: - description: If the S3 uses authentication you have to specify you S3 credentials. In the most cases a [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass) providing `accessKey` and `secretKey` is sufficient. + description: |- + If the S3 uses authentication you have to specify you S3 credentials. + In the most cases a [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass) + providing `accessKey` and `secretKey` is sufficient. nullable: true properties: scope: - description: '[Scope](https://docs.stackable.tech/home/nightly/secret-operator/scope) of the [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass).' + description: |- + [Scope](https://docs.stackable.tech/home/nightly/secret-operator/scope) of the + [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass). nullable: true properties: listenerVolumes: default: [] - description: The listener volume scope allows Node and Service scopes to be inferred from the applicable listeners. This must correspond to Volume names in the Pod that mount Listeners. + description: |- + The listener volume scope allows Node and Service scopes to be inferred from the applicable listeners. + This must correspond to Volume names in the Pod that mount Listeners. items: type: string type: array node: default: false - description: The node scope is resolved to the name of the Kubernetes Node object that the Pod is running on. This will typically be the DNS name of the node. + description: |- + The node scope is resolved to the name of the Kubernetes Node object that the Pod is running on. + This will typically be the DNS name of the node. type: boolean pod: default: false - description: The pod scope is resolved to the name of the Kubernetes Pod. This allows the secret to differentiate between StatefulSet replicas. + description: |- + The pod scope is resolved to the name of the Kubernetes Pod. + This allows the secret to differentiate between StatefulSet replicas. type: boolean services: default: [] - description: The service scope allows Pod objects to specify custom scopes. This should typically correspond to Service objects that the Pod participates in. + description: |- + The service scope allows Pod objects to specify custom scopes. + This should typically correspond to Service objects that the Pod participates in. items: type: string type: array @@ -389,8 +467,11 @@ spec: description: 'Host of the S3 server without any protocol or port. For example: `west1.my-cloud.com`.' type: string port: - description: Port the S3 server listens on. If not specified the product will determine the port to use. + description: |- + Port the S3 server listens on. + If not specified the product will determine the port to use. format: uint16 + maximum: 65535.0 minimum: 0.0 nullable: true type: integer @@ -435,10 +516,15 @@ spec: - secretClass properties: secretClass: - description: Name of the [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass) which will provide the CA certificate. Note that a SecretClass does not need to have a key but can also work with just a CA certificate, so if you got provided with a CA cert but don't have access to the key you can still use this method. + description: |- + Name of the [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass) which will provide the CA certificate. + Note that a SecretClass does not need to have a key but can also work with just a CA certificate, + so if you got provided with a CA cert but don't have access to the key you can still use this method. type: string webPki: - description: Use TLS and the CA certificates trusted by the common web browsers to verify the server. This can be useful when you e.g. use public AWS S3 or other public available services. + description: |- + Use TLS and the CA certificates trusted by the common web browsers to verify the server. + This can be useful when you e.g. use public AWS S3 or other public available services. type: object type: object required: @@ -469,13 +555,17 @@ spec: - connection type: object sinkBufferPoolMinSize: - description: The minimum buffer pool size for an exchange sink. The larger the buffer pool size, the larger the write parallelism and memory usage. + description: |- + The minimum buffer pool size for an exchange sink. The larger the buffer pool size, + the larger the write parallelism and memory usage. format: uint32 minimum: 0.0 nullable: true type: integer sinkBuffersPerPartition: - description: The number of buffers per partition in the buffer pool. The larger the buffer pool size, the larger the write parallelism and memory usage. + description: |- + The number of buffers per partition in the buffer pool. The larger the buffer pool size, + the larger the write parallelism and memory usage. format: uint32 minimum: 0.0 nullable: true @@ -485,7 +575,9 @@ spec: nullable: true type: string sourceConcurrentReaders: - description: Number of concurrent readers to read from spooling storage. The larger the number of concurrent readers, the larger the read parallelism and memory usage. + description: |- + Number of concurrent readers to read from spooling storage. The larger the number of + concurrent readers, the larger the read parallelism and memory usage. format: uint32 minimum: 0.0 nullable: true @@ -519,7 +611,9 @@ spec: nullable: true type: string exchangeManager: - description: Exchange manager configuration for spooling intermediate data during fault tolerant execution. Required for Task retry policy. + description: |- + Exchange manager configuration for spooling intermediate data during fault tolerant execution. + Required for Task retry policy. oneOf: - required: - s3 @@ -581,7 +675,9 @@ spec: type: string type: array connection: - description: S3 connection configuration. Learn more about S3 configuration in the [S3 concept docs](https://docs.stackable.tech/home/nightly/concepts/s3). + description: |- + S3 connection configuration. + Learn more about S3 configuration in the [S3 concept docs](https://docs.stackable.tech/home/nightly/concepts/s3). oneOf: - required: - inline @@ -589,40 +685,58 @@ spec: - reference properties: inline: - description: S3 connection definition as a resource. Learn more on the [S3 concept documentation](https://docs.stackable.tech/home/nightly/concepts/s3). + description: |- + S3 connection definition as a resource. + Learn more on the [S3 concept documentation](https://docs.stackable.tech/home/nightly/concepts/s3). properties: accessStyle: default: VirtualHosted - description: Which access style to use. Defaults to virtual hosted-style as most of the data products out there. Have a look at the [AWS documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html). + description: |- + Which access style to use. + Defaults to virtual hosted-style as most of the data products out there. + Have a look at the [AWS documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html). enum: - Path - VirtualHosted type: string credentials: - description: If the S3 uses authentication you have to specify you S3 credentials. In the most cases a [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass) providing `accessKey` and `secretKey` is sufficient. + description: |- + If the S3 uses authentication you have to specify you S3 credentials. + In the most cases a [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass) + providing `accessKey` and `secretKey` is sufficient. nullable: true properties: scope: - description: '[Scope](https://docs.stackable.tech/home/nightly/secret-operator/scope) of the [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass).' + description: |- + [Scope](https://docs.stackable.tech/home/nightly/secret-operator/scope) of the + [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass). nullable: true properties: listenerVolumes: default: [] - description: The listener volume scope allows Node and Service scopes to be inferred from the applicable listeners. This must correspond to Volume names in the Pod that mount Listeners. + description: |- + The listener volume scope allows Node and Service scopes to be inferred from the applicable listeners. + This must correspond to Volume names in the Pod that mount Listeners. items: type: string type: array node: default: false - description: The node scope is resolved to the name of the Kubernetes Node object that the Pod is running on. This will typically be the DNS name of the node. + description: |- + The node scope is resolved to the name of the Kubernetes Node object that the Pod is running on. + This will typically be the DNS name of the node. type: boolean pod: default: false - description: The pod scope is resolved to the name of the Kubernetes Pod. This allows the secret to differentiate between StatefulSet replicas. + description: |- + The pod scope is resolved to the name of the Kubernetes Pod. + This allows the secret to differentiate between StatefulSet replicas. type: boolean services: default: [] - description: The service scope allows Pod objects to specify custom scopes. This should typically correspond to Service objects that the Pod participates in. + description: |- + The service scope allows Pod objects to specify custom scopes. + This should typically correspond to Service objects that the Pod participates in. items: type: string type: array @@ -637,8 +751,11 @@ spec: description: 'Host of the S3 server without any protocol or port. For example: `west1.my-cloud.com`.' type: string port: - description: Port the S3 server listens on. If not specified the product will determine the port to use. + description: |- + Port the S3 server listens on. + If not specified the product will determine the port to use. format: uint16 + maximum: 65535.0 minimum: 0.0 nullable: true type: integer @@ -683,10 +800,15 @@ spec: - secretClass properties: secretClass: - description: Name of the [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass) which will provide the CA certificate. Note that a SecretClass does not need to have a key but can also work with just a CA certificate, so if you got provided with a CA cert but don't have access to the key you can still use this method. + description: |- + Name of the [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass) which will provide the CA certificate. + Note that a SecretClass does not need to have a key but can also work with just a CA certificate, + so if you got provided with a CA cert but don't have access to the key you can still use this method. type: string webPki: - description: Use TLS and the CA certificates trusted by the common web browsers to verify the server. This can be useful when you e.g. use public AWS S3 or other public available services. + description: |- + Use TLS and the CA certificates trusted by the common web browsers to verify the server. + This can be useful when you e.g. use public AWS S3 or other public available services. type: object type: object required: @@ -717,13 +839,17 @@ spec: - connection type: object sinkBufferPoolMinSize: - description: The minimum buffer pool size for an exchange sink. The larger the buffer pool size, the larger the write parallelism and memory usage. + description: |- + The minimum buffer pool size for an exchange sink. The larger the buffer pool size, + the larger the write parallelism and memory usage. format: uint32 minimum: 0.0 nullable: true type: integer sinkBuffersPerPartition: - description: The number of buffers per partition in the buffer pool. The larger the buffer pool size, the larger the write parallelism and memory usage. + description: |- + The number of buffers per partition in the buffer pool. The larger the buffer pool size, + the larger the write parallelism and memory usage. format: uint32 minimum: 0.0 nullable: true @@ -733,7 +859,9 @@ spec: nullable: true type: string sourceConcurrentReaders: - description: Number of concurrent readers to read from spooling storage. The larger the number of concurrent readers, the larger the read parallelism and memory usage. + description: |- + Number of concurrent readers to read from spooling storage. The larger the number of + concurrent readers, the larger the read parallelism and memory usage. format: uint32 minimum: 0.0 nullable: true @@ -770,17 +898,29 @@ spec: properties: internalSecretClass: default: tls - description: 'Only affects internal communication. Use mutual verification between Trino nodes This setting controls: - Which cert the servers should use to authenticate themselves against other servers - Which ca.crt to use when validating the other server' + description: |- + Only affects internal communication. Use mutual verification between Trino nodes + This setting controls: + - Which cert the servers should use to authenticate themselves against other servers + - Which ca.crt to use when validating the other server nullable: true type: string serverSecretClass: default: tls - description: 'Only affects client connections. This setting controls: - If TLS encryption is used at all - Which cert the servers should use to authenticate themselves against the client' + description: |- + Only affects client connections. + This setting controls: + - If TLS encryption is used at all + - Which cert the servers should use to authenticate themselves against the client nullable: true type: string type: object vectorAggregatorConfigMapName: - description: Name of the Vector aggregator [discovery ConfigMap](https://docs.stackable.tech/home/nightly/concepts/service_discovery). It must contain the key `ADDRESS` with the address of the Vector aggregator. Follow the [logging tutorial](https://docs.stackable.tech/home/nightly/tutorials/logging-vector-aggregator) to learn how to configure log aggregation with Vector. + description: |- + Name of the Vector aggregator [discovery ConfigMap](https://docs.stackable.tech/home/nightly/concepts/service_discovery). + It must contain the key `ADDRESS` with the address of the Vector aggregator. + Follow the [logging tutorial](https://docs.stackable.tech/home/nightly/tutorials/logging-vector-aggregator) + to learn how to configure log aggregation with Vector. nullable: true type: string required: @@ -790,19 +930,39 @@ spec: default: reconciliationPaused: false stopped: false - description: '[Cluster operations](https://docs.stackable.tech/home/nightly/concepts/operations/cluster_operations) properties, allow stopping the product instance as well as pausing reconciliation.' + description: |- + [Cluster operations](https://docs.stackable.tech/home/nightly/concepts/operations/cluster_operations) + properties, allow stopping the product instance as well as pausing reconciliation. properties: reconciliationPaused: default: false - description: Flag to stop cluster reconciliation by the operator. This means that all changes in the custom resource spec are ignored until this flag is set to false or removed. The operator will however still watch the deployed resources at the time and update the custom resource status field. If applied at the same time with `stopped`, `reconciliationPaused` will take precedence over `stopped` and stop the reconciliation immediately. + description: |- + Flag to stop cluster reconciliation by the operator. This means that all changes in the + custom resource spec are ignored until this flag is set to false or removed. The operator + will however still watch the deployed resources at the time and update the custom resource + status field. + If applied at the same time with `stopped`, `reconciliationPaused` will take precedence over + `stopped` and stop the reconciliation immediately. type: boolean stopped: default: false - description: Flag to stop the cluster. This means all deployed resources (e.g. Services, StatefulSets, ConfigMaps) are kept but all deployed Pods (e.g. replicas from a StatefulSet) are scaled to 0 and therefore stopped and removed. If applied at the same time with `reconciliationPaused`, the latter will pause reconciliation and `stopped` will take no effect until `reconciliationPaused` is set to false or removed. + description: |- + Flag to stop the cluster. This means all deployed resources (e.g. Services, StatefulSets, + ConfigMaps) are kept but all deployed Pods (e.g. replicas from a StatefulSet) are scaled to 0 + and therefore stopped and removed. + If applied at the same time with `reconciliationPaused`, the latter will pause reconciliation + and `stopped` will take no effect until `reconciliationPaused` is set to false or removed. type: boolean type: object coordinators: - description: This struct represents a role - e.g. HDFS datanodes or Trino workers. It has a key-value-map containing all the roleGroups that are part of this role. Additionally, there is a `config`, which is configurable at the role *and* roleGroup level. Everything at roleGroup level is merged on top of what is configured on role level. There is also a second form of config, which can only be configured at role level, the `roleConfig`. You can learn more about this in the [Roles and role group concept documentation](https://docs.stackable.tech/home/nightly/concepts/roles-and-role-groups). + description: |- + This struct represents a role - e.g. HDFS datanodes or Trino workers. It has a key-value-map containing + all the roleGroups that are part of this role. Additionally, there is a `config`, which is configurable + at the role *and* roleGroup level. Everything at roleGroup level is merged on top of what is configured + on role level. There is also a second form of config, which can only be configured + at role level, the `roleConfig`. + You can learn more about this in the + [Roles and role group concept documentation](https://docs.stackable.tech/home/nightly/concepts/roles-and-role-groups). nullable: true properties: cliOverrides: @@ -819,7 +979,9 @@ spec: nodeSelector: null podAffinity: null podAntiAffinity: null - description: These configuration settings control [Pod placement](https://docs.stackable.tech/home/nightly/concepts/operations/pod_placement). + description: |- + These configuration settings control + [Pod placement](https://docs.stackable.tech/home/nightly/concepts/operations/pod_placement). properties: nodeAffinity: description: Same as the `spec.affinity.nodeAffinity` field on the Pod, see the [Kubernetes docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node) @@ -866,7 +1028,9 @@ spec: nullable: true properties: level: - description: The log level threshold. Log events with a lower log level are discarded. + description: |- + The log level threshold. + Log events with a lower log level are discarded. enum: - TRACE - DEBUG @@ -875,6 +1039,7 @@ spec: - ERROR - FATAL - NONE + - null nullable: true type: string type: object @@ -891,7 +1056,9 @@ spec: nullable: true properties: level: - description: The log level threshold. Log events with a lower log level are discarded. + description: |- + The log level threshold. + Log events with a lower log level are discarded. enum: - TRACE - DEBUG @@ -900,6 +1067,7 @@ spec: - ERROR - FATAL - NONE + - null nullable: true type: string type: object @@ -908,7 +1076,9 @@ spec: description: Configuration of a logger properties: level: - description: The log level threshold. Log events with a lower log level are discarded. + description: |- + The log level threshold. + Log events with a lower log level are discarded. enum: - TRACE - DEBUG @@ -917,6 +1087,7 @@ spec: - ERROR - FATAL - NONE + - null nullable: true type: string type: object @@ -939,9 +1110,11 @@ spec: type: string requestedSecretLifetime: description: |- - Request secret (currently only autoTls certificates) lifetime from the secret operator, e.g. `7d`, or `30d`. This can be shortened by the `maxCertificateLifetime` setting on the SecretClass issuing the TLS certificate. + Request secret (currently only autoTls certificates) lifetime from the secret operator, e.g. `7d`, or `30d`. + This can be shortened by the `maxCertificateLifetime` setting on the SecretClass issuing the TLS certificate. - Defaults to `15d` for coordinators (as currently a restart kills all running queries) and `1d` for workers. + Defaults to `15d` for coordinators (as currently a restart kills all running queries) + and `1d` for workers. nullable: true type: string resources: @@ -953,7 +1126,9 @@ spec: limit: null runtimeLimits: {} storage: {} - description: Resource usage is configured here, this includes CPU usage, memory usage and disk storage usage, if this role needs any. + description: |- + Resource usage is configured here, this includes CPU usage, memory usage and disk storage + usage, if this role needs any. properties: cpu: default: @@ -961,18 +1136,32 @@ spec: min: null properties: max: - description: The maximum amount of CPU cores that can be requested by Pods. Equivalent to the `limit` for Pod resource configuration. Cores are specified either as a decimal point number or as milli units. For example:`1.5` will be 1.5 cores, also written as `1500m`. + description: |- + The maximum amount of CPU cores that can be requested by Pods. + Equivalent to the `limit` for Pod resource configuration. + Cores are specified either as a decimal point number or as milli units. + For example:`1.5` will be 1.5 cores, also written as `1500m`. nullable: true type: string min: - description: The minimal amount of CPU cores that Pods need to run. Equivalent to the `request` for Pod resource configuration. Cores are specified either as a decimal point number or as milli units. For example:`1.5` will be 1.5 cores, also written as `1500m`. + description: |- + The minimal amount of CPU cores that Pods need to run. + Equivalent to the `request` for Pod resource configuration. + Cores are specified either as a decimal point number or as milli units. + For example:`1.5` will be 1.5 cores, also written as `1500m`. nullable: true type: string type: object memory: properties: limit: - description: 'The maximum amount of memory that should be available to the Pod. Specified as a byte [Quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/), which means these suffixes are supported: E, P, T, G, M, k. You can also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki. For example, the following represent roughly the same value: `128974848, 129e6, 129M, 128974848000m, 123Mi`' + description: |- + The maximum amount of memory that should be available to the Pod. + Specified as a byte [Quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/), + which means these suffixes are supported: E, P, T, G, M, k. + You can also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki. + For example, the following represent roughly the same value: + `128974848, 129e6, 129M, 128974848000m, 123Mi` nullable: true type: string runtimeLimits: @@ -989,20 +1178,34 @@ spec: type: string type: object default: {} - description: The `configOverrides` can be used to configure properties in product config files that are not exposed in the CRD. Read the [config overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#config-overrides) and consult the operator specific usage guide documentation for details on the available config files and settings for the specific product. + description: |- + The `configOverrides` can be used to configure properties in product config files + that are not exposed in the CRD. Read the + [config overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#config-overrides) + and consult the operator specific usage guide documentation for details on the + available config files and settings for the specific product. type: object envOverrides: additionalProperties: type: string default: {} - description: '`envOverrides` configure environment variables to be set in the Pods. It is a map from strings to strings - environment variables and the value to set. Read the [environment variable overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#env-overrides) for more information and consult the operator specific usage guide to find out about the product specific environment variables that are available.' + description: |- + `envOverrides` configure environment variables to be set in the Pods. + It is a map from strings to strings - environment variables and the value to set. + Read the + [environment variable overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#env-overrides) + for more information and consult the operator specific usage guide to find out about + the product specific environment variables that are available. type: object jvmArgumentOverrides: default: add: [] remove: [] removeRegex: [] - description: Allows overriding JVM arguments. Please read on the [JVM argument overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#jvm-argument-overrides) for details on the usage. + description: |- + Allows overriding JVM arguments. + Please read on the [JVM argument overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#jvm-argument-overrides) + for details on the usage. properties: add: default: [] @@ -1025,7 +1228,13 @@ spec: type: object podOverrides: default: {} - description: In the `podOverrides` property you can define a [PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#podtemplatespec-v1-core) to override any property that can be set on a Kubernetes Pod. Read the [Pod overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#pod-overrides) for more information. + description: |- + In the `podOverrides` property you can define a + [PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#podtemplatespec-v1-core) + to override any property that can be set on a Kubernetes Pod. + Read the + [Pod overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#pod-overrides) + for more information. type: object x-kubernetes-preserve-unknown-fields: true roleConfig: @@ -1047,17 +1256,26 @@ spec: description: |- This struct is used to configure: - 1. If PodDisruptionBudgets are created by the operator 2. The allowed number of Pods to be unavailable (`maxUnavailable`) + 1. If PodDisruptionBudgets are created by the operator + 2. The allowed number of Pods to be unavailable (`maxUnavailable`) - Learn more in the [allowed Pod disruptions documentation](https://docs.stackable.tech/home/nightly/concepts/operations/pod_disruptions). + Learn more in the + [allowed Pod disruptions documentation](https://docs.stackable.tech/home/nightly/concepts/operations/pod_disruptions). properties: enabled: default: true - description: Whether a PodDisruptionBudget should be written out for this role. Disabling this enables you to specify your own - custom - one. Defaults to true. + description: |- + Whether a PodDisruptionBudget should be written out for this role. + Disabling this enables you to specify your own - custom - one. + Defaults to true. type: boolean maxUnavailable: - description: The number of Pods that are allowed to be down because of voluntary disruptions. If you don't explicitly set this, the operator will use a sane default based upon knowledge about the individual product. + description: |- + The number of Pods that are allowed to be down because of voluntary disruptions. + If you don't explicitly set this, the operator will use a sane default based + upon knowledge about the individual product. format: uint16 + maximum: 65535.0 minimum: 0.0 nullable: true type: integer @@ -1080,7 +1298,9 @@ spec: nodeSelector: null podAffinity: null podAntiAffinity: null - description: These configuration settings control [Pod placement](https://docs.stackable.tech/home/nightly/concepts/operations/pod_placement). + description: |- + These configuration settings control + [Pod placement](https://docs.stackable.tech/home/nightly/concepts/operations/pod_placement). properties: nodeAffinity: description: Same as the `spec.affinity.nodeAffinity` field on the Pod, see the [Kubernetes docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node) @@ -1127,7 +1347,9 @@ spec: nullable: true properties: level: - description: The log level threshold. Log events with a lower log level are discarded. + description: |- + The log level threshold. + Log events with a lower log level are discarded. enum: - TRACE - DEBUG @@ -1136,6 +1358,7 @@ spec: - ERROR - FATAL - NONE + - null nullable: true type: string type: object @@ -1152,7 +1375,9 @@ spec: nullable: true properties: level: - description: The log level threshold. Log events with a lower log level are discarded. + description: |- + The log level threshold. + Log events with a lower log level are discarded. enum: - TRACE - DEBUG @@ -1161,6 +1386,7 @@ spec: - ERROR - FATAL - NONE + - null nullable: true type: string type: object @@ -1169,7 +1395,9 @@ spec: description: Configuration of a logger properties: level: - description: The log level threshold. Log events with a lower log level are discarded. + description: |- + The log level threshold. + Log events with a lower log level are discarded. enum: - TRACE - DEBUG @@ -1178,6 +1406,7 @@ spec: - ERROR - FATAL - NONE + - null nullable: true type: string type: object @@ -1200,9 +1429,11 @@ spec: type: string requestedSecretLifetime: description: |- - Request secret (currently only autoTls certificates) lifetime from the secret operator, e.g. `7d`, or `30d`. This can be shortened by the `maxCertificateLifetime` setting on the SecretClass issuing the TLS certificate. + Request secret (currently only autoTls certificates) lifetime from the secret operator, e.g. `7d`, or `30d`. + This can be shortened by the `maxCertificateLifetime` setting on the SecretClass issuing the TLS certificate. - Defaults to `15d` for coordinators (as currently a restart kills all running queries) and `1d` for workers. + Defaults to `15d` for coordinators (as currently a restart kills all running queries) + and `1d` for workers. nullable: true type: string resources: @@ -1214,7 +1445,9 @@ spec: limit: null runtimeLimits: {} storage: {} - description: Resource usage is configured here, this includes CPU usage, memory usage and disk storage usage, if this role needs any. + description: |- + Resource usage is configured here, this includes CPU usage, memory usage and disk storage + usage, if this role needs any. properties: cpu: default: @@ -1222,18 +1455,32 @@ spec: min: null properties: max: - description: The maximum amount of CPU cores that can be requested by Pods. Equivalent to the `limit` for Pod resource configuration. Cores are specified either as a decimal point number or as milli units. For example:`1.5` will be 1.5 cores, also written as `1500m`. + description: |- + The maximum amount of CPU cores that can be requested by Pods. + Equivalent to the `limit` for Pod resource configuration. + Cores are specified either as a decimal point number or as milli units. + For example:`1.5` will be 1.5 cores, also written as `1500m`. nullable: true type: string min: - description: The minimal amount of CPU cores that Pods need to run. Equivalent to the `request` for Pod resource configuration. Cores are specified either as a decimal point number or as milli units. For example:`1.5` will be 1.5 cores, also written as `1500m`. + description: |- + The minimal amount of CPU cores that Pods need to run. + Equivalent to the `request` for Pod resource configuration. + Cores are specified either as a decimal point number or as milli units. + For example:`1.5` will be 1.5 cores, also written as `1500m`. nullable: true type: string type: object memory: properties: limit: - description: 'The maximum amount of memory that should be available to the Pod. Specified as a byte [Quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/), which means these suffixes are supported: E, P, T, G, M, k. You can also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki. For example, the following represent roughly the same value: `128974848, 129e6, 129M, 128974848000m, 123Mi`' + description: |- + The maximum amount of memory that should be available to the Pod. + Specified as a byte [Quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/), + which means these suffixes are supported: E, P, T, G, M, k. + You can also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki. + For example, the following represent roughly the same value: + `128974848, 129e6, 129M, 128974848000m, 123Mi` nullable: true type: string runtimeLimits: @@ -1250,20 +1497,34 @@ spec: type: string type: object default: {} - description: The `configOverrides` can be used to configure properties in product config files that are not exposed in the CRD. Read the [config overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#config-overrides) and consult the operator specific usage guide documentation for details on the available config files and settings for the specific product. + description: |- + The `configOverrides` can be used to configure properties in product config files + that are not exposed in the CRD. Read the + [config overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#config-overrides) + and consult the operator specific usage guide documentation for details on the + available config files and settings for the specific product. type: object envOverrides: additionalProperties: type: string default: {} - description: '`envOverrides` configure environment variables to be set in the Pods. It is a map from strings to strings - environment variables and the value to set. Read the [environment variable overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#env-overrides) for more information and consult the operator specific usage guide to find out about the product specific environment variables that are available.' + description: |- + `envOverrides` configure environment variables to be set in the Pods. + It is a map from strings to strings - environment variables and the value to set. + Read the + [environment variable overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#env-overrides) + for more information and consult the operator specific usage guide to find out about + the product specific environment variables that are available. type: object jvmArgumentOverrides: default: add: [] remove: [] removeRegex: [] - description: Allows overriding JVM arguments. Please read on the [JVM argument overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#jvm-argument-overrides) for details on the usage. + description: |- + Allows overriding JVM arguments. + Please read on the [JVM argument overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#jvm-argument-overrides) + for details on the usage. properties: add: default: [] @@ -1286,11 +1547,18 @@ spec: type: object podOverrides: default: {} - description: In the `podOverrides` property you can define a [PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#podtemplatespec-v1-core) to override any property that can be set on a Kubernetes Pod. Read the [Pod overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#pod-overrides) for more information. + description: |- + In the `podOverrides` property you can define a + [PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#podtemplatespec-v1-core) + to override any property that can be set on a Kubernetes Pod. + Read the + [Pod overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#pod-overrides) + for more information. type: object x-kubernetes-preserve-unknown-fields: true replicas: format: uint16 + maximum: 65535.0 minimum: 0.0 nullable: true type: integer @@ -1307,12 +1575,17 @@ spec: - required: - productVersion description: |- - Specify which image to use, the easiest way is to only configure the `productVersion`. You can also configure a custom image registry to pull from, as well as completely custom images. + Specify which image to use, the easiest way is to only configure the `productVersion`. + You can also configure a custom image registry to pull from, as well as completely custom + images. - Consult the [Product image selection documentation](https://docs.stackable.tech/home/nightly/concepts/product_image_selection) for details. + Consult the [Product image selection documentation](https://docs.stackable.tech/home/nightly/concepts/product_image_selection) + for details. properties: custom: - description: Overwrite the docker image. Specify the full docker image name, e.g. `oci.stackable.tech/sdp/superset:1.4.1-stackable2.1.0` + description: |- + Overwrite the docker image. + Specify the full docker image name, e.g. `oci.stackable.tech/sdp/superset:1.4.1-stackable2.1.0` type: string productVersion: description: Version of the product, e.g. `1.4.1`. @@ -1343,12 +1616,22 @@ spec: nullable: true type: string stackableVersion: - description: Stackable version of the product, e.g. `23.4`, `23.4.1` or `0.0.0-dev`. If not specified, the operator will use its own version, e.g. `23.4.1`. When using a nightly operator or a pr version, it will use the nightly `0.0.0-dev` image. + description: |- + Stackable version of the product, e.g. `23.4`, `23.4.1` or `0.0.0-dev`. + If not specified, the operator will use its own version, e.g. `23.4.1`. + When using a nightly operator or a pr version, it will use the nightly `0.0.0-dev` image. nullable: true type: string type: object workers: - description: This struct represents a role - e.g. HDFS datanodes or Trino workers. It has a key-value-map containing all the roleGroups that are part of this role. Additionally, there is a `config`, which is configurable at the role *and* roleGroup level. Everything at roleGroup level is merged on top of what is configured on role level. There is also a second form of config, which can only be configured at role level, the `roleConfig`. You can learn more about this in the [Roles and role group concept documentation](https://docs.stackable.tech/home/nightly/concepts/roles-and-role-groups). + description: |- + This struct represents a role - e.g. HDFS datanodes or Trino workers. It has a key-value-map containing + all the roleGroups that are part of this role. Additionally, there is a `config`, which is configurable + at the role *and* roleGroup level. Everything at roleGroup level is merged on top of what is configured + on role level. There is also a second form of config, which can only be configured + at role level, the `roleConfig`. + You can learn more about this in the + [Roles and role group concept documentation](https://docs.stackable.tech/home/nightly/concepts/roles-and-role-groups). nullable: true properties: cliOverrides: @@ -1365,7 +1648,9 @@ spec: nodeSelector: null podAffinity: null podAntiAffinity: null - description: These configuration settings control [Pod placement](https://docs.stackable.tech/home/nightly/concepts/operations/pod_placement). + description: |- + These configuration settings control + [Pod placement](https://docs.stackable.tech/home/nightly/concepts/operations/pod_placement). properties: nodeAffinity: description: Same as the `spec.affinity.nodeAffinity` field on the Pod, see the [Kubernetes docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node) @@ -1412,7 +1697,9 @@ spec: nullable: true properties: level: - description: The log level threshold. Log events with a lower log level are discarded. + description: |- + The log level threshold. + Log events with a lower log level are discarded. enum: - TRACE - DEBUG @@ -1421,6 +1708,7 @@ spec: - ERROR - FATAL - NONE + - null nullable: true type: string type: object @@ -1437,7 +1725,9 @@ spec: nullable: true properties: level: - description: The log level threshold. Log events with a lower log level are discarded. + description: |- + The log level threshold. + Log events with a lower log level are discarded. enum: - TRACE - DEBUG @@ -1446,6 +1736,7 @@ spec: - ERROR - FATAL - NONE + - null nullable: true type: string type: object @@ -1454,7 +1745,9 @@ spec: description: Configuration of a logger properties: level: - description: The log level threshold. Log events with a lower log level are discarded. + description: |- + The log level threshold. + Log events with a lower log level are discarded. enum: - TRACE - DEBUG @@ -1463,6 +1756,7 @@ spec: - ERROR - FATAL - NONE + - null nullable: true type: string type: object @@ -1485,9 +1779,11 @@ spec: type: string requestedSecretLifetime: description: |- - Request secret (currently only autoTls certificates) lifetime from the secret operator, e.g. `7d`, or `30d`. This can be shortened by the `maxCertificateLifetime` setting on the SecretClass issuing the TLS certificate. + Request secret (currently only autoTls certificates) lifetime from the secret operator, e.g. `7d`, or `30d`. + This can be shortened by the `maxCertificateLifetime` setting on the SecretClass issuing the TLS certificate. - Defaults to `15d` for coordinators (as currently a restart kills all running queries) and `1d` for workers. + Defaults to `15d` for coordinators (as currently a restart kills all running queries) + and `1d` for workers. nullable: true type: string resources: @@ -1499,7 +1795,9 @@ spec: limit: null runtimeLimits: {} storage: {} - description: Resource usage is configured here, this includes CPU usage, memory usage and disk storage usage, if this role needs any. + description: |- + Resource usage is configured here, this includes CPU usage, memory usage and disk storage + usage, if this role needs any. properties: cpu: default: @@ -1507,18 +1805,32 @@ spec: min: null properties: max: - description: The maximum amount of CPU cores that can be requested by Pods. Equivalent to the `limit` for Pod resource configuration. Cores are specified either as a decimal point number or as milli units. For example:`1.5` will be 1.5 cores, also written as `1500m`. + description: |- + The maximum amount of CPU cores that can be requested by Pods. + Equivalent to the `limit` for Pod resource configuration. + Cores are specified either as a decimal point number or as milli units. + For example:`1.5` will be 1.5 cores, also written as `1500m`. nullable: true type: string min: - description: The minimal amount of CPU cores that Pods need to run. Equivalent to the `request` for Pod resource configuration. Cores are specified either as a decimal point number or as milli units. For example:`1.5` will be 1.5 cores, also written as `1500m`. + description: |- + The minimal amount of CPU cores that Pods need to run. + Equivalent to the `request` for Pod resource configuration. + Cores are specified either as a decimal point number or as milli units. + For example:`1.5` will be 1.5 cores, also written as `1500m`. nullable: true type: string type: object memory: properties: limit: - description: 'The maximum amount of memory that should be available to the Pod. Specified as a byte [Quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/), which means these suffixes are supported: E, P, T, G, M, k. You can also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki. For example, the following represent roughly the same value: `128974848, 129e6, 129M, 128974848000m, 123Mi`' + description: |- + The maximum amount of memory that should be available to the Pod. + Specified as a byte [Quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/), + which means these suffixes are supported: E, P, T, G, M, k. + You can also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki. + For example, the following represent roughly the same value: + `128974848, 129e6, 129M, 128974848000m, 123Mi` nullable: true type: string runtimeLimits: @@ -1535,20 +1847,34 @@ spec: type: string type: object default: {} - description: The `configOverrides` can be used to configure properties in product config files that are not exposed in the CRD. Read the [config overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#config-overrides) and consult the operator specific usage guide documentation for details on the available config files and settings for the specific product. + description: |- + The `configOverrides` can be used to configure properties in product config files + that are not exposed in the CRD. Read the + [config overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#config-overrides) + and consult the operator specific usage guide documentation for details on the + available config files and settings for the specific product. type: object envOverrides: additionalProperties: type: string default: {} - description: '`envOverrides` configure environment variables to be set in the Pods. It is a map from strings to strings - environment variables and the value to set. Read the [environment variable overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#env-overrides) for more information and consult the operator specific usage guide to find out about the product specific environment variables that are available.' + description: |- + `envOverrides` configure environment variables to be set in the Pods. + It is a map from strings to strings - environment variables and the value to set. + Read the + [environment variable overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#env-overrides) + for more information and consult the operator specific usage guide to find out about + the product specific environment variables that are available. type: object jvmArgumentOverrides: default: add: [] remove: [] removeRegex: [] - description: Allows overriding JVM arguments. Please read on the [JVM argument overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#jvm-argument-overrides) for details on the usage. + description: |- + Allows overriding JVM arguments. + Please read on the [JVM argument overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#jvm-argument-overrides) + for details on the usage. properties: add: default: [] @@ -1571,7 +1897,13 @@ spec: type: object podOverrides: default: {} - description: In the `podOverrides` property you can define a [PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#podtemplatespec-v1-core) to override any property that can be set on a Kubernetes Pod. Read the [Pod overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#pod-overrides) for more information. + description: |- + In the `podOverrides` property you can define a + [PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#podtemplatespec-v1-core) + to override any property that can be set on a Kubernetes Pod. + Read the + [Pod overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#pod-overrides) + for more information. type: object x-kubernetes-preserve-unknown-fields: true roleConfig: @@ -1588,17 +1920,26 @@ spec: description: |- This struct is used to configure: - 1. If PodDisruptionBudgets are created by the operator 2. The allowed number of Pods to be unavailable (`maxUnavailable`) + 1. If PodDisruptionBudgets are created by the operator + 2. The allowed number of Pods to be unavailable (`maxUnavailable`) - Learn more in the [allowed Pod disruptions documentation](https://docs.stackable.tech/home/nightly/concepts/operations/pod_disruptions). + Learn more in the + [allowed Pod disruptions documentation](https://docs.stackable.tech/home/nightly/concepts/operations/pod_disruptions). properties: enabled: default: true - description: Whether a PodDisruptionBudget should be written out for this role. Disabling this enables you to specify your own - custom - one. Defaults to true. + description: |- + Whether a PodDisruptionBudget should be written out for this role. + Disabling this enables you to specify your own - custom - one. + Defaults to true. type: boolean maxUnavailable: - description: The number of Pods that are allowed to be down because of voluntary disruptions. If you don't explicitly set this, the operator will use a sane default based upon knowledge about the individual product. + description: |- + The number of Pods that are allowed to be down because of voluntary disruptions. + If you don't explicitly set this, the operator will use a sane default based + upon knowledge about the individual product. format: uint16 + maximum: 65535.0 minimum: 0.0 nullable: true type: integer @@ -1621,7 +1962,9 @@ spec: nodeSelector: null podAffinity: null podAntiAffinity: null - description: These configuration settings control [Pod placement](https://docs.stackable.tech/home/nightly/concepts/operations/pod_placement). + description: |- + These configuration settings control + [Pod placement](https://docs.stackable.tech/home/nightly/concepts/operations/pod_placement). properties: nodeAffinity: description: Same as the `spec.affinity.nodeAffinity` field on the Pod, see the [Kubernetes docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node) @@ -1668,7 +2011,9 @@ spec: nullable: true properties: level: - description: The log level threshold. Log events with a lower log level are discarded. + description: |- + The log level threshold. + Log events with a lower log level are discarded. enum: - TRACE - DEBUG @@ -1677,6 +2022,7 @@ spec: - ERROR - FATAL - NONE + - null nullable: true type: string type: object @@ -1693,7 +2039,9 @@ spec: nullable: true properties: level: - description: The log level threshold. Log events with a lower log level are discarded. + description: |- + The log level threshold. + Log events with a lower log level are discarded. enum: - TRACE - DEBUG @@ -1702,6 +2050,7 @@ spec: - ERROR - FATAL - NONE + - null nullable: true type: string type: object @@ -1710,7 +2059,9 @@ spec: description: Configuration of a logger properties: level: - description: The log level threshold. Log events with a lower log level are discarded. + description: |- + The log level threshold. + Log events with a lower log level are discarded. enum: - TRACE - DEBUG @@ -1719,6 +2070,7 @@ spec: - ERROR - FATAL - NONE + - null nullable: true type: string type: object @@ -1741,9 +2093,11 @@ spec: type: string requestedSecretLifetime: description: |- - Request secret (currently only autoTls certificates) lifetime from the secret operator, e.g. `7d`, or `30d`. This can be shortened by the `maxCertificateLifetime` setting on the SecretClass issuing the TLS certificate. + Request secret (currently only autoTls certificates) lifetime from the secret operator, e.g. `7d`, or `30d`. + This can be shortened by the `maxCertificateLifetime` setting on the SecretClass issuing the TLS certificate. - Defaults to `15d` for coordinators (as currently a restart kills all running queries) and `1d` for workers. + Defaults to `15d` for coordinators (as currently a restart kills all running queries) + and `1d` for workers. nullable: true type: string resources: @@ -1755,7 +2109,9 @@ spec: limit: null runtimeLimits: {} storage: {} - description: Resource usage is configured here, this includes CPU usage, memory usage and disk storage usage, if this role needs any. + description: |- + Resource usage is configured here, this includes CPU usage, memory usage and disk storage + usage, if this role needs any. properties: cpu: default: @@ -1763,18 +2119,32 @@ spec: min: null properties: max: - description: The maximum amount of CPU cores that can be requested by Pods. Equivalent to the `limit` for Pod resource configuration. Cores are specified either as a decimal point number or as milli units. For example:`1.5` will be 1.5 cores, also written as `1500m`. + description: |- + The maximum amount of CPU cores that can be requested by Pods. + Equivalent to the `limit` for Pod resource configuration. + Cores are specified either as a decimal point number or as milli units. + For example:`1.5` will be 1.5 cores, also written as `1500m`. nullable: true type: string min: - description: The minimal amount of CPU cores that Pods need to run. Equivalent to the `request` for Pod resource configuration. Cores are specified either as a decimal point number or as milli units. For example:`1.5` will be 1.5 cores, also written as `1500m`. + description: |- + The minimal amount of CPU cores that Pods need to run. + Equivalent to the `request` for Pod resource configuration. + Cores are specified either as a decimal point number or as milli units. + For example:`1.5` will be 1.5 cores, also written as `1500m`. nullable: true type: string type: object memory: properties: limit: - description: 'The maximum amount of memory that should be available to the Pod. Specified as a byte [Quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/), which means these suffixes are supported: E, P, T, G, M, k. You can also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki. For example, the following represent roughly the same value: `128974848, 129e6, 129M, 128974848000m, 123Mi`' + description: |- + The maximum amount of memory that should be available to the Pod. + Specified as a byte [Quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/), + which means these suffixes are supported: E, P, T, G, M, k. + You can also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki. + For example, the following represent roughly the same value: + `128974848, 129e6, 129M, 128974848000m, 123Mi` nullable: true type: string runtimeLimits: @@ -1791,20 +2161,34 @@ spec: type: string type: object default: {} - description: The `configOverrides` can be used to configure properties in product config files that are not exposed in the CRD. Read the [config overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#config-overrides) and consult the operator specific usage guide documentation for details on the available config files and settings for the specific product. + description: |- + The `configOverrides` can be used to configure properties in product config files + that are not exposed in the CRD. Read the + [config overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#config-overrides) + and consult the operator specific usage guide documentation for details on the + available config files and settings for the specific product. type: object envOverrides: additionalProperties: type: string default: {} - description: '`envOverrides` configure environment variables to be set in the Pods. It is a map from strings to strings - environment variables and the value to set. Read the [environment variable overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#env-overrides) for more information and consult the operator specific usage guide to find out about the product specific environment variables that are available.' + description: |- + `envOverrides` configure environment variables to be set in the Pods. + It is a map from strings to strings - environment variables and the value to set. + Read the + [environment variable overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#env-overrides) + for more information and consult the operator specific usage guide to find out about + the product specific environment variables that are available. type: object jvmArgumentOverrides: default: add: [] remove: [] removeRegex: [] - description: Allows overriding JVM arguments. Please read on the [JVM argument overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#jvm-argument-overrides) for details on the usage. + description: |- + Allows overriding JVM arguments. + Please read on the [JVM argument overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#jvm-argument-overrides) + for details on the usage. properties: add: default: [] @@ -1827,11 +2211,18 @@ spec: type: object podOverrides: default: {} - description: In the `podOverrides` property you can define a [PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#podtemplatespec-v1-core) to override any property that can be set on a Kubernetes Pod. Read the [Pod overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#pod-overrides) for more information. + description: |- + In the `podOverrides` property you can define a + [PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#podtemplatespec-v1-core) + to override any property that can be set on a Kubernetes Pod. + Read the + [Pod overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#pod-overrides) + for more information. type: object x-kubernetes-preserve-unknown-fields: true replicas: format: uint16 + maximum: 65535.0 minimum: 0.0 nullable: true type: integer @@ -1918,13 +2309,19 @@ spec: description: Auto-generated derived type for TrinoCatalogSpec via `CustomResource` properties: spec: - description: The TrinoCatalog resource can be used to define catalogs in Kubernetes objects. Read more about it in the [Trino operator concept docs](https://docs.stackable.tech/home/nightly/trino/concepts) and the [Trino operator usage guide](https://docs.stackable.tech/home/nightly/trino/usage-guide/catalogs/). The documentation also contains a list of all the supported backends. + description: |- + The TrinoCatalog resource can be used to define catalogs in Kubernetes objects. + Read more about it in the [Trino operator concept docs](https://docs.stackable.tech/home/nightly/trino/concepts) + and the [Trino operator usage guide](https://docs.stackable.tech/home/nightly/trino/usage-guide/catalogs/). + The documentation also contains a list of all the supported backends. properties: configOverrides: additionalProperties: type: string default: {} - description: 'The `configOverrides` allow overriding arbitrary Trino settings. For example, for Hive you could add `hive.metastore.username: trino`.' + description: |- + The `configOverrides` allow overriding arbitrary Trino settings. + For example, for Hive you could add `hive.metastore.username: trino`. type: object connector: description: The `connector` defines which connector is used. @@ -1953,7 +2350,9 @@ spec: description: An [Delta Lake](https://docs.stackable.tech/home/nightly/trino/usage-guide/catalogs/delta-lake) connector. properties: hdfs: - description: Connection to an HDFS cluster. Please make sure that the underlying Hive metastore also has access to the HDFS. + description: |- + Connection to an HDFS cluster. + Please make sure that the underlying Hive metastore also has access to the HDFS. nullable: true properties: configMap: @@ -1972,49 +2371,73 @@ spec: - configMap type: object s3: - description: Connection to an S3 store. Please make sure that the underlying Hive metastore also has access to the S3 store. Learn more about S3 configuration in the [S3 concept docs](https://docs.stackable.tech/home/nightly/concepts/s3). - nullable: true - oneOf: - - required: - - inline - - required: - - reference + anyOf: + - oneOf: + - required: + - inline + - required: + - reference + - enum: + - null + nullable: true + description: |- + Connection to an S3 store. + Please make sure that the underlying Hive metastore also has access to the S3 store. + Learn more about S3 configuration in the [S3 concept docs](https://docs.stackable.tech/home/nightly/concepts/s3). properties: inline: - description: S3 connection definition as a resource. Learn more on the [S3 concept documentation](https://docs.stackable.tech/home/nightly/concepts/s3). + description: |- + S3 connection definition as a resource. + Learn more on the [S3 concept documentation](https://docs.stackable.tech/home/nightly/concepts/s3). properties: accessStyle: default: VirtualHosted - description: Which access style to use. Defaults to virtual hosted-style as most of the data products out there. Have a look at the [AWS documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html). + description: |- + Which access style to use. + Defaults to virtual hosted-style as most of the data products out there. + Have a look at the [AWS documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html). enum: - Path - VirtualHosted type: string credentials: - description: If the S3 uses authentication you have to specify you S3 credentials. In the most cases a [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass) providing `accessKey` and `secretKey` is sufficient. + description: |- + If the S3 uses authentication you have to specify you S3 credentials. + In the most cases a [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass) + providing `accessKey` and `secretKey` is sufficient. nullable: true properties: scope: - description: '[Scope](https://docs.stackable.tech/home/nightly/secret-operator/scope) of the [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass).' + description: |- + [Scope](https://docs.stackable.tech/home/nightly/secret-operator/scope) of the + [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass). nullable: true properties: listenerVolumes: default: [] - description: The listener volume scope allows Node and Service scopes to be inferred from the applicable listeners. This must correspond to Volume names in the Pod that mount Listeners. + description: |- + The listener volume scope allows Node and Service scopes to be inferred from the applicable listeners. + This must correspond to Volume names in the Pod that mount Listeners. items: type: string type: array node: default: false - description: The node scope is resolved to the name of the Kubernetes Node object that the Pod is running on. This will typically be the DNS name of the node. + description: |- + The node scope is resolved to the name of the Kubernetes Node object that the Pod is running on. + This will typically be the DNS name of the node. type: boolean pod: default: false - description: The pod scope is resolved to the name of the Kubernetes Pod. This allows the secret to differentiate between StatefulSet replicas. + description: |- + The pod scope is resolved to the name of the Kubernetes Pod. + This allows the secret to differentiate between StatefulSet replicas. type: boolean services: default: [] - description: The service scope allows Pod objects to specify custom scopes. This should typically correspond to Service objects that the Pod participates in. + description: |- + The service scope allows Pod objects to specify custom scopes. + This should typically correspond to Service objects that the Pod participates in. items: type: string type: array @@ -2029,8 +2452,11 @@ spec: description: 'Host of the S3 server without any protocol or port. For example: `west1.my-cloud.com`.' type: string port: - description: Port the S3 server listens on. If not specified the product will determine the port to use. + description: |- + Port the S3 server listens on. + If not specified the product will determine the port to use. format: uint16 + maximum: 65535.0 minimum: 0.0 nullable: true type: integer @@ -2075,10 +2501,15 @@ spec: - secretClass properties: secretClass: - description: Name of the [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass) which will provide the CA certificate. Note that a SecretClass does not need to have a key but can also work with just a CA certificate, so if you got provided with a CA cert but don't have access to the key you can still use this method. + description: |- + Name of the [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass) which will provide the CA certificate. + Note that a SecretClass does not need to have a key but can also work with just a CA certificate, + so if you got provided with a CA cert but don't have access to the key you can still use this method. type: string webPki: - description: Use TLS and the CA certificates trusted by the common web browsers to verify the server. This can be useful when you e.g. use public AWS S3 or other public available services. + description: |- + Use TLS and the CA certificates trusted by the common web browsers to verify the server. + This can be useful when you e.g. use public AWS S3 or other public available services. type: object type: object required: @@ -2101,7 +2532,9 @@ spec: description: A [generic](https://docs.stackable.tech/home/nightly/trino/usage-guide/catalogs/generic) connector. properties: connectorName: - description: Name of the Trino connector. Will be passed to `connector.name`. + description: |- + Name of the Trino connector. + Will be passed to `connector.name`. type: string properties: additionalProperties: @@ -2149,7 +2582,9 @@ spec: type: object type: object default: {} - description: A map of properties to put in the connector configuration file. They can be specified either as a raw value or be read from a Secret or ConfigMap. + description: |- + A map of properties to put in the connector configuration file. + They can be specified either as a raw value or be read from a Secret or ConfigMap. type: object required: - connectorName @@ -2158,7 +2593,9 @@ spec: description: A [Google sheets](https://docs.stackable.tech/home/nightly/trino/usage-guide/catalogs/google-sheets) connector. properties: cache: - description: Cache the contents of sheets. This is used to reduce Google Sheets API usage and latency. + description: |- + Cache the contents of sheets. + This is used to reduce Google Sheets API usage and latency. nullable: true properties: sheetsDataExpireAfterWrite: @@ -2171,7 +2608,9 @@ spec: type: string type: object credentialsSecret: - description: The Secret containing the Google API JSON key file. The key used from the Secret is `credentials`. + description: |- + The Secret containing the Google API JSON key file. + The key used from the Secret is `credentials`. type: string metadataSheetId: description: Sheet ID of the spreadsheet, that contains the table mapping. @@ -2184,7 +2623,9 @@ spec: description: An [Apache Hive](https://docs.stackable.tech/home/nightly/trino/usage-guide/catalogs/hive) connector. properties: hdfs: - description: Connection to an HDFS cluster. Please make sure that the underlying Hive metastore also has access to the HDFS. + description: |- + Connection to an HDFS cluster. + Please make sure that the underlying Hive metastore also has access to the HDFS. nullable: true properties: configMap: @@ -2203,49 +2644,73 @@ spec: - configMap type: object s3: - description: Connection to an S3 store. Please make sure that the underlying Hive metastore also has access to the S3 store. Learn more about S3 configuration in the [S3 concept docs](https://docs.stackable.tech/home/nightly/concepts/s3). - nullable: true - oneOf: - - required: - - inline - - required: - - reference + anyOf: + - oneOf: + - required: + - inline + - required: + - reference + - enum: + - null + nullable: true + description: |- + Connection to an S3 store. + Please make sure that the underlying Hive metastore also has access to the S3 store. + Learn more about S3 configuration in the [S3 concept docs](https://docs.stackable.tech/home/nightly/concepts/s3). properties: inline: - description: S3 connection definition as a resource. Learn more on the [S3 concept documentation](https://docs.stackable.tech/home/nightly/concepts/s3). + description: |- + S3 connection definition as a resource. + Learn more on the [S3 concept documentation](https://docs.stackable.tech/home/nightly/concepts/s3). properties: accessStyle: default: VirtualHosted - description: Which access style to use. Defaults to virtual hosted-style as most of the data products out there. Have a look at the [AWS documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html). + description: |- + Which access style to use. + Defaults to virtual hosted-style as most of the data products out there. + Have a look at the [AWS documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html). enum: - Path - VirtualHosted type: string credentials: - description: If the S3 uses authentication you have to specify you S3 credentials. In the most cases a [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass) providing `accessKey` and `secretKey` is sufficient. + description: |- + If the S3 uses authentication you have to specify you S3 credentials. + In the most cases a [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass) + providing `accessKey` and `secretKey` is sufficient. nullable: true properties: scope: - description: '[Scope](https://docs.stackable.tech/home/nightly/secret-operator/scope) of the [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass).' + description: |- + [Scope](https://docs.stackable.tech/home/nightly/secret-operator/scope) of the + [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass). nullable: true properties: listenerVolumes: default: [] - description: The listener volume scope allows Node and Service scopes to be inferred from the applicable listeners. This must correspond to Volume names in the Pod that mount Listeners. + description: |- + The listener volume scope allows Node and Service scopes to be inferred from the applicable listeners. + This must correspond to Volume names in the Pod that mount Listeners. items: type: string type: array node: default: false - description: The node scope is resolved to the name of the Kubernetes Node object that the Pod is running on. This will typically be the DNS name of the node. + description: |- + The node scope is resolved to the name of the Kubernetes Node object that the Pod is running on. + This will typically be the DNS name of the node. type: boolean pod: default: false - description: The pod scope is resolved to the name of the Kubernetes Pod. This allows the secret to differentiate between StatefulSet replicas. + description: |- + The pod scope is resolved to the name of the Kubernetes Pod. + This allows the secret to differentiate between StatefulSet replicas. type: boolean services: default: [] - description: The service scope allows Pod objects to specify custom scopes. This should typically correspond to Service objects that the Pod participates in. + description: |- + The service scope allows Pod objects to specify custom scopes. + This should typically correspond to Service objects that the Pod participates in. items: type: string type: array @@ -2260,8 +2725,11 @@ spec: description: 'Host of the S3 server without any protocol or port. For example: `west1.my-cloud.com`.' type: string port: - description: Port the S3 server listens on. If not specified the product will determine the port to use. + description: |- + Port the S3 server listens on. + If not specified the product will determine the port to use. format: uint16 + maximum: 65535.0 minimum: 0.0 nullable: true type: integer @@ -2306,10 +2774,15 @@ spec: - secretClass properties: secretClass: - description: Name of the [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass) which will provide the CA certificate. Note that a SecretClass does not need to have a key but can also work with just a CA certificate, so if you got provided with a CA cert but don't have access to the key you can still use this method. + description: |- + Name of the [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass) which will provide the CA certificate. + Note that a SecretClass does not need to have a key but can also work with just a CA certificate, + so if you got provided with a CA cert but don't have access to the key you can still use this method. type: string webPki: - description: Use TLS and the CA certificates trusted by the common web browsers to verify the server. This can be useful when you e.g. use public AWS S3 or other public available services. + description: |- + Use TLS and the CA certificates trusted by the common web browsers to verify the server. + This can be useful when you e.g. use public AWS S3 or other public available services. type: object type: object required: @@ -2332,7 +2805,9 @@ spec: description: An [Apache Iceberg](https://docs.stackable.tech/home/nightly/trino/usage-guide/catalogs/iceberg) connector. properties: hdfs: - description: Connection to an HDFS cluster. Please make sure that the underlying Hive metastore also has access to the HDFS. + description: |- + Connection to an HDFS cluster. + Please make sure that the underlying Hive metastore also has access to the HDFS. nullable: true properties: configMap: @@ -2351,49 +2826,73 @@ spec: - configMap type: object s3: - description: Connection to an S3 store. Please make sure that the underlying Hive metastore also has access to the S3 store. Learn more about S3 configuration in the [S3 concept docs](https://docs.stackable.tech/home/nightly/concepts/s3). - nullable: true - oneOf: - - required: - - inline - - required: - - reference + anyOf: + - oneOf: + - required: + - inline + - required: + - reference + - enum: + - null + nullable: true + description: |- + Connection to an S3 store. + Please make sure that the underlying Hive metastore also has access to the S3 store. + Learn more about S3 configuration in the [S3 concept docs](https://docs.stackable.tech/home/nightly/concepts/s3). properties: inline: - description: S3 connection definition as a resource. Learn more on the [S3 concept documentation](https://docs.stackable.tech/home/nightly/concepts/s3). + description: |- + S3 connection definition as a resource. + Learn more on the [S3 concept documentation](https://docs.stackable.tech/home/nightly/concepts/s3). properties: accessStyle: default: VirtualHosted - description: Which access style to use. Defaults to virtual hosted-style as most of the data products out there. Have a look at the [AWS documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html). + description: |- + Which access style to use. + Defaults to virtual hosted-style as most of the data products out there. + Have a look at the [AWS documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html). enum: - Path - VirtualHosted type: string credentials: - description: If the S3 uses authentication you have to specify you S3 credentials. In the most cases a [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass) providing `accessKey` and `secretKey` is sufficient. + description: |- + If the S3 uses authentication you have to specify you S3 credentials. + In the most cases a [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass) + providing `accessKey` and `secretKey` is sufficient. nullable: true properties: scope: - description: '[Scope](https://docs.stackable.tech/home/nightly/secret-operator/scope) of the [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass).' + description: |- + [Scope](https://docs.stackable.tech/home/nightly/secret-operator/scope) of the + [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass). nullable: true properties: listenerVolumes: default: [] - description: The listener volume scope allows Node and Service scopes to be inferred from the applicable listeners. This must correspond to Volume names in the Pod that mount Listeners. + description: |- + The listener volume scope allows Node and Service scopes to be inferred from the applicable listeners. + This must correspond to Volume names in the Pod that mount Listeners. items: type: string type: array node: default: false - description: The node scope is resolved to the name of the Kubernetes Node object that the Pod is running on. This will typically be the DNS name of the node. + description: |- + The node scope is resolved to the name of the Kubernetes Node object that the Pod is running on. + This will typically be the DNS name of the node. type: boolean pod: default: false - description: The pod scope is resolved to the name of the Kubernetes Pod. This allows the secret to differentiate between StatefulSet replicas. + description: |- + The pod scope is resolved to the name of the Kubernetes Pod. + This allows the secret to differentiate between StatefulSet replicas. type: boolean services: default: [] - description: The service scope allows Pod objects to specify custom scopes. This should typically correspond to Service objects that the Pod participates in. + description: |- + The service scope allows Pod objects to specify custom scopes. + This should typically correspond to Service objects that the Pod participates in. items: type: string type: array @@ -2408,8 +2907,11 @@ spec: description: 'Host of the S3 server without any protocol or port. For example: `west1.my-cloud.com`.' type: string port: - description: Port the S3 server listens on. If not specified the product will determine the port to use. + description: |- + Port the S3 server listens on. + If not specified the product will determine the port to use. format: uint16 + maximum: 65535.0 minimum: 0.0 nullable: true type: integer @@ -2454,10 +2956,15 @@ spec: - secretClass properties: secretClass: - description: Name of the [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass) which will provide the CA certificate. Note that a SecretClass does not need to have a key but can also work with just a CA certificate, so if you got provided with a CA cert but don't have access to the key you can still use this method. + description: |- + Name of the [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass) which will provide the CA certificate. + Note that a SecretClass does not need to have a key but can also work with just a CA certificate, + so if you got provided with a CA cert but don't have access to the key you can still use this method. type: string webPki: - description: Use TLS and the CA certificates trusted by the common web browsers to verify the server. This can be useful when you e.g. use public AWS S3 or other public available services. + description: |- + Use TLS and the CA certificates trusted by the common web browsers to verify the server. + This can be useful when you e.g. use public AWS S3 or other public available services. type: object type: object required: @@ -2488,7 +2995,8 @@ spec: description: |- List of config properties which should be removed. - This is helpful, because Trino fails to start in case you have any unused config properties. The removals are executed after the `configOverrides`. + This is helpful, because Trino fails to start in case you have any unused config + properties. The removals are executed after the `configOverrides`. This field is experimental, and might be replaced by a more generic mechanism to edit config properties items: diff --git a/rust/operator-binary/src/main.rs b/rust/operator-binary/src/main.rs index 81be06f5..16306303 100644 --- a/rust/operator-binary/src/main.rs +++ b/rust/operator-binary/src/main.rs @@ -16,11 +16,12 @@ mod service; use std::sync::Arc; use clap::Parser; -use futures::stream::StreamExt; +use futures::{FutureExt, stream::StreamExt}; use stackable_operator::{ YamlSchema, - cli::{Command, ProductOperatorRun}, + cli::{Command, RunArguments}, crd::authentication::core, + eos::EndOfSupportChecker, k8s_openapi::api::{ apps::v1::StatefulSet, core::v1::{ConfigMap, Service}, @@ -70,18 +71,19 @@ async fn main() -> anyhow::Result<()> { TrinoCatalog::merged_crd(TrinoCatalogVersion::V1Alpha1)? .print_yaml_schema(built_info::PKG_VERSION, SerializeOptions::default())?; } - Command::Run(ProductOperatorRun { + Command::Run(RunArguments { product_config, watch_namespace, operator_environment: _, - telemetry, - cluster_info, + maintenance, + common, }) => { // NOTE (@NickLarsenNZ): Before stackable-telemetry was used: // - The console log level was set by `TRINO_OPERATOR_LOG`, and is now `CONSOLE_LOG` (when using Tracing::pre_configured). // - The file log level was set by `TRINO_OPERATOR_LOG`, and is now set via `FILE_LOG` (when using Tracing::pre_configured). // - The file log directory was set by `TRINO_OPERATOR_LOG_DIRECTORY`, and is now set by `ROLLING_LOGS_DIR` (or via `--rolling-logs `). - let _tracing_guard = Tracing::pre_configured(built_info::PKG_NAME, telemetry).init()?; + let _tracing_guard = + Tracing::pre_configured(built_info::PKG_NAME, common.telemetry).init()?; tracing::info!( built_info.pkg_version = built_info::PKG_VERSION, @@ -92,6 +94,12 @@ async fn main() -> anyhow::Result<()> { "Starting {description}", description = built_info::PKG_DESCRIPTION ); + + let eos_checker = + EndOfSupportChecker::new(built_info::BUILT_TIME_UTC, maintenance.end_of_support)? + .run() + .map(anyhow::Ok); + let product_config = product_config.load(&[ "deploy/config-spec/properties.yaml", "/etc/stackable/trino-operator/config-spec/properties.yaml", @@ -99,7 +107,7 @@ async fn main() -> anyhow::Result<()> { let client = stackable_operator::client::initialize_operator( Some(OPERATOR_NAME.to_string()), - &cluster_info, + &common.cluster_info, ) .await?; let event_recorder = Arc::new(Recorder::new( @@ -118,7 +126,7 @@ async fn main() -> anyhow::Result<()> { let authentication_class_cluster_store = cluster_controller.store(); let config_map_cluster_store = cluster_controller.store(); - cluster_controller + let cluster_controller = cluster_controller .owns( watch_namespace.get_api::>(&client), watcher::Config::default(), @@ -195,7 +203,9 @@ async fn main() -> anyhow::Result<()> { } }, ) - .await; + .map(anyhow::Ok); + + futures::try_join!(cluster_controller, eos_checker)?; } }