Skip to content

Commit 12428ef

Browse files
committed
chore: Update to stackable-operator 0.95.0
1 parent 0c39850 commit 12428ef

File tree

10 files changed

+308
-202
lines changed

10 files changed

+308
-202
lines changed

Cargo.lock

Lines changed: 229 additions & 154 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ repository = "https://github.com/stackabletech/zookeeper-operator"
1111

1212
[workspace.dependencies]
1313
product-config = { git = "https://github.com/stackabletech/product-config.git", tag = "0.7.0" }
14-
stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", features = ["telemetry", "versioned"], tag = "stackable-operator-0.94.0" }
14+
stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", features = ["telemetry", "versioned"], tag = "stackable-operator-0.95.0" }
1515

1616
anyhow = "1.0"
1717
built = { version = "0.8", features = ["chrono", "git2"] }
@@ -31,8 +31,8 @@ tokio = { version = "1.40", features = ["full"] }
3131
tokio-zookeeper = "0.4"
3232
tracing = "0.1"
3333

34-
#[patch."https://github.com/stackabletech/operator-rs"]
35-
# stackable-operator = { git = "https://github.com/stackabletech//operator-rs.git", branch = "main" }
34+
[patch."https://github.com/stackabletech/operator-rs"]
35+
stackable-operator = { git = "https://github.com/stackabletech//operator-rs.git", branch = "main" }
3636

3737
[patch.crates-io]
3838
# tokio-zookeeper = { path = "../tokio-zookeeper" }

