Skip to content

Commit e3a7cbf

Browse files
committed
refactor: use v2 JavaCommonConfig, delete local framework, move jvm.rs to controller/build
1 parent 70f457d commit e3a7cbf

22 files changed

Lines changed: 260 additions & 458 deletions

Cargo.lock

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

Cargo.nix

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

rust/operator-binary/src/controller/build.rs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,34 @@
22
//!
33
//! [`ValidatedCluster`]: crate::controller::ValidatedCluster
44
5+
use snafu::Snafu;
6+
7+
use crate::{crd::storage::NifiRepository, security::oidc};
8+
59
pub mod config_map;
610
pub mod git_sync;
11+
pub mod jvm;
712
pub mod properties;
813
pub mod proxy_hosts;
14+
15+
/// Errors that can occur while building the NiFi product configuration files.
16+
#[derive(Snafu, Debug)]
17+
#[snafu(visibility(pub(crate)))]
18+
pub enum Error {
19+
#[snafu(display("invalid JVM config"))]
20+
InvalidJVMConfig { source: jvm::Error },
21+
22+
#[snafu(display("failed to calculate storage quota for {repo} repository"))]
23+
CalculateStorageQuota {
24+
source: stackable_operator::memory::Error,
25+
repo: NifiRepository,
26+
},
27+
28+
#[snafu(display("failed to generate OIDC config"))]
29+
GenerateOidcConfig { source: oidc::Error },
30+
31+
#[snafu(display(
32+
"NiFi 1.x requires ZooKeeper (hint: upgrade to NiFi 2.x or set .spec.clusterConfig.zookeeperConfigMapName)"
33+
))]
34+
Nifi1RequiresZookeeper,
35+
}

rust/operator-binary/src/controller/build/config_map.rs

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,14 @@ pub enum Error {
3535

3636
#[snafu(display("failed to build bootstrap.conf"))]
3737
BootstrapConfig {
38-
#[snafu(source(from(crate::config::Error, Box::new)))]
39-
source: Box<crate::config::Error>,
38+
#[snafu(source(from(crate::controller::build::Error, Box::new)))]
39+
source: Box<crate::controller::build::Error>,
4040
},
4141

4242
#[snafu(display("failed to prepare NiFi configuration for rolegroup {rolegroup}"))]
4343
BuildNifiProperties {
44-
#[snafu(source(from(crate::config::Error, Box::new)))]
45-
source: Box<crate::config::Error>,
44+
#[snafu(source(from(crate::controller::build::Error, Box::new)))]
45+
source: Box<crate::controller::build::Error>,
4646
rolegroup: RoleGroupRef<v1alpha1::NifiCluster>,
4747
},
4848

@@ -94,9 +94,6 @@ pub fn build_rolegroup_config_map(
9494
role_group: rolegroup.role_group.clone(),
9595
})?;
9696

