@@ -2,12 +2,11 @@ use snafu::{ResultExt, Snafu};
22use stackable_operator:: {
33 k8s_openapi:: api:: core:: v1:: ResourceRequirements ,
44 memory:: { BinaryMultiple , MemoryQuantity } ,
5- role_utils :: JvmArgumentOverrides ,
5+ v2 :: jvm_argument_overrides :: JvmArgumentOverrides ,
66} ;
77
88use crate :: {
9- controller:: build:: properties:: ConfigFileName ,
10- crd:: { HdfsNodeRole , v1alpha1} ,
9+ controller:: build:: properties:: ConfigFileName , crd:: HdfsNodeRole ,
1110 security:: kerberos:: KERBEROS_CONTAINER_PATH ,
1211} ;
1312
@@ -20,9 +19,6 @@ pub enum Error {
2019 source : stackable_operator:: memory:: Error ,
2120 role : String ,
2221 } ,
23-
24- #[ snafu( display( "failed to merge jvm argument overrides" ) ) ]
25- MergeJvmArgumentOverrides { source : crate :: crd:: Error } ,
2622}
2723
2824// All init or sidecar containers must have access to the following settings.
@@ -51,9 +47,8 @@ pub fn construct_global_jvm_args(kerberos_enabled: bool) -> String {
5147}
5248
5349pub fn construct_role_specific_jvm_args (
54- hdfs : & v1alpha1:: HdfsCluster ,
5550 hdfs_role : & HdfsNodeRole ,
56- role_group : & str ,
51+ jvm_argument_overrides : & JvmArgumentOverrides ,
5752 kerberos_enabled : bool ,
5853 resources : Option < & ResourceRequirements > ,
5954 config_dir : & str ,
@@ -91,21 +86,20 @@ pub fn construct_role_specific_jvm_args(
9186 ) ) ;
9287 }
9388
94- let operator_generated = JvmArgumentOverrides :: new_with_only_additions ( jvm_args) ;
95- let merged_jvm_args = hdfs
96- . get_merged_jvm_argument_overrides ( hdfs_role, role_group, & operator_generated)
97- . context ( MergeJvmArgumentOverridesSnafu ) ?;
89+ let merged_jvm_args = jvm_argument_overrides. apply_to ( jvm_args) ;
9890
99- Ok ( merged_jvm_args
100- . effective_jvm_config_after_merging ( )
101- . join ( " " ) )
91+ Ok ( merged_jvm_args. join ( " " ) )
10292}
10393
10494#[ cfg( test) ]
10595mod tests {
10696
10797 use super :: * ;
108- use crate :: { container:: ContainerConfig , crd:: constants:: DEFAULT_NAME_NODE_METRICS_PORT } ;
98+ use crate :: {
99+ container:: ContainerConfig ,
100+ crd:: constants:: DEFAULT_NAME_NODE_METRICS_PORT ,
101+ test_support:: { deserialize_and_validate_cluster, role_group_config} ,
102+ } ;
109103
110104 #[ test]
111105 fn test_global_jvm_args ( ) {
@@ -123,6 +117,8 @@ mod tests {
123117 kind: HdfsCluster
124118 metadata:
125119 name: hdfs
120+ namespace: test
121+ uid: 8047b73b-db0f-4281-811f-de59105ae6bf
126122 spec:
127123 image:
128124 productVersion: 3.4.2
@@ -151,6 +147,8 @@ mod tests {
151147 kind: HdfsCluster
152148 metadata:
153149 name: hdfs
150+ namespace: test
151+ uid: 8047b73b-db0f-4281-811f-de59105ae6bf
154152 spec:
155153 image:
156154 productVersion: 3.4.2
@@ -196,18 +194,18 @@ mod tests {
196194 }
197195
198196 fn construct_test_role_specific_jvm_args ( hdfs_cluster : & str , kerberos_enabled : bool ) -> String {
199- let hdfs: v1alpha1:: HdfsCluster =
200- serde_yaml:: from_str ( hdfs_cluster) . expect ( "illegal test input" ) ;
201-
202197 let role = HdfsNodeRole :: Name ;
203- let merged_config = role. merged_config ( & hdfs, "default" ) . unwrap ( ) ;
204- let container_config = ContainerConfig :: from ( role) ;
205- let resources = container_config. resources ( & merged_config) ;
198+
199+ let validated_cluster = deserialize_and_validate_cluster ( hdfs_cluster) ;
200+ let role_group_config = role_group_config ( & validated_cluster, & role, "default" ) ;
201+
202+ let resources = ContainerConfig :: from ( role) . resources ( & role_group_config. config ) ;
206203
207204 construct_role_specific_jvm_args (
208- & hdfs,
209205 & role,
210- "default" ,
206+ & role_group_config
207+ . product_specific_common_config
208+ . jvm_argument_overrides ,
211209 kerberos_enabled,
212210 resources. as_ref ( ) ,
213211 "/stackable/config" ,
0 commit comments