diff --git a/CHANGELOG.md b/CHANGELOG.md index 342467ba..2105c4bc 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 ([#615]). + - `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. - Add experimental support for Spark 4 ([#589]) - Helm: Allow Pod `priorityClassName` to be configured ([#608]). - Support for Spark 3.5.7 ([#610]). @@ -28,6 +32,7 @@ All notable changes to this project will be documented in this file. [#608]: https://github.com/stackabletech/spark-k8s-operator/pull/608 [#610]: https://github.com/stackabletech/spark-k8s-operator/pull/610 [#611]: https://github.com/stackabletech/spark-k8s-operator/pull/611 +[#615]: https://github.com/stackabletech/spark-k8s-operator/pull/615 ## [25.7.0] - 2025-07-23 diff --git a/Cargo.lock b/Cargo.lock index f44d71ff..71146751 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", @@ -984,30 +939,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" @@ -1103,26 +1034,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" @@ -1134,7 +1045,7 @@ dependencies = [ "hyper-util", "log", "rustls", - "rustls-native-certs 0.8.1", + "rustls-native-certs", "rustls-pki-types", "tokio", "tokio-rustls", @@ -1447,9 +1358,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", @@ -1461,18 +1372,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", @@ -1483,9 +1394,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", @@ -1497,7 +1408,6 @@ dependencies = [ "http-body", "http-body-util", "hyper", - "hyper-http-proxy", "hyper-rustls", "hyper-timeout", "hyper-util", @@ -1520,9 +1430,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", @@ -1539,11 +1449,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", @@ -1553,9 +1463,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", @@ -1736,9 +1646,9 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[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", @@ -1750,9 +1660,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", @@ -1762,9 +1672,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", @@ -1775,9 +1685,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", @@ -1794,27 +1704,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", @@ -1822,7 +1733,6 @@ dependencies = [ "opentelemetry", "percent-encoding", "rand", - "serde_json", "thiserror 2.0.16", "tokio", "tokio-stream", @@ -2008,8 +1918,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", @@ -2019,14 +1929,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", @@ -2034,9 +1944,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", @@ -2098,6 +2008,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" @@ -2240,19 +2170,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" @@ -2262,16 +2179,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]] @@ -2317,11 +2225,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", @@ -2330,9 +2239,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", @@ -2355,19 +2264,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" @@ -2375,7 +2271,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", @@ -2485,17 +2381,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" @@ -2603,8 +2488,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", @@ -2642,9 +2527,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", @@ -2652,9 +2537,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", @@ -2693,7 +2579,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", @@ -2716,8 +2602,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", @@ -2729,11 +2615,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", @@ -2994,9 +2880,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", @@ -3010,7 +2896,7 @@ dependencies = [ "hyper-util", "percent-encoding", "pin-project", - "prost", + "sync_wrapper", "tokio", "tokio-stream", "tower", @@ -3019,6 +2905,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" @@ -3141,15 +3038,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", @@ -3633,10 +3531,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 756abf4e..877fd75c 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 = [ { @@ -3036,64 +2917,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"; @@ -3369,104 +3192,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"; @@ -3501,7 +3226,7 @@ rec { } { name = "rustls-native-certs"; - packageId = "rustls-native-certs 0.8.1"; + packageId = "rustls-native-certs"; optional = true; } { @@ -4530,10 +4255,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 " @@ -4572,10 +4297,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"; @@ -4584,8 +4309,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 = [ @@ -4594,7 +4319,7 @@ rec { dependencies = [ { name = "darling"; - packageId = "darling 0.21.2"; + packageId = "darling"; optional = true; } { @@ -4614,9 +4339,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 " @@ -4687,9 +4412,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 " @@ -4750,12 +4475,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"; @@ -4893,12 +4612,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" ]; @@ -4911,9 +4628,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" ]; @@ -4928,9 +4645,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 " @@ -5010,9 +4727,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 = [ @@ -5023,7 +4740,7 @@ rec { dependencies = [ { name = "darling"; - packageId = "darling 0.20.11"; + packageId = "darling"; } { name = "proc-macro2"; @@ -5059,9 +4776,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 " @@ -5626,9 +5343,9 @@ rec { }; "opentelemetry" = rec { crateName = "opentelemetry"; - version = "0.30.0"; + version = "0.31.0"; edition = "2021"; - sha256 = "1rjjwlvhr7h01kl0768v9i7ng77l1axxfzbg29ancxbjrgj1dx5a"; + sha256 = "18629xsj4rsyiby9aj511q6wcw6s9m09gx3ymw1yjcvix1mcsjxq"; dependencies = [ { name = "futures-core"; @@ -5680,14 +5397,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" ]; } { @@ -5733,9 +5451,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 = [ { @@ -5755,6 +5473,7 @@ rec { { name = "opentelemetry"; packageId = "opentelemetry"; + usesDefaultFeatures = false; features = [ "trace" ]; } { @@ -5762,7 +5481,6 @@ rec { packageId = "reqwest"; optional = true; usesDefaultFeatures = false; - features = [ "blocking" ]; } ]; features = { @@ -5770,16 +5488,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 = [ { @@ -5798,6 +5517,7 @@ rec { name = "opentelemetry-http"; packageId = "opentelemetry-http"; optional = true; + usesDefaultFeatures = false; } { name = "opentelemetry-proto"; @@ -5846,6 +5566,12 @@ rec { } ]; devDependencies = [ + { + name = "opentelemetry_sdk"; + packageId = "opentelemetry_sdk"; + usesDefaultFeatures = false; + features = [ "trace" "testing" ]; + } { name = "tokio"; packageId = "tokio"; @@ -5861,20 +5587,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" ]; @@ -5888,15 +5616,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 = [ { @@ -5919,36 +5649,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 = { }; @@ -5956,9 +5701,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"; @@ -5977,6 +5722,7 @@ rec { { name = "opentelemetry"; packageId = "opentelemetry"; + usesDefaultFeatures = false; } { name = "percent-encoding"; @@ -5990,11 +5736,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"; @@ -6005,7 +5746,6 @@ rec { packageId = "tokio"; optional = true; usesDefaultFeatures = false; - features = [ "rt" "time" ]; } { name = "tokio-stream"; @@ -6020,17 +5760,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" ]; @@ -6041,7 +5781,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"; @@ -6496,13 +6236,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 = [ @@ -6543,17 +6283,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 " @@ -6575,15 +6315,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 = [ @@ -6765,6 +6504,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"; @@ -7397,41 +7179,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"; @@ -7456,31 +7204,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"; @@ -7589,9 +7318,9 @@ rec { }; "schemars" = rec { crateName = "schemars"; - version = "0.8.22"; + version = "1.0.4"; edition = "2021"; - sha256 = "05an9nbi18ynyxv1rjmwbg6j08j0496hd64mjggh53mwp3hjmgrz"; + sha256 = "1l7w773jfk6mz0v8wpahp60aslksjijlbm65ysi4y5mwj520rll2"; authors = [ "Graham Esau " ]; @@ -7600,6 +7329,10 @@ rec { name = "dyn-clone"; packageId = "dyn-clone"; } + { + name = "ref-cast"; + packageId = "ref-cast"; + } { name = "schemars_derive"; packageId = "schemars_derive"; @@ -7608,56 +7341,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 " @@ -7675,6 +7416,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"; @@ -7715,54 +7462,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"; @@ -7779,7 +7479,7 @@ rec { } { name = "core-foundation"; - packageId = "core-foundation 0.10.1"; + packageId = "core-foundation"; } { name = "core-foundation-sys"; @@ -8095,45 +7795,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"; @@ -8432,13 +8093,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 = [ @@ -8497,7 +8158,7 @@ rec { name = "k8s-openapi"; packageId = "k8s-openapi"; usesDefaultFeatures = false; - features = [ "schemars" "v1_33" ]; + features = [ "schemars" "v1_34" ]; } { name = "kube"; @@ -8516,7 +8177,7 @@ rec { { name = "schemars"; packageId = "schemars"; - features = [ "url" ]; + features = [ "url2" ]; } { name = "semver"; @@ -8546,6 +8207,7 @@ rec { { name = "stackable-shared"; packageId = "stackable-shared"; + features = [ "chrono" "time" ]; } { name = "stackable-telemetry"; @@ -8589,14 +8251,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"; @@ -8605,8 +8267,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"; @@ -8616,7 +8278,7 @@ rec { dependencies = [ { name = "darling"; - packageId = "darling 0.21.2"; + packageId = "darling"; } { name = "proc-macro2"; @@ -8635,24 +8297,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"; @@ -8663,7 +8331,7 @@ rec { { name = "schemars"; packageId = "schemars"; - features = [ "url" ]; + features = [ "url2" ]; } { name = "semver"; @@ -8698,15 +8366,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-spark-k8s-operator" = rec { crateName = "stackable-spark-k8s-operator"; @@ -8817,8 +8486,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 = [ @@ -8922,13 +8591,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 = [ @@ -8938,7 +8607,7 @@ rec { { name = "schemars"; packageId = "schemars"; - features = [ "url" ]; + features = [ "url2" ]; } { name = "serde"; @@ -8966,13 +8635,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"; @@ -8986,7 +8655,7 @@ rec { } { name = "darling"; - packageId = "darling 0.21.2"; + packageId = "darling"; } { name = "indoc"; @@ -9000,7 +8669,7 @@ rec { name = "k8s-openapi"; packageId = "k8s-openapi"; usesDefaultFeatures = false; - features = [ "schemars" "v1_33" ]; + features = [ "schemars" "v1_34" ]; } { name = "k8s-version"; @@ -9814,9 +9483,9 @@ rec { }; "tonic" = rec { crateName = "tonic"; - version = "0.13.1"; + version = "0.14.2"; edition = "2021"; - sha256 = "1acvnjzh61y0m829mijj6z2nzqnwshdsnmbcl2g4spw3bahinn3y"; + sha256 = "00vjbvccmyzjbi0j0ydi1l8psd0lb1nb4p8qzrdxzxz9ihc16xpb"; authors = [ "Lucio Franco " ]; @@ -9877,11 +9546,8 @@ rec { packageId = "pin-project"; } { - name = "prost"; - packageId = "prost"; - optional = true; - usesDefaultFeatures = false; - features = [ "std" ]; + name = "sync_wrapper"; + packageId = "sync_wrapper"; } { name = "tokio"; @@ -9922,27 +9588,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"; @@ -10061,7 +9753,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"; @@ -10443,9 +10135,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 = [ { @@ -10453,10 +10145,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"; @@ -10469,11 +10157,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"; @@ -10512,7 +10209,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"; @@ -10528,14 +10225,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" ]; @@ -12915,15 +12608,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 c6a27bc2..49876d26 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,8 +10,8 @@ edition = "2021" repository = "https://github.com/stackabletech/spark-k8s-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" built = { version = "0.8", features = ["chrono", "git2"] } 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/spark-k8s-operator/crds/crds.yaml b/deploy/helm/spark-k8s-operator/crds/crds.yaml index c8adfce8..40e4065d 100644 --- a/deploy/helm/spark-k8s-operator/crds/crds.yaml +++ b/deploy/helm/spark-k8s-operator/crds/crds.yaml @@ -24,9 +24,12 @@ spec: properties: spec: description: |- - A Spark cluster stacklet. This resource is managed by the Stackable operator for Apache Spark. 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/spark-k8s/). + A Spark cluster stacklet. This resource is managed by the Stackable operator for Apache Spark. + 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/spark-k8s/). - The SparkApplication CRD looks a little different than the CRDs of the other products on the Stackable Data Platform. + The SparkApplication CRD looks a little different than the CRDs of the other products on the + Stackable Data Platform. properties: args: default: [] @@ -40,7 +43,10 @@ spec: packages: [] repositories: [] requirements: [] - description: 'Job dependencies: a list of python packages that will be installed via pip, a list of packages or repositories that is passed directly to spark-submit, or a list of excluded packages (also passed directly to spark-submit).' + description: |- + Job dependencies: a list of python packages that will be installed via pip, a list of packages + or repositories that is passed directly to spark-submit, or a list of excluded packages + (also passed directly to spark-submit). properties: excludePackages: default: [] @@ -62,13 +68,17 @@ spec: type: array requirements: default: [] - description: 'Under the `requirements` you can specify Python dependencies that will be installed with `pip`. Example: `tabulate==0.8.9`' + description: |- + Under the `requirements` you can specify Python dependencies that will be installed with `pip`. + Example: `tabulate==0.8.9` items: type: string type: array type: object driver: - description: The driver role specifies the configuration that, together with the driver pod template, is used by Spark to create driver pods. + description: |- + The driver role specifies the configuration that, together with the driver pod template, is used by + Spark to create driver pods. nullable: true properties: cliOverrides: @@ -85,7 +95,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) @@ -128,7 +140,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 @@ -137,6 +151,7 @@ spec: - ERROR - FATAL - NONE + - null nullable: true type: string type: object @@ -153,7 +168,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 @@ -162,6 +179,7 @@ spec: - ERROR - FATAL - NONE + - null nullable: true type: string type: object @@ -170,7 +188,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 @@ -179,6 +199,7 @@ spec: - ERROR - FATAL - NONE + - null nullable: true type: string type: object @@ -194,7 +215,9 @@ spec: type: boolean type: object 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. + 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. nullable: true type: string resources: @@ -206,7 +229,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: @@ -214,18 +239,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: @@ -248,20 +287,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: [] @@ -284,18 +337,26 @@ 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 type: object env: default: [] - description: A list of environment variables that will be set in the job pod and the driver and executor pod templates. + description: |- + A list of environment variables that will be set in the job pod and the driver and executor + pod templates. items: description: EnvVar represents an environment variable present in a Container. properties: name: - description: Name of the environment variable. Must be a C_IDENTIFIER. + description: Name of the environment variable. May consist of any printable ASCII characters except '='. type: string value: description: 'Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".' @@ -331,6 +392,29 @@ spec: required: - fieldPath type: object + fileKeyRef: + description: FileKeyRef selects a key of the env file. Requires the EnvFiles feature gate to be enabled. + properties: + key: + description: The key within the env file. An invalid key will prevent the pod from starting. The keys defined within a source may consist of any printable ASCII characters except '='. During Alpha stage of the EnvFiles feature gate, the key size is limited to 128 characters. + type: string + optional: + description: |- + Specify whether the file or its key must be defined. If the file or key does not exist, then the env var is not published. If optional is set to true and the specified key does not exist, the environment variable will not be set in the Pod's containers. + + If optional is set to false and the specified key does not exist, an error will be returned during Pod creation. + type: boolean + path: + description: The path within the volume from which to select the file. Must be relative and may not contain the '..' path or start with '..'. + type: string + volumeName: + description: The name of the volume mount containing the env file. + type: string + required: + - key + - path + - volumeName + type: object resourceFieldRef: description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.' properties: @@ -368,7 +452,11 @@ spec: type: object type: array executor: - description: The executor role specifies the configuration that, together with the driver pod template, is used by Spark to create the executor pods. This is RoleGroup instead of plain CommonConfiguration because it needs to allow for the number of replicas. to be specified. + description: |- + The executor role specifies the configuration that, together with the driver pod template, is used by + Spark to create the executor pods. + This is RoleGroup instead of plain CommonConfiguration because it needs to allow for the number of replicas. + to be specified. nullable: true properties: cliOverrides: @@ -385,7 +473,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) @@ -428,7 +518,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 @@ -437,6 +529,7 @@ spec: - ERROR - FATAL - NONE + - null nullable: true type: string type: object @@ -453,7 +546,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 @@ -462,6 +557,7 @@ spec: - ERROR - FATAL - NONE + - null nullable: true type: string type: object @@ -470,7 +566,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 @@ -479,6 +577,7 @@ spec: - ERROR - FATAL - NONE + - null nullable: true type: string type: object @@ -494,7 +593,9 @@ spec: type: boolean type: object 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. + 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. nullable: true type: string resources: @@ -506,7 +607,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: @@ -514,18 +617,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: @@ -548,20 +665,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: [] @@ -584,21 +715,34 @@ 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 type: object image: - description: User-supplied image containing spark-job dependencies that will be copied to the specified volume mount. See the [examples](https://docs.stackable.tech/home/nightly/spark-k8s/usage-guide/examples). + description: |- + User-supplied image containing spark-job dependencies that will be copied to the specified volume mount. + See the [examples](https://docs.stackable.tech/home/nightly/spark-k8s/usage-guide/examples). nullable: true type: string job: - description: The job builds a spark-submit command, complete with arguments and referenced dependencies such as templates, and passes it on to Spark. The reason this property uses its own type (SubmitConfigFragment) is because logging is not supported for spark-submit processes. + description: |- + The job builds a spark-submit command, complete with arguments and referenced dependencies + such as templates, and passes it on to Spark. + The reason this property uses its own type (SubmitConfigFragment) is because logging is not + supported for spark-submit processes. nullable: true properties: cliOverrides: @@ -610,7 +754,9 @@ spec: default: {} properties: 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. + 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. nullable: true type: string resources: @@ -622,7 +768,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: @@ -630,18 +778,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: @@ -664,20 +826,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: [] @@ -700,18 +876,27 @@ 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 type: object logFileDirectory: + anyOf: + - oneOf: + - required: + - s3 + - required: + - customLogDirectory + - enum: + - null + nullable: true description: The log file directory definition used by the Spark history server. - nullable: true - oneOf: - - required: - - s3 - - required: - - customLogDirectory properties: customLogDirectory: description: A custom log directory @@ -727,7 +912,9 @@ spec: - reference properties: inline: - description: S3 bucket specification containing the bucket name and an inlined or referenced connection specification. Learn more on the [S3 concept documentation](https://docs.stackable.tech/home/nightly/concepts/s3). + description: |- + S3 bucket specification containing the bucket name and an inlined or referenced connection specification. + Learn more on the [S3 concept documentation](https://docs.stackable.tech/home/nightly/concepts/s3). properties: bucketName: description: The name of the S3 bucket. @@ -741,40 +928,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 @@ -789,8 +994,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 @@ -835,10 +1043,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: @@ -882,49 +1095,72 @@ spec: - client type: string s3connection: - description: Configure an S3 connection that the SparkApplication has access to. Read more in the [Spark S3 usage guide](https://docs.stackable.tech/home/nightly/spark-k8s/usage-guide/s3). - nullable: true - oneOf: - - required: - - inline - - required: - - reference + anyOf: + - oneOf: + - required: + - inline + - required: + - reference + - enum: + - null + nullable: true + description: |- + Configure an S3 connection that the SparkApplication has access to. + Read more in the [Spark S3 usage guide](https://docs.stackable.tech/home/nightly/spark-k8s/usage-guide/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 @@ -939,8 +1175,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 @@ -985,10 +1224,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: @@ -1018,12 +1262,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`. @@ -1054,12 +1303,19 @@ 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 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 volumes: @@ -1117,7 +1373,10 @@ spec: description: Auto-generated derived type for SparkHistoryServerSpec via `CustomResource` properties: spec: - description: A Spark cluster history server component. This resource is managed by the Stackable operator for Apache Spark. Find more information on how to use it in the [operator documentation](https://docs.stackable.tech/home/nightly/spark-k8s/usage-guide/history-server). + description: |- + A Spark cluster history server component. This resource is managed by the Stackable operator + for Apache Spark. Find more information on how to use it in the + [operator documentation](https://docs.stackable.tech/home/nightly/spark-k8s/usage-guide/history-server). properties: image: anyOf: @@ -1127,12 +1386,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`. @@ -1163,7 +1427,10 @@ 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 @@ -1189,7 +1456,9 @@ spec: - reference properties: inline: - description: S3 bucket specification containing the bucket name and an inlined or referenced connection specification. Learn more on the [S3 concept documentation](https://docs.stackable.tech/home/nightly/concepts/s3). + description: |- + S3 bucket specification containing the bucket name and an inlined or referenced connection specification. + Learn more on the [S3 concept documentation](https://docs.stackable.tech/home/nightly/concepts/s3). properties: bucketName: description: The name of the S3 bucket. @@ -1203,40 +1472,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 @@ -1251,8 +1538,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 @@ -1297,10 +1587,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: @@ -1347,7 +1642,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) @@ -1393,7 +1690,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 @@ -1402,6 +1701,7 @@ spec: - ERROR - FATAL - NONE + - null nullable: true type: string type: object @@ -1418,7 +1718,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 @@ -1427,6 +1729,7 @@ spec: - ERROR - FATAL - NONE + - null nullable: true type: string type: object @@ -1435,7 +1738,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 @@ -1444,6 +1749,7 @@ spec: - ERROR - FATAL - NONE + - null nullable: true type: string type: object @@ -1459,7 +1765,9 @@ spec: type: boolean type: object 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. + 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. nullable: true type: string resources: @@ -1471,7 +1779,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: @@ -1479,18 +1789,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: @@ -1507,20 +1831,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: [] @@ -1543,7 +1881,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: @@ -1556,7 +1900,9 @@ spec: properties: listenerClass: default: cluster-internal - description: This field controls which [ListenerClass](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass.html) is used to expose the history server. + description: |- + This field controls which [ListenerClass](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass.html) + is used to expose the history server. type: string podDisruptionBudget: default: @@ -1565,17 +1911,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 @@ -1598,7 +1953,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) @@ -1644,7 +2001,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 @@ -1653,6 +2012,7 @@ spec: - ERROR - FATAL - NONE + - null nullable: true type: string type: object @@ -1669,7 +2029,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 @@ -1678,6 +2040,7 @@ spec: - ERROR - FATAL - NONE + - null nullable: true type: string type: object @@ -1686,7 +2049,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 @@ -1695,6 +2060,7 @@ spec: - ERROR - FATAL - NONE + - null nullable: true type: string type: object @@ -1710,7 +2076,9 @@ spec: type: boolean type: object 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. + 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. nullable: true type: string resources: @@ -1722,7 +2090,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: @@ -1730,18 +2100,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: @@ -1758,20 +2142,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: [] @@ -1794,11 +2192,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 @@ -1814,7 +2219,9 @@ spec: description: A map of key/value strings that will be passed directly to Spark when deploying the history server. type: object vectorAggregatorConfigMapName: - description: Name of the Vector aggregator discovery ConfigMap. It must contain the key `ADDRESS` with the address of the Vector aggregator. + description: |- + Name of the Vector aggregator discovery ConfigMap. + It must contain the key `ADDRESS` with the address of the Vector aggregator. nullable: true type: string required: @@ -1854,7 +2261,10 @@ spec: description: Auto-generated derived type for SparkConnectServerSpec via `CustomResource` properties: spec: - description: An Apache Spark Connect server component. This resource is managed by the Stackable operator for Apache Spark. Find more information on how to use it in the [operator documentation](https://docs.stackable.tech/home/nightly/spark-k8s/usage-guide/connect-server). + description: |- + An Apache Spark Connect server component. This resource is managed by the Stackable operator + for Apache Spark. Find more information on how to use it in the + [operator documentation](https://docs.stackable.tech/home/nightly/spark-k8s/usage-guide/connect-server). properties: args: default: [] @@ -1866,15 +2276,28 @@ 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 executor: @@ -1895,7 +2318,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) @@ -1938,7 +2363,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 @@ -1947,6 +2374,7 @@ spec: - ERROR - FATAL - NONE + - null nullable: true type: string type: object @@ -1963,7 +2391,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 @@ -1972,6 +2402,7 @@ spec: - ERROR - FATAL - NONE + - null nullable: true type: string type: object @@ -1980,7 +2411,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 @@ -1989,6 +2422,7 @@ spec: - ERROR - FATAL - NONE + - null nullable: true type: string type: object @@ -2004,7 +2438,9 @@ spec: type: boolean type: object 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. + 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. nullable: true type: string resources: @@ -2016,7 +2452,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: @@ -2024,18 +2462,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: @@ -2052,20 +2504,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: [] @@ -2088,7 +2554,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 type: object @@ -2100,12 +2572,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`. @@ -2136,7 +2613,10 @@ 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 @@ -2173,7 +2653,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 @@ -2182,6 +2664,7 @@ spec: - ERROR - FATAL - NONE + - null nullable: true type: string type: object @@ -2198,7 +2681,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 @@ -2207,6 +2692,7 @@ spec: - ERROR - FATAL - NONE + - null nullable: true type: string type: object @@ -2215,7 +2701,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 @@ -2224,6 +2712,7 @@ spec: - ERROR - FATAL - NONE + - null nullable: true type: string type: object @@ -2239,7 +2728,9 @@ spec: type: boolean type: object 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. + 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. nullable: true type: string resources: @@ -2251,7 +2742,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: @@ -2259,18 +2752,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: @@ -2287,20 +2794,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: [] @@ -2323,7 +2844,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: @@ -2333,12 +2860,16 @@ spec: properties: listenerClass: default: cluster-internal - description: This field controls which [ListenerClass](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass.html) is used to expose the Spark Connect services. + description: |- + This field controls which [ListenerClass](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass.html) + is used to expose the Spark Connect services. type: string type: object type: object vectorAggregatorConfigMapName: - description: Name of the Vector aggregator discovery ConfigMap. It must contain the key `ADDRESS` with the address of the Vector aggregator. + description: |- + Name of the Vector aggregator discovery ConfigMap. + It must contain the key `ADDRESS` with the address of the Vector aggregator. nullable: true type: string required: diff --git a/rust/operator-binary/src/main.rs b/rust/operator-binary/src/main.rs index 2d63b62c..682062a6 100644 --- a/rust/operator-binary/src/main.rs +++ b/rust/operator-binary/src/main.rs @@ -5,12 +5,13 @@ use std::sync::Arc; use clap::Parser; use connect::crd::{CONNECT_FULL_CONTROLLER_NAME, SparkConnectServer}; -use futures::{StreamExt, pin_mut, select}; +use futures::{FutureExt, StreamExt}; use history::history_controller; use product_config::ProductConfigManager; use stackable_operator::{ YamlSchema, - cli::{Command, ProductOperatorRun}, + cli::{Command, RunArguments}, + eos::EndOfSupportChecker, k8s_openapi::api::{ apps::v1::StatefulSet, core::v1::{ConfigMap, Pod, Service}, @@ -82,18 +83,19 @@ async fn main() -> anyhow::Result<()> { SparkConnectServer::merged_crd(SparkConnectServerVersion::V1Alpha1)? .print_yaml_schema(built_info::PKG_VERSION, SerializeOptions::default())?; } - Command::Run(ProductOperatorRun { - product_config, - watch_namespace, + Command::Run(RunArguments { operator_environment: _, - telemetry, - cluster_info, + watch_namespace, + product_config, + maintenance, + common, }) => { // NOTE (@NickLarsenNZ): Before stackable-telemetry was used: // - The console log level was set by `SPARK_K8S_OPERATOR_LOG`, and is now `CONSOLE_LOG` (when using Tracing::pre_configured). // - The file log level was set by `SPARK_K8S_OPERATOR_LOG`, and is now set via `FILE_LOG` (when using Tracing::pre_configured). // - The file log directory was set by `SPARK_K8S_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, @@ -105,9 +107,14 @@ async fn main() -> anyhow::Result<()> { description = built_info::PKG_DESCRIPTION ); + let eos_checker = + EndOfSupportChecker::new(built_info::BUILT_TIME_UTC, maintenance.end_of_support)? + .run() + .map(anyhow::Ok); + let client = stackable_operator::client::initialize_operator( Some(OPERATOR_NAME.to_string()), - &cluster_info, + &common.cluster_info, ) .await?; @@ -154,7 +161,8 @@ async fn main() -> anyhow::Result<()> { .await; } }, - ); + ) + .map(anyhow::Ok); let pod_driver_event_recorder = Arc::new(Recorder::new( client.as_kube_client(), @@ -195,7 +203,7 @@ async fn main() -> anyhow::Result<()> { .await; } }, - ); + ).map(anyhow::Ok); // Create new object because Ctx cannot be cloned let ctx = Ctx { @@ -258,7 +266,8 @@ async fn main() -> anyhow::Result<()> { .await; } }, - ); + ) + .map(anyhow::Ok); // ============================== // Create new object because Ctx cannot be cloned @@ -322,22 +331,17 @@ async fn main() -> anyhow::Result<()> { .await; } }, - ); + ) + .map(anyhow::Ok); - // - pin_mut!( - app_controller, + // kube-runtime's Controller will tokio::spawn each reconciliation, so this only concerns the internal watch machinery + futures::try_join!( pod_driver_controller, history_controller, - connect_controller - ); - // kube-runtime's Controller will tokio::spawn each reconciliation, so this only concerns the internal watch machinery - select! { - r1 = app_controller => r1, - r2 = pod_driver_controller => r2, - r3 = history_controller => r3, - r4 = connect_controller => r4, - }; + connect_controller, + app_controller, + eos_checker + )?; } } Ok(())