diff --git a/CHANGELOG.md b/CHANGELOG.md index c7ac5f6..a5f14d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,7 +10,12 @@ All notable changes to this project will be documented in this file. - `podOverrides` - `affinity` +### Fixed + +- Add log config error handling ([#121]). + [#112]: https://github.com/stackabletech/hello-world-operator/pull/112 +[#121]: https://github.com/stackabletech/hello-world-operator/pull/121 ## [24.7.0] - 2024-07-24 diff --git a/Cargo.lock b/Cargo.lock index 7d16a56..dba2af2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -146,7 +146,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -157,7 +157,7 @@ checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -329,7 +329,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -444,7 +444,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -455,7 +455,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -466,7 +466,7 @@ checksum = "5060bb0febb73fa907273f8a7ed17ab4bf831d585eac835b28ec24a1e2460956" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -673,7 +673,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -1187,7 +1187,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -1526,7 +1526,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -1557,7 +1557,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -1742,9 +1742,9 @@ dependencies = [ [[package]] name = "rstest" -version = "0.22.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b423f0e62bdd61734b67cd21ff50871dfaeb9cc74f869dcd6af974fbcb19936" +checksum = "0a2c585be59b6b5dd66a9d2084aa1d8bd52fbdb806eafdeffb52791147862035" dependencies = [ "futures 0.3.30", "futures-timer", @@ -1754,9 +1754,9 @@ dependencies = [ [[package]] name = "rstest_macros" -version = "0.22.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e1711e7d14f74b12a58411c542185ef7fb7f2e7f8ee6e2940a883628522b42" +checksum = "825ea780781b15345a146be27eaefb05085e337e869bff01b4306a4fd4a9ad5a" dependencies = [ "cfg-if", "glob", @@ -1766,7 +1766,7 @@ dependencies = [ "regex", "relative-path", "rustc_version", - "syn 2.0.77", + "syn 2.0.79", "unicode-ident", ] @@ -1896,7 +1896,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -1971,7 +1971,7 @@ checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -1982,7 +1982,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -2110,7 +2110,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -2154,8 +2154,8 @@ dependencies = [ [[package]] name = "stackable-operator" -version = "0.76.0" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.76.0#a7e70f174fb043a1766e0a80de95834cb4f7513d" +version = "0.78.0" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.78.0#8b0172ded942499845ebf647ef1b17ccfc7bdbb3" dependencies = [ "chrono", "clap", @@ -2165,6 +2165,7 @@ dependencies = [ "dockerfile-parser", "either", "futures 0.3.30", + "indexmap", "json-patch", "k8s-openapi", "kube", @@ -2191,12 +2192,12 @@ dependencies = [ [[package]] name = "stackable-operator-derive" version = "0.3.1" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.76.0#a7e70f174fb043a1766e0a80de95834cb4f7513d" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.78.0#8b0172ded942499845ebf647ef1b17ccfc7bdbb3" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -2224,7 +2225,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -2246,9 +2247,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.77" +version = "2.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" +checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" dependencies = [ "proc-macro2", "quote", @@ -2272,7 +2273,7 @@ checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -2379,7 +2380,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -2515,7 +2516,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -2718,7 +2719,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", "wasm-bindgen-shared", ] @@ -2740,7 +2741,7 @@ checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2907,7 +2908,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] diff --git a/Cargo.nix b/Cargo.nix index e9cba6a..1ffd202 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -450,7 +450,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.79"; features = [ "full" "visit-mut" ]; } ]; @@ -477,7 +477,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.79"; usesDefaultFeatures = false; features = [ "full" "parsing" "printing" "proc-macro" "visit-mut" ]; } @@ -984,7 +984,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.79"; features = [ "full" ]; } ]; @@ -1288,7 +1288,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.79"; features = [ "full" "extra-traits" ]; } ]; @@ -1318,7 +1318,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.79"; } ]; @@ -1344,7 +1344,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.79"; features = [ "full" "visit-mut" ]; } ]; @@ -1889,7 +1889,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.79"; features = [ "full" ]; } ]; @@ -3689,7 +3689,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.79"; features = [ "extra-traits" ]; } ]; @@ -4784,7 +4784,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.79"; } ]; features = { @@ -4857,7 +4857,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.79"; features = [ "full" "visit-mut" ]; } ]; @@ -5417,9 +5417,9 @@ rec { }; "rstest" = rec { crateName = "rstest"; - version = "0.22.0"; + version = "0.23.0"; edition = "2021"; - sha256 = "0dlrn6y4z5xgsvf6ky3lrjwsxpvi13sizlkwnqs1gmmxc873yhkv"; + sha256 = "0d90hr3i2yajzgpzvsh6p2yjzmcb3nm8884xdbb5sswvwmdmhb0a"; authors = [ "Michele d'Amico " ]; @@ -5455,9 +5455,9 @@ rec { }; "rstest_macros" = rec { crateName = "rstest_macros"; - version = "0.22.0"; + version = "0.23.0"; edition = "2021"; - sha256 = "0hiba8l3d20ajkifd3kz5rzzpxsy311ca4c4ll94pxqlglg73qf5"; + sha256 = "0nmdm7a4ysihnh0zz6w6gqrmw205zfp7xqkb2id3858vg20afpl2"; procMacro = true; authors = [ "Michele d'Amico " @@ -5494,7 +5494,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.79"; features = [ "full" "parsing" "extra-traits" "visit" "visit-mut" ]; } { @@ -5889,7 +5889,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.79"; features = [ "extra-traits" ]; } ]; @@ -6107,7 +6107,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.79"; usesDefaultFeatures = false; features = [ "clone-impls" "derive" "parsing" "printing" "proc-macro" ]; } @@ -6139,7 +6139,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.79"; usesDefaultFeatures = false; features = [ "clone-impls" "derive" "parsing" "printing" ]; } @@ -6510,7 +6510,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.79"; features = [ "full" ]; } ]; @@ -6667,13 +6667,13 @@ rec { }; "stackable-operator" = rec { crateName = "stackable-operator"; - version = "0.76.0"; + version = "0.78.0"; edition = "2021"; workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "a7e70f174fb043a1766e0a80de95834cb4f7513d"; - sha256 = "1cyyyn6lizd0wdq79fc9fjnksnzx073ipydxmh7llciq5si5dnq6"; + rev = "8b0172ded942499845ebf647ef1b17ccfc7bdbb3"; + sha256 = "0nd05xk84s4jdd635ivvwp0lxqghxdxz45cf40xyx07k9bqq4fzg"; }; libName = "stackable_operator"; authors = [ @@ -6714,6 +6714,10 @@ rec { name = "futures"; packageId = "futures 0.3.30"; } + { + name = "indexmap"; + packageId = "indexmap"; + } { name = "json-patch"; packageId = "json-patch"; @@ -6822,8 +6826,8 @@ rec { workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "a7e70f174fb043a1766e0a80de95834cb4f7513d"; - sha256 = "1cyyyn6lizd0wdq79fc9fjnksnzx073ipydxmh7llciq5si5dnq6"; + rev = "8b0172ded942499845ebf647ef1b17ccfc7bdbb3"; + sha256 = "0nd05xk84s4jdd635ivvwp0lxqghxdxz45cf40xyx07k9bqq4fzg"; }; procMacro = true; libName = "stackable_operator_derive"; @@ -6845,7 +6849,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.79"; } ]; @@ -6918,7 +6922,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.79"; features = [ "parsing" "extra-traits" ]; } ]; @@ -6971,11 +6975,11 @@ rec { }; resolvedDefaultFeatures = [ "clone-impls" "default" "derive" "extra-traits" "full" "parsing" "printing" "proc-macro" "quote" "visit" ]; }; - "syn 2.0.77" = rec { + "syn 2.0.79" = rec { crateName = "syn"; - version = "2.0.77"; + version = "2.0.79"; edition = "2021"; - sha256 = "1vbkwfp9ymmi0fsyyjsqfvnv7gm8vjgl4pzprbk7p3pxc7gvqdcz"; + sha256 = "147mk4sgigmvsb9l8qzj199ygf0fgb0bphwdsghn8205pz82q4w9"; authors = [ "David Tolnay " ]; @@ -7041,7 +7045,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.79"; } ]; @@ -7403,7 +7407,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.79"; features = [ "full" ]; } ]; @@ -7937,7 +7941,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.79"; usesDefaultFeatures = false; features = [ "full" "parsing" "printing" "visit-mut" "clone-impls" "extra-traits" "proc-macro" ]; } @@ -8575,7 +8579,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.79"; features = [ "full" ]; } { @@ -8634,7 +8638,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.79"; features = [ "visit" "full" ]; } { @@ -9490,7 +9494,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.79"; } ]; diff --git a/Cargo.toml b/Cargo.toml index e855e87..5191255 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,13 +17,13 @@ fnv = "1.0" futures = { version = "0.3", features = ["compat"] } pin-project = "1.1" product-config = { git = "https://github.com/stackabletech/product-config.git", tag = "0.7.0" } -rstest = "0.22" +rstest = "0.23" semver = "1.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" serde_yaml = "0.9" snafu = "0.8" -stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", tag = "stackable-operator-0.76.0" } +stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", tag = "stackable-operator-0.78.0" } strum = { version = "0.26", features = ["derive"] } tokio = { version = "1.40", features = ["full"] } tracing = "0.1" diff --git a/crate-hashes.json b/crate-hashes.json index 4ac79c7..51bd7d5 100644 --- a/crate-hashes.json +++ b/crate-hashes.json @@ -1,5 +1,5 @@ { - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.76.0#stackable-operator-derive@0.3.1": "1cyyyn6lizd0wdq79fc9fjnksnzx073ipydxmh7llciq5si5dnq6", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.76.0#stackable-operator@0.76.0": "1cyyyn6lizd0wdq79fc9fjnksnzx073ipydxmh7llciq5si5dnq6", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.78.0#stackable-operator-derive@0.3.1": "0nd05xk84s4jdd635ivvwp0lxqghxdxz45cf40xyx07k9bqq4fzg", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.78.0#stackable-operator@0.78.0": "0nd05xk84s4jdd635ivvwp0lxqghxdxz45cf40xyx07k9bqq4fzg", "git+https://github.com/stackabletech/product-config.git?tag=0.7.0#product-config@0.7.0": "0gjsm80g6r75pm3824dcyiz4ysq1ka4c1if6k1mjm9cnd5ym0gny" } \ No newline at end of file diff --git a/rust/operator-binary/src/controller.rs b/rust/operator-binary/src/controller.rs index e756cef..f1397c6 100644 --- a/rust/operator-binary/src/controller.rs +++ b/rust/operator-binary/src/controller.rs @@ -12,6 +12,7 @@ use product_config::{ use snafu::{OptionExt, ResultExt, Snafu}; use stackable_operator::{ builder::{ + self, configmap::ConfigMapBuilder, meta::ObjectMetaBuilder, pod::{container::ContainerBuilder, resources::ResourceRequirementsBuilder, PodBuilder}, @@ -36,7 +37,9 @@ use stackable_operator::{ product_config_utils::{transform_all_roles_to_config, validate_all_roles_and_groups_config}, product_logging::{ self, - framework::{create_vector_shutdown_file_command, remove_vector_shutdown_file_command}, + framework::{ + create_vector_shutdown_file_command, remove_vector_shutdown_file_command, LoggingError, + }, spec::{ ConfigMapLogConfig, ContainerLogConfig, ContainerLogConfigChoice, CustomContainerLogConfig, @@ -81,92 +84,115 @@ pub struct Ctx { pub enum Error { #[snafu(display("internal operator failure"))] InternalOperatorFailure { source: crate::crd::Error }, + #[snafu(display("object defines no namespace"))] ObjectHasNoNamespace, + #[snafu(display("object defines no hello role"))] NoServerRole, + #[snafu(display("failed to calculate global service name"))] GlobalServiceNameNotFound, + #[snafu(display("failed to apply global Service"))] ApplyRoleService { source: stackable_operator::cluster_resources::Error, }, + #[snafu(display("failed to apply Service for {rolegroup}"))] ApplyRoleGroupService { source: stackable_operator::cluster_resources::Error, rolegroup: RoleGroupRef, }, + #[snafu(display("failed to format runtime properties"))] PropertiesWriteError { source: product_config::writer::PropertiesWriterError, }, + #[snafu(display("failed to build ConfigMap for {rolegroup}"))] BuildRoleGroupConfig { source: stackable_operator::builder::configmap::Error, rolegroup: RoleGroupRef, }, + #[snafu(display("failed to apply ConfigMap for {rolegroup}"))] ApplyRoleGroupConfig { source: stackable_operator::cluster_resources::Error, rolegroup: RoleGroupRef, }, + #[snafu(display("failed to apply StatefulSet for {rolegroup}"))] ApplyRoleGroupStatefulSet { source: stackable_operator::cluster_resources::Error, rolegroup: RoleGroupRef, }, + #[snafu(display("failed to generate product config"))] GenerateProductConfig { source: stackable_operator::product_config_utils::Error, }, + #[snafu(display("invalid product config"))] InvalidProductConfig { source: stackable_operator::product_config_utils::Error, }, + #[snafu(display("object is missing metadata to build owner reference"))] ObjectMissingMetadataForOwnerRef { source: stackable_operator::builder::meta::Error, }, + #[snafu(display("failed to update status"))] ApplyStatus { source: stackable_operator::client::Error, }, + #[snafu(display("failed to resolve and merge resource config for role and role group"))] FailedToResolveResourceConfig { source: crate::crd::Error }, + #[snafu(display("failed to create hello container [{name}]"))] FailedToCreateHelloContainer { source: stackable_operator::builder::pod::container::Error, name: String, }, + #[snafu(display("failed to create cluster resources"))] CreateClusterResources { source: stackable_operator::cluster_resources::Error, }, + #[snafu(display("failed to delete orphaned resources"))] DeleteOrphanedResources { source: stackable_operator::cluster_resources::Error, }, + #[snafu(display("failed to resolve the Vector aggregator address"))] ResolveVectorAggregatorAddress { source: crate::product_logging::Error, }, + #[snafu(display("failed to add the logging configuration to the ConfigMap [{cm_name}]"))] InvalidLoggingConfig { source: crate::product_logging::Error, cm_name: String, }, + #[snafu(display("failed to patch service account"))] ApplyServiceAccount { source: stackable_operator::cluster_resources::Error, }, + #[snafu(display("failed to patch role binding"))] ApplyRoleBinding { source: stackable_operator::cluster_resources::Error, }, + #[snafu(display("failed to build RBAC resources"))] BuildRbacResources { source: stackable_operator::commons::rbac::Error, }, + #[snafu(display( "failed to serialize [{JVM_SECURITY_PROPERTIES}] for group {}", rolegroup @@ -175,10 +201,12 @@ pub enum Error { source: product_config::writer::PropertiesWriterError, rolegroup: String, }, + #[snafu(display("failed to create PodDisruptionBudget"))] FailedToCreatePdb { source: crate::operations::pdb::Error, }, + #[snafu(display("failed to configure graceful shutdown"))] GracefulShutdown { source: crate::operations::graceful_shutdown::Error, @@ -199,6 +227,17 @@ pub enum Error { source: stackable_operator::kvp::KeyValuePairError, }, + + #[snafu(display("failed to configure logging"))] + ConfigureLogging { source: LoggingError }, + + #[snafu(display("failed to add needed volume"))] + AddVolume { source: builder::pod::Error }, + + #[snafu(display("failed to add needed volumeMount"))] + AddVolumeMount { + source: builder::pod::container::Error, + }, } type Result = std::result::Result; @@ -594,11 +633,14 @@ fn build_server_rolegroup_statefulset( .args(vec![command.join("\n")]) .image_from_product_image(resolved_product_image) .add_volume_mount(STACKABLE_CONFIG_DIR_NAME, STACKABLE_CONFIG_DIR) + .context(AddVolumeMountSnafu)? .add_volume_mount(STACKABLE_LOG_DIR_NAME, STACKABLE_LOG_DIR) + .context(AddVolumeMountSnafu)? .add_volume_mount( STACKABLE_LOG_CONFIG_MOUNT_DIR_NAME, STACKABLE_LOG_CONFIG_MOUNT_DIR, ) + .context(AddVolumeMountSnafu)? .add_container_port(HTTP_PORT_NAME, HTTP_PORT.into()) .resources(merged_config.resources.clone().into()) .readiness_probe(Probe { @@ -647,6 +689,7 @@ fn build_server_rolegroup_statefulset( }), ..Default::default() }) + .context(AddVolumeSnafu)? .add_volume(Volume { name: STACKABLE_LOG_DIR_NAME.to_string(), empty_dir: Some(EmptyDirVolumeSource { @@ -657,6 +700,7 @@ fn build_server_rolegroup_statefulset( }), ..Volume::default() }) + .context(AddVolumeSnafu)? .affinity(&merged_config.affinity) .service_account_name(sa_name); @@ -675,38 +719,45 @@ fn build_server_rolegroup_statefulset( })), }) = merged_config.logging.containers.get(&Container::Hello) { - pod_builder.add_volume(Volume { - name: STACKABLE_LOG_CONFIG_MOUNT_DIR_NAME.to_string(), - config_map: Some(ConfigMapVolumeSource { - name: config_map.into(), - ..ConfigMapVolumeSource::default() - }), - ..Volume::default() - }); + pod_builder + .add_volume(Volume { + name: STACKABLE_LOG_CONFIG_MOUNT_DIR_NAME.to_string(), + config_map: Some(ConfigMapVolumeSource { + name: config_map.into(), + ..ConfigMapVolumeSource::default() + }), + ..Volume::default() + }) + .context(AddVolumeSnafu)?; } else { - pod_builder.add_volume(Volume { - name: STACKABLE_LOG_CONFIG_MOUNT_DIR_NAME.to_string(), - config_map: Some(ConfigMapVolumeSource { - name: role_group_ref.object_name(), - ..ConfigMapVolumeSource::default() - }), - ..Volume::default() - }); + pod_builder + .add_volume(Volume { + name: STACKABLE_LOG_CONFIG_MOUNT_DIR_NAME.to_string(), + config_map: Some(ConfigMapVolumeSource { + name: role_group_ref.object_name(), + ..ConfigMapVolumeSource::default() + }), + ..Volume::default() + }) + .context(AddVolumeSnafu)?; } if merged_config.logging.enable_vector_agent { - pod_builder.add_container(product_logging::framework::vector_container( - resolved_product_image, - STACKABLE_CONFIG_DIR_NAME, - STACKABLE_LOG_DIR_NAME, - merged_config.logging.containers.get(&Container::Vector), - ResourceRequirementsBuilder::new() - .with_cpu_request("250m") - .with_cpu_limit("500m") - .with_memory_request("128Mi") - .with_memory_limit("128Mi") - .build(), - )); + pod_builder.add_container( + product_logging::framework::vector_container( + resolved_product_image, + STACKABLE_CONFIG_DIR_NAME, + STACKABLE_LOG_DIR_NAME, + merged_config.logging.containers.get(&Container::Vector), + ResourceRequirementsBuilder::new() + .with_cpu_request("250m") + .with_cpu_limit("500m") + .with_memory_request("128Mi") + .with_memory_limit("128Mi") + .build(), + ) + .context(ConfigureLoggingSnafu)?, + ); } let mut pod_template = pod_builder.build_template();