rust/operator-binary/src/config/jvm.rs

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,9 @@ fn construct_jvm_args(
3333
zk: &ZookeeperCluster,
3434
role: &Role<ZookeeperConfigFragment, ZookeeperServerRoleConfig, JavaCommonConfig>,
3535
role_group: &str,
36+
product_version: &str,
3637
) -> Result<Vec<String>, Error> {
37-
let logging_framework = zk.logging_framework();
38+
let logging_framework = zk.logging_framework(product_version);
3839

3940
let jvm_args = vec![
4041
format!("-Djava.security.properties={STACKABLE_CONFIG_DIR}/{JVM_SECURITY_PROPERTIES_FILE}"),
@@ -67,8 +68,9 @@ pub fn construct_non_heap_jvm_args(
6768
zk: &ZookeeperCluster,
6869
role: &Role<ZookeeperConfigFragment, ZookeeperServerRoleConfig, JavaCommonConfig>,
6970
role_group: &str,
71+
product_version: &str,
7072
) -> Result<String, Error> {
71-
let mut jvm_args = construct_jvm_args(zk, role, role_group)?;
73+
let mut jvm_args = construct_jvm_args(zk, role, role_group, product_version)?;
7274
jvm_args.retain(|arg| !is_heap_jvm_argument(arg));
7375

7476
Ok(jvm_args.join(" "))
@@ -122,7 +124,13 @@ mod tests {
122124
replicas: 1
123125
"#;
124126
let (zookeeper, merged_config, role, rolegroup) = construct_boilerplate(input);
125-
let non_heap_jvm_args = construct_non_heap_jvm_args(&zookeeper, &role, &rolegroup).unwrap();
127+
let non_heap_jvm_args = construct_non_heap_jvm_args(
128+
&zookeeper,
129+
&role,
130+
&rolegroup,
131+
zookeeper.spec.image.product_version(),
132+
)
133+
.unwrap();
126134
let zk_server_heap_env = construct_zk_server_heap_env(&merged_config).unwrap();
127135

128136
assert_eq!(
@@ -167,7 +175,13 @@ mod tests {
167175
- -Dhttps.proxyPort=1234
168176
"#;
169177
let (zookeeper, merged_config, role, rolegroup) = construct_boilerplate(input);
170-
let non_heap_jvm_args = construct_non_heap_jvm_args(&zookeeper, &role, &rolegroup).unwrap();
178+
let non_heap_jvm_args = construct_non_heap_jvm_args(
179+
&zookeeper,
180+
&role,
181+
&rolegroup,
182+
zookeeper.spec.image.product_version(),
183+
)
184+
.unwrap();
171185
let zk_server_heap_env = construct_zk_server_heap_env(&merged_config).unwrap();
172186

173187
assert_eq!(

rust/operator-binary/src/crd/mod.rs

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -88,10 +88,6 @@ pub const DOCKER_IMAGE_BASE_NAME: &str = "zookeeper";
8888
const DEFAULT_SERVER_GRACEFUL_SHUTDOWN_TIMEOUT: Duration = Duration::from_minutes_unchecked(2);
8989
pub const DEFAULT_LISTENER_CLASS: &str = "cluster-internal";
9090

91-
mod built_info {
92-
pub const CARGO_PKG_VERSION: &str = env!("CARGO_PKG_VERSION");
93-
}
94-
9591
#[derive(Snafu, Debug)]
9692
pub enum Error {
9793
#[snafu(display("object has no namespace associated"))]
@@ -520,22 +516,14 @@ impl ZookeeperPodRef {
520516
}
521517

522518
impl v1alpha1::ZookeeperCluster {
523-
pub fn logging_framework(&self) -> LoggingFramework {
524-
let version = self
525-
.spec
526-
.image
527-
.resolve(
528-
DOCKER_IMAGE_BASE_NAME,
529-
crate::crd::built_info::CARGO_PKG_VERSION,
530-
)
531-
.product_version;
519+
pub fn logging_framework(&self, product_version: &str) -> LoggingFramework {
532520
let zookeeper_versions_with_log4j = [
533521
"1.", "2.", "3.0.", "3.1.", "3.2.", "3.3.", "3.4.", "3.5.", "3.6.", "3.7.",
534522
];
535523

536524
if zookeeper_versions_with_log4j
537525
.into_iter()
538-
.any(|prefix| version.starts_with(prefix))
526+
.any(|prefix| product_version.starts_with(prefix))
539527
{
540528
LoggingFramework::LOG4J
541529
} else {

rust/operator-binary/src/discovery.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ pub fn build_discovery_configmap(
104104
.with_recommended_labels(build_recommended_labels(
105105
owner,
106106
controller_name,
107-
&resolved_product_image.app_version_label,
107+
&resolved_product_image.app_version_label_value,
108108
&ZookeeperRole::Server.to_string(),
109109
"discovery",
110110
))

rust/operator-binary/src/listener.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ pub fn build_role_listener(
6262
.with_recommended_labels(build_recommended_labels(
6363
zk,
6464
ZK_CONTROLLER_NAME,
65-
&resolved_product_image.app_version_label,
65+
&resolved_product_image.app_version_label_value,
6666
&zk_role.to_string(),
6767
"none", // TODO (@NickLarsenNZ): update build_recommended_labels to have an optional role_group
6868
))

rust/operator-binary/src/main.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,15 +68,15 @@ async fn main() -> anyhow::Result<()> {
6868
Command::Run(ProductOperatorRun {
6969
product_config,
7070
watch_namespace,
71-
telemetry_arguments,
72-
cluster_info_opts,
71+
operator_environment: _,
72+
telemetry,
73+
cluster_info,
7374
}) => {
7475
// NOTE (@NickLarsenNZ): Before stackable-telemetry was used:
7576
// - The console log level was set by `ZOOKEEPER_OPERATOR_LOG`, and is now `CONSOLE_LOG` (when using Tracing::pre_configured).
7677
// - The file log level was set by `ZOOKEEPER_OPERATOR_LOG`, and is now set via `FILE_LOG` (when using Tracing::pre_configured).
7778
// - The file log directory was set by `ZOOKEEPER_OPERATOR_LOG_DIRECTORY`, and is now set by `ROLLING_LOGS_DIR` (or via `--rolling-logs <DIRECTORY>`).
78-
let _tracing_guard =
79-
Tracing::pre_configured(built_info::PKG_NAME, telemetry_arguments).init()?;
79+
let _tracing_guard = Tracing::pre_configured(built_info::PKG_NAME, telemetry).init()?;
8080

8181
tracing::info!(
8282
built_info.pkg_version = built_info::PKG_VERSION,
@@ -93,7 +93,7 @@ async fn main() -> anyhow::Result<()> {
9393
])?;
9494
let client = stackable_operator::client::initialize_operator(
9595
Some(OPERATOR_NAME.to_string()),
96-
&cluster_info_opts,
96+
&cluster_info,
9797
)
9898
.await?;
9999

rust/operator-binary/src/product_logging.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ pub fn extend_role_group_config_map(
4545
role: ZookeeperRole,
4646
rolegroup: &RoleGroupRef<v1alpha1::ZookeeperCluster>,
4747
cm_builder: &mut ConfigMapBuilder,
48+
product_version: &str,
4849
) -> Result<()> {
4950
let logging = zk
5051
.logging(&role, rolegroup)
@@ -54,7 +55,7 @@ pub fn extend_role_group_config_map(
5455
choice: Some(ContainerLogConfigChoice::Automatic(log_config)),
5556
}) = logging.containers.get(&v1alpha1::Container::Zookeeper)
5657
{
57-
match zk.logging_framework() {
58+
match zk.logging_framework(product_version) {
5859
LoggingFramework::LOG4J => {
5960
cm_builder.add_data(
6061
LOG4J_CONFIG_FILE,

rust/operator-binary/src/zk_controller.rs

Lines changed: 38 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,10 @@ use stackable_operator::{
2929
},
3030
},
3131
cluster_resources::{ClusterResourceApplyStrategy, ClusterResources},
32-
commons::{product_image_selection::ResolvedProductImage, rbac::build_rbac_resources},
32+
commons::{
33+
product_image_selection::{self, ResolvedProductImage},
34+
rbac::build_rbac_resources,
35+
},
3336
k8s_openapi::{
3437
DeepMerge,
3538
api::{
@@ -296,6 +299,11 @@ pub enum Error {
296299
BuildListenerPersistentVolume {
297300
source: stackable_operator::builder::pod::volume::ListenerOperatorVolumeSourceBuilderError,
298301
},
302+
303+
#[snafu(display("failed to resolve product image"))]
304+
ResolveProductImage {
305+
source: product_image_selection::Error,
306+
},
299307
}
300308

301309
impl ReconcilerError for Error {
@@ -346,6 +354,7 @@ impl ReconcilerError for Error {
346354
Error::ApplyGroupListener { .. } => None,
347355
Error::BuildListenerPersistentVolume { .. } => None,
348356
Error::ListenerConfiguration { .. } => None,
357+
Error::ResolveProductImage { .. } => None,
349358
}
350359
}
351360
}
@@ -364,7 +373,8 @@ pub async fn reconcile_zk(
364373
let resolved_product_image = zk
365374
.spec
366375
.image
367-
.resolve(DOCKER_IMAGE_BASE_NAME, crate::built_info::PKG_VERSION);
376+
.resolve(DOCKER_IMAGE_BASE_NAME, crate::built_info::PKG_VERSION)
377+
.context(ResolveProductImageSnafu)?;
368378

369379
let mut cluster_resources = ClusterResources::new(
370380
APP_NAME,
@@ -376,7 +386,7 @@ pub async fn reconcile_zk(
376386
.context(CreateClusterResourcesSnafu)?;
377387

378388
let validated_config = validate_all_roles_and_groups_config(
379-
&resolved_product_image.app_version_label,
389+
&resolved_product_image.product_version,
380390
&transform_all_roles_to_config(
381391
zk,
382392
[(
@@ -622,7 +632,7 @@ fn build_server_rolegroup_config_map(
622632
.with_recommended_labels(build_recommended_labels(
623633
zk,
624634
ZK_CONTROLLER_NAME,
625-
&resolved_product_image.app_version_label,
635+
&resolved_product_image.app_version_label_value,
626636
&rolegroup.role,
627637
&rolegroup.role_group,
628638
))
@@ -644,11 +654,16 @@ fn build_server_rolegroup_config_map(
644654
})?,
645655
);
646656

647-
extend_role_group_config_map(zk, role, rolegroup, &mut cm_builder).context(
648-
InvalidLoggingConfigSnafu {
649-
cm_name: rolegroup.object_name(),
650-
},
651-
)?;
657+
extend_role_group_config_map(
658+
zk,
659+
role,
660+
rolegroup,
661+
&mut cm_builder,
662+
&resolved_product_image.product_version,
663+
)
664+
.context(InvalidLoggingConfigSnafu {
665+
cm_name: rolegroup.object_name(),
666+
})?;
652667

653668
cm_builder
654669
.build()
@@ -675,7 +690,7 @@ fn build_server_rolegroup_headless_service(
675690
.with_recommended_labels(build_recommended_labels(
676691
zk,
677692
ZK_CONTROLLER_NAME,
678-
&resolved_product_image.app_version_label,
693+
&resolved_product_image.app_version_label_value,
679694
&rolegroup.role,
680695
&rolegroup.role_group,
681696
))
@@ -736,7 +751,7 @@ fn build_server_rolegroup_metrics_service(
736751
.with_recommended_labels(build_recommended_labels(
737752
zk,
738753
ZK_CONTROLLER_NAME,
739-
&resolved_product_image.app_version_label,
754+
&resolved_product_image.app_version_label_value,
740755
&rolegroup.role,
741756
&rolegroup.role_group,
742757
))
@@ -953,8 +968,13 @@ fn build_server_rolegroup_statefulset(
953968
)
954969
.add_env_var(
955970
"SERVER_JVMFLAGS",
956-
construct_non_heap_jvm_args(zk, role, &rolegroup_ref.role_group)
957-
.context(ConstructJvmArgumentsSnafu)?,
971+
construct_non_heap_jvm_args(
972+
zk,
973+
role,
974+
&rolegroup_ref.role_group,
975+
&resolved_product_image.product_version,
976+
)
977+
.context(ConstructJvmArgumentsSnafu)?,
958978
)
959979
.add_env_var(
960980
"CONTAINERDEBUG_LOG_DIRECTORY",
@@ -1006,7 +1026,7 @@ fn build_server_rolegroup_statefulset(
10061026
.with_recommended_labels(build_recommended_labels(
10071027
zk,
10081028
ZK_CONTROLLER_NAME,
1009-
&resolved_product_image.app_version_label,
1029+
&resolved_product_image.app_version_label_value,
10101030
&rolegroup_ref.role,
10111031
&rolegroup_ref.role_group,
10121032
))
@@ -1120,7 +1140,7 @@ fn build_server_rolegroup_statefulset(
11201140
.with_recommended_labels(build_recommended_labels(
11211141
zk,
11221142
ZK_CONTROLLER_NAME,
1123-
&resolved_product_image.app_version_label,
1143+
&resolved_product_image.app_version_label_value,
11241144
&rolegroup_ref.role,
11251145
&rolegroup_ref.role_group,
11261146
))
@@ -1275,10 +1295,11 @@ mod tests {
12751295
let resolved_product_image = zookeeper
12761296
.spec
12771297
.image
1278-
.resolve(DOCKER_IMAGE_BASE_NAME, "0.0.0-dev");
1298+
.resolve(DOCKER_IMAGE_BASE_NAME, "0.0.0-dev")
1299+
.expect("test resolved product image is always valid");
12791300

12801301
let validated_config = validate_all_roles_and_groups_config(
1281-
&resolved_product_image.app_version_label,
1302+
&resolved_product_image.product_version,
12821303
&transform_all_roles_to_config(
12831304
&zookeeper,
12841305
[(

rust/operator-binary/src/znode_controller.rs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use const_format::concatcp;
77
use snafu::{OptionExt, ResultExt, Snafu};
88
use stackable_operator::{
99
cluster_resources::{ClusterResourceApplyStrategy, ClusterResources},
10-
commons::product_image_selection::ResolvedProductImage,
10+
commons::product_image_selection::{self, ResolvedProductImage},
1111
crd::listener,
1212
k8s_openapi::api::core::v1::ConfigMap,
1313
kube::{
@@ -130,6 +130,11 @@ pub enum Error {
130130
source: stackable_operator::cluster_resources::Error,
131131
znode: ObjectRef<v1alpha1::ZookeeperZnode>,
132132
},
133+
134+
#[snafu(display("failed to resolve product image"))]
135+
ResolveProductImage {
136+
source: product_image_selection::Error,
137+
},
133138
}
134139
type Result<T, E = Error> = std::result::Result<T, E>;
135140

@@ -179,6 +184,7 @@ impl ReconcilerError for Error {
179184
Error::ObjectHasNoNamespace => None,
180185
Error::FailedToInitializeSecurityContext { .. } => None,
181186
Error::ZnodeMissingExpectedKeys { .. } => None,
187+
Error::ResolveProductImage { .. } => None,
182188
}
183189
}
184190
}
@@ -247,7 +253,8 @@ pub async fn reconcile_znode(
247253
let resolved_product_image = zk
248254
.spec
249255
.image
250-
.resolve(DOCKER_IMAGE_BASE_NAME, crate::built_info::PKG_VERSION);
256+
.resolve(DOCKER_IMAGE_BASE_NAME, crate::built_info::PKG_VERSION)
257+
.context(ResolveProductImageSnafu)?;
251258
reconcile_apply(client, &znode, Ok(zk), &znode_path, &resolved_product_image)
252259
.await
253260
}

0 commit comments

Comments
 (0)