97-
// The raw role spec is only needed for JVM argument merging in `bootstrap_conf`.
98-
let role = &cluster.nodes;
99-
10097
let proxy_hosts = proxy_hosts::compute_proxy_hosts(cluster, cluster_info);
10198
let git_sync_resources =
10299
git_sync::build_git_sync_resources(cluster, rg).context(BuildGitSyncResourcesSnafu)?;
@@ -115,13 +112,8 @@ pub fn build_rolegroup_config_map(
115112
)
116113
.add_data(
117114
ConfigFileName::BootstrapConf.to_string(),
118-
bootstrap_conf::build(
119-
rg,
120-
role,
121-
&rolegroup.role_group,
122-
Some(&cluster.cluster_config.authorization),
123-
)
124-
.context(BootstrapConfigSnafu)?,
115+
bootstrap_conf::build(rg, Some(&cluster.cluster_config.authorization))
116+
.context(BootstrapConfigSnafu)?,
125117
)
126118
.add_data(
127119
ConfigFileName::NifiProperties.to_string(),

rust/operator-binary/src/controller/build/git_sync.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use snafu::{ResultExt, Snafu};
44
use stackable_operator::{crd::git_sync, k8s_openapi::api::core::v1::EnvVar};
55

66
use crate::{
7-
controller::{ValidatedCluster, validate::NifiRoleGroupConfig},
7+
controller::{ValidatedCluster, ValidatedRoleGroupConfig},
88
crd::Container,
99
nifi_controller::LOG_VOLUME_NAME,
1010
};
@@ -22,7 +22,7 @@ type Result<T, E = Error> = std::result::Result<T, E>;
2222
/// rather than once for the whole cluster.
2323
pub fn build_git_sync_resources(
2424
cluster: &ValidatedCluster,
25-
rg: &NifiRoleGroupConfig,
25+
rg: &ValidatedRoleGroupConfig,
2626
) -> Result<git_sync::v1alpha2::GitSyncResources> {
2727
let env_vars: Vec<EnvVar> = rg.env_overrides.clone().into();
2828
git_sync::v1alpha2::GitSyncResources::new(

rust/operator-binary/src/config/jvm.rs renamed to rust/operator-binary/src/controller/build/jvm.rs

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
1+
//! Builder for the NiFi JVM arguments used in `bootstrap.conf`.
2+
13
use snafu::{OptionExt, ResultExt, Snafu};
24
use stackable_operator::{
35
memory::{BinaryMultiple, MemoryQuantity},
4-
role_utils::{self, JvmArgumentOverrides},
6+
v2::jvm_argument_overrides::JvmArgumentOverrides,
57
};
68

79
use crate::{
8-
config::{JVM_SECURITY_PROPERTIES_FILE, NIFI_CONFIG_DIRECTORY},
9-
crd::{NifiConfig, NifiRoleType},
10+
crd::{
11+
NifiConfig,
12+
constants::{JVM_SECURITY_PROPERTIES_FILE, NIFI_CONFIG_DIRECTORY},
13+
},
1014
security::{
1115
authentication::{STACKABLE_SERVER_TLS_DIR, STACKABLE_TLS_STORE_PASSWORD},
1216
authorization::ResolvedNifiAuthorizationConfig,
@@ -25,18 +29,19 @@ pub enum Error {
2529
InvalidMemoryConfig {
2630
source: stackable_operator::memory::Error,
2731
},
28-
29-
#[snafu(display("failed to merge jvm argument overrides"))]
30-
MergeJvmArgumentOverrides { source: role_utils::Error },
3132
}
3233

33-
/// Build the merged JVM argument overrides used in the NiFi bootstrap.conf
34+
/// Build the effective JVM arguments for the NiFi bootstrap.conf.
35+
///
36+
/// The operator-generated arguments below form the base that the role <- role-group merged
37+
/// user overrides (`merged_jvm_argument_overrides`, produced by
38+
/// [`with_validated_config`](stackable_operator::v2::role_utils::with_validated_config)) are
39+
/// applied on top of.
3440
pub fn build_merged_jvm_config(
3541
merged_config: &NifiConfig,
36-
role: &NifiRoleType,
37-
role_group: &str,
42+
merged_jvm_argument_overrides: &JvmArgumentOverrides,
3843
authorization_config: Option<&ResolvedNifiAuthorizationConfig>,
39-
) -> Result<JvmArgumentOverrides, Error> {
44+
) -> Result<Vec<String>, Error> {
4045
let heap_size = MemoryQuantity::try_from(
4146
merged_config
4247
.resources
@@ -52,7 +57,7 @@ pub fn build_merged_jvm_config(
5257
.format_for_java()
5358
.context(InvalidMemoryConfigSnafu)?;
5459

55-
let mut jvm_args = vec![
60+
let mut operator_generated = vec![
5661
// Heap settings
5762
format!("-Xmx{java_heap}"),
5863
format!("-Xms{java_heap}"),
@@ -95,17 +100,15 @@ pub fn build_merged_jvm_config(
95100
// OPA Java SDK.
96101
if let Some(authz_config) = authorization_config {
97102
if authz_config.has_opa_tls() {
98-
jvm_args.push(format!(
103+
operator_generated.push(format!(
99104
"-Djavax.net.ssl.trustStore={STACKABLE_SERVER_TLS_DIR}/truststore.p12"
100105
));
101-
jvm_args.push(format!(
106+
operator_generated.push(format!(
102107
"-Djavax.net.ssl.trustStorePassword={STACKABLE_TLS_STORE_PASSWORD}"
103108
));
104-
jvm_args.push("-Djavax.net.ssl.trustStoreType=pkcs12".to_owned());
109+
operator_generated.push("-Djavax.net.ssl.trustStoreType=pkcs12".to_owned());
105110
}
106111
}
107112

108-
let operator_generated = JvmArgumentOverrides::new_with_only_additions(jvm_args);
109-
role.get_merged_jvm_argument_overrides(role_group, &operator_generated)
110-
.context(MergeJvmArgumentOverridesSnafu)
113+
Ok(merged_jvm_argument_overrides.apply_to(operator_generated))
111114
}

0 commit comments

Comments
 (0)