44
55use std:: sync:: Arc ;
66
7+ use anyhow:: anyhow;
78use clap:: Parser ;
8- use futures:: { FutureExt , StreamExt } ;
9+ use futures:: { FutureExt , StreamExt , TryFutureExt } ;
910use hbase_controller:: FULL_HBASE_CONTROLLER_NAME ;
1011use stackable_operator:: {
1112 YamlSchema ,
@@ -31,7 +32,10 @@ use stackable_operator::{
3132 utils:: signal:: SignalWatcher ,
3233} ;
3334
34- use crate :: crd:: { HbaseCluster , HbaseClusterVersion , v1alpha1} ;
35+ use crate :: {
36+ crd:: { HbaseCluster , HbaseClusterVersion , v1alpha1} ,
37+ webhooks:: conversion:: create_webhook_server,
38+ } ;
3539
3640mod config;
3741mod crd;
@@ -41,6 +45,7 @@ mod kerberos;
4145mod operations;
4246mod product_logging;
4347mod security;
48+ mod webhooks;
4449mod zookeeper;
4550
4651mod built_info {
@@ -65,9 +70,9 @@ async fn main() -> anyhow::Result<()> {
6570 . print_yaml_schema ( built_info:: PKG_VERSION , SerializeOptions :: default ( ) ) ?;
6671 }
6772 Command :: Run ( RunArguments {
68- product_config ,
73+ operator_environment ,
6974 watch_namespace,
70- operator_environment : _ ,
75+ product_config ,
7176 maintenance,
7277 common,
7378 } ) => {
@@ -97,16 +102,28 @@ async fn main() -> anyhow::Result<()> {
97102 . run ( sigterm_watcher. handle ( ) )
98103 . map ( anyhow:: Ok ) ;
99104
100- let product_config = product_config. load ( & [
101- "deploy/config-spec/properties.yaml" ,
102- "/etc/stackable/hbase-operator/config-spec/properties.yaml" ,
103- ] ) ?;
104105 let client = stackable_operator:: client:: initialize_operator (
105106 Some ( OPERATOR_NAME . to_string ( ) ) ,
106107 & common. cluster_info ,
107108 )
108109 . await ?;
109110
111+ let webhook_server = create_webhook_server (
112+ & operator_environment,
113+ maintenance. disable_crd_maintenance ,
114+ client. as_kube_client ( ) ,
115+ )
116+ . await ?;
117+
118+ let webhook_server = webhook_server
119+ . run ( sigterm_watcher. handle ( ) )
120+ . map_err ( |err| anyhow ! ( err) . context ( "failed to run webhook server" ) ) ;
121+
122+ let product_config = product_config. load ( & [
123+ "deploy/config-spec/properties.yaml" ,
124+ "/etc/stackable/hbase-operator/config-spec/properties.yaml" ,
125+ ] ) ?;
126+
110127 let event_recorder = Arc :: new ( Recorder :: new (
111128 client. as_kube_client ( ) ,
112129 Reporter {
@@ -167,7 +184,7 @@ async fn main() -> anyhow::Result<()> {
167184 )
168185 . map ( anyhow:: Ok ) ;
169186
170- futures:: try_join!( hbase_controller, eos_checker) ?;
187+ futures:: try_join!( hbase_controller, eos_checker, webhook_server ) ?;
171188 }
172189 }
173190
0 commit comments