1- use std:: { collections:: BTreeMap , str :: FromStr , sync:: Arc } ;
1+ use std:: { collections:: BTreeMap , sync:: Arc } ;
22
33use const_format:: concatcp;
4- use snafu:: { OptionExt , ResultExt , Snafu } ;
4+ use snafu:: { ResultExt , Snafu } ;
55use stackable_operator:: {
66 builder:: {
7- configmap:: ConfigMapBuilder ,
87 meta:: ObjectMetaBuilder ,
98 pod:: { PodBuilder , security:: PodSecurityContextBuilder } ,
109 } ,
@@ -17,7 +16,7 @@ use stackable_operator::{
1716 DeepMerge ,
1817 api:: {
1918 apps:: v1:: { StatefulSet , StatefulSetSpec } ,
20- core:: v1:: { ConfigMap , ServiceAccount } ,
19+ core:: v1:: ServiceAccount ,
2120 } ,
2221 apimachinery:: pkg:: apis:: meta:: v1:: LabelSelector ,
2322 } ,
@@ -44,12 +43,7 @@ use strum::{EnumDiscriminants, IntoEnumIterator, IntoStaticStr};
4443
4544use crate :: {
4645 OPERATOR_NAME , build_recommended_labels,
47- config:: writer:: PropertiesWriterError ,
4846 container:: { self , ContainerConfig } ,
49- controller:: build:: properties:: {
50- ConfigFileName , core_site, hadoop_policy, hdfs_site, security_properties, ssl_client,
51- ssl_server,
52- } ,
5347 crd:: {
5448 AnyNodeConfig , HdfsClusterStatus , HdfsNodeRole , HdfsPodRef , UpgradeState ,
5549 UpgradeStateError , constants:: * , v1alpha1,
@@ -60,7 +54,6 @@ use crate::{
6054 graceful_shutdown:: { self , add_graceful_shutdown_config} ,
6155 pdb:: add_pdbs,
6256 } ,
63- product_logging:: extend_role_group_config_map,
6457 security:: opa:: HdfsOpaConfig ,
6558 service:: { self , rolegroup_headless_service, rolegroup_metrics_service} ,
6659} ;
@@ -144,16 +137,9 @@ pub enum Error {
144137 obj_ref : ObjectRef < v1alpha1:: HdfsCluster > ,
145138 } ,
146139
147- #[ snafu( display( "object has no name" ) ) ]
148- ObjectHasNoName {
149- obj_ref : ObjectRef < v1alpha1:: HdfsCluster > ,
150- } ,
151-
152- #[ snafu( display( "cannot build config map for role {role:?} and role group {role_group:?}" ) ) ]
140+ #[ snafu( display( "failed to build the role group ConfigMap" ) ) ]
153141 BuildRoleGroupConfigMap {
154- source : stackable_operator:: builder:: configmap:: Error ,
155- role : String ,
156- role_group : String ,
142+ source : crate :: controller:: build:: config_map:: Error ,
157143 } ,
158144
159145 #[ snafu( display( "cannot collect discovery configuration" ) ) ]
@@ -185,12 +171,6 @@ pub enum Error {
185171 #[ snafu( display( "failed to create pod references" ) ) ]
186172 CreatePodReferences { source : crate :: crd:: Error } ,
187173
188- #[ snafu( display( "failed to add the logging configuration to the ConfigMap {cm_name:?}" ) ) ]
189- InvalidLoggingConfig {
190- source : crate :: product_logging:: Error ,
191- cm_name : String ,
192- } ,
193-
194174 #[ snafu( display( "failed to create cluster event" ) ) ]
195175 FailedToCreateClusterEvent { source : crate :: event:: Error } ,
196176
@@ -212,18 +192,6 @@ pub enum Error {
212192 source : stackable_operator:: commons:: rbac:: Error ,
213193 } ,
214194
215- #[ snafu( display( "failed to serialize {} for {rolegroup}" , ConfigFileName :: Security ) ) ]
216- JvmSecurityProperties {
217- source : PropertiesWriterError ,
218- rolegroup : String ,
219- } ,
220-
221- #[ snafu( display( "could not parse HDFS role [{role}]" ) ) ]
222- UnidentifiedHdfsRole {
223- source : strum:: ParseError ,
224- role : String ,
225- } ,
226-
227195 #[ snafu( display( "failed to configure graceful shutdown" ) ) ]
228196 GracefulShutdown { source : graceful_shutdown:: Error } ,
229197
@@ -241,9 +209,6 @@ pub enum Error {
241209 source : stackable_operator:: builder:: meta:: Error ,
242210 } ,
243211
244- #[ snafu( display( "failed to build core-site.xml" ) ) ]
245- BuildCoreSiteXml { source : core_site:: Error } ,
246-
247212 #[ snafu( display( "HdfsCluster object is invalid" ) ) ]
248213 InvalidHdfsCluster {
249214 source : error_boundary:: InvalidObject ,
@@ -402,17 +367,16 @@ pub async fn reconcile_hdfs(
402367 ) )
403368 . context ( ObjectMetaSnafu ) ?;
404369
405- let rg_configmap = rolegroup_config_map (
370+ let rg_configmap = crate :: controller:: build:: config_map:: build_rolegroup_config_map (
371+ & validated,
406372 hdfs,
407373 & client. kubernetes_cluster_info ,
408374 metadata,
409375 & rolegroup_ref,
410- & validated_rg_config. config_overrides ,
411376 & namenode_podrefs,
412377 & journalnode_podrefs,
413- merged_config,
414- & validated. hdfs_opa_config ,
415- ) ?;
378+ )
379+ . context ( BuildRoleGroupConfigMapSnafu ) ?;
416380
417381 let rg_statefulset = rolegroup_statefulset (
418382 hdfs,
@@ -564,93 +528,6 @@ pub async fn reconcile_hdfs(
564528 Ok ( Action :: await_change ( ) )
565529}
566530
567- #[ allow( clippy:: too_many_arguments) ]
568- fn rolegroup_config_map (
569- hdfs : & v1alpha1:: HdfsCluster ,
570- cluster_info : & KubernetesClusterInfo ,
571- metadata : & ObjectMetaBuilder ,
572- rolegroup_ref : & RoleGroupRef < v1alpha1:: HdfsCluster > ,
573- config_overrides : & v1alpha1:: HdfsConfigOverrides ,
574- namenode_podrefs : & [ HdfsPodRef ] ,
575- journalnode_podrefs : & [ HdfsPodRef ] ,
576- merged_config : & AnyNodeConfig ,
577- hdfs_opa_config : & Option < HdfsOpaConfig > ,
578- ) -> HdfsOperatorResult < ConfigMap > {
579- tracing:: info!( "Setting up ConfigMap for {:?}" , rolegroup_ref) ;
580-
581- let role = HdfsNodeRole :: from_str ( & rolegroup_ref. role ) . with_context ( |_| {
582- UnidentifiedHdfsRoleSnafu {
583- role : rolegroup_ref. role . clone ( ) ,
584- }
585- } ) ?;
586- let hdfs_name = hdfs
587- . metadata
588- . name
589- . as_deref ( )
590- . with_context ( || ObjectHasNoNameSnafu {
591- obj_ref : ObjectRef :: from_obj ( hdfs) ,
592- } ) ?;
593-
594- let hdfs_site_xml = hdfs_site:: build (
595- hdfs,
596- hdfs_name,
597- cluster_info,
598- merged_config,
599- namenode_podrefs,
600- journalnode_podrefs,
601- hdfs_opa_config. as_ref ( ) ,
602- config_overrides. hdfs_site_xml . clone ( ) ,
603- ) ;
604- let core_site_xml = core_site:: build (
605- hdfs,
606- hdfs_name,
607- role,
608- cluster_info,
609- hdfs_opa_config. as_ref ( ) ,
610- config_overrides. core_site_xml . clone ( ) ,
611- )
612- . context ( BuildCoreSiteXmlSnafu ) ?;
613- let hadoop_policy_xml = hadoop_policy:: build ( config_overrides. hadoop_policy_xml . clone ( ) ) ;
614- let ssl_server_xml = ssl_server:: build (
615- hdfs. has_https_enabled ( ) ,
616- config_overrides. ssl_server_xml . clone ( ) ,
617- ) ;
618- let ssl_client_xml = ssl_client:: build (
619- hdfs. has_https_enabled ( ) ,
620- config_overrides. ssl_client_xml . clone ( ) ,
621- ) ;
622-
623- let mut builder = ConfigMapBuilder :: new ( ) ;
624- builder
625- . metadata ( metadata. build ( ) )
626- . add_data ( ConfigFileName :: CoreSite . to_string ( ) , core_site_xml)
627- . add_data ( ConfigFileName :: HdfsSite . to_string ( ) , hdfs_site_xml)
628- . add_data ( ConfigFileName :: HadoopPolicy . to_string ( ) , hadoop_policy_xml)
629- . add_data ( ConfigFileName :: SslServer . to_string ( ) , ssl_server_xml)
630- . add_data ( ConfigFileName :: SslClient . to_string ( ) , ssl_client_xml)
631- . add_data (
632- ConfigFileName :: Security . to_string ( ) ,
633- security_properties:: build ( config_overrides. security_properties . clone ( ) ) . with_context (
634- |_| JvmSecurityPropertiesSnafu {
635- rolegroup : rolegroup_ref. role_group . clone ( ) ,
636- } ,
637- ) ?,
638- ) ;
639-
640- extend_role_group_config_map ( rolegroup_ref, merged_config, & mut builder) . context (
641- InvalidLoggingConfigSnafu {
642- cm_name : rolegroup_ref. object_name ( ) ,
643- } ,
644- ) ?;
645-
646- builder
647- . build ( )
648- . with_context ( |_| BuildRoleGroupConfigMapSnafu {
649- role : rolegroup_ref. role . clone ( ) ,
650- role_group : rolegroup_ref. role_group . clone ( ) ,
651- } )
652- }
653-
654531#[ allow( clippy:: too_many_arguments) ]
655532fn rolegroup_statefulset (
656533 hdfs : & v1alpha1:: HdfsCluster ,
0 commit comments