91
91
MissingSecretError ,
92
92
NotConfigServerError ,
93
93
)
94
+ from gen_cert import gen_certificate
95
+ from service_manager import SERVICE_NAME , generate_mutating_webhook , generate_service
94
96
from upgrades import kubernetes_upgrades
95
97
from upgrades .mongodb_upgrades import MongoDBUpgrade
96
- from gen_cert import gen_certificate
97
- from service_manager import generate_mutating_webhook , generate_service
98
98
99
99
logger = logging .getLogger (__name__ )
100
100
@@ -639,21 +639,17 @@ def _filesystem_handler(self, container: Container) -> None:
639
639
# BEGIN: charm events
640
640
def _on_mongod_pebble_ready (self , event ) -> None :
641
641
"""Configure MongoDB pebble layer specification."""
642
- # Get a reference the container attribute
643
642
container = self .unit .get_container (Config .CONTAINER_NAME )
644
- if not container .can_connect ():
645
- logger .debug ("mongod container is not ready yet." )
646
- event .defer ()
647
- return
648
643
649
- # We need to check that the storages are attached before starting the services.
650
- # pebble-ready is not guaranteed to run after storage-attached so this check allows
651
- # to ensure that the storages are attached before the pebble-ready hook is run.
652
- if any (not storage for storage in self .model .storages .values ()):
653
- logger .debug ("Storages are not attached yet" )
644
+ # Just run the configure layers steps on the container and defer if it fails.
645
+ try :
646
+ self ._configure_container (container )
647
+ except ContainerNotReadyError :
654
648
event .defer ()
655
649
return
656
650
651
+ self .upgrade ._reconcile_upgrade (event )
652
+
657
653
# BEGIN: charm events
658
654
def _on_webhook_mutator_pebble_ready (self , event ) -> None :
659
655
# still need todo use lightkube register the mutating webhook with
@@ -665,8 +661,8 @@ def _on_webhook_mutator_pebble_ready(self, event) -> None:
665
661
event .defer ()
666
662
return
667
663
668
- cert = self .get_secret (APP_SCOPE , "webhook-certificate" )
669
- private_key = self .get_secret (APP_SCOPE , "webhook-key" )
664
+ cert = self .get_secret (APP_SCOPE , Config . WebhookManager . CRT_SECRET )
665
+ private_key = self .get_secret (APP_SCOPE , Config . WebhookManager . KEY_SECRET )
670
666
671
667
if not cert or not private_key :
672
668
logger .debug ("Waiting for certificates" )
@@ -688,24 +684,6 @@ def _on_webhook_mutator_pebble_ready(self, event) -> None:
688
684
generate_service (client , self .unit , self .model .name )
689
685
generate_mutating_webhook (client , self .unit , self .model .name , cert )
690
686
691
- def _on_mongod_pebble_ready (self , event ) -> None :
692
- """Configure MongoDB pebble layer specification."""
693
- # Get a reference the container attribute
694
- container = self .unit .get_container (Config .CONTAINER_NAME )
695
- if not container .can_connect ():
696
- logger .debug ("mongod container is not ready yet." )
697
- event .defer ()
698
- return
699
-
700
- # We need to check that the storages are attached before starting the services.
701
- # pebble-ready is not guaranteed to run after storage-attached so this check allows
702
- # to ensure that the storages are attached before the pebble-ready hook is run.
703
- if any (not storage for storage in self .model .storages .values ()):
704
- logger .debug ("Storages are not attached yet" )
705
- event .defer ()
706
- return
707
-
708
-
709
687
def _configure_layers (self , container : Container ) -> None :
710
688
"""Configure the layers of the container."""
711
689
modified = False
@@ -788,19 +766,6 @@ def _on_upgrade(self, event: UpgradeCharmEvent) -> None:
788
766
# Post upgrade event verifies the success of the upgrade.
789
767
self .upgrade .post_app_upgrade_event .emit ()
790
768
791
- def _on_mongod_pebble_ready (self , event ) -> None :
792
- """Configure MongoDB pebble layer specification."""
793
- container = self .unit .get_container (Config .CONTAINER_NAME )
794
-
795
- # Just run the configure layers steps on the container and defer if it fails.
796
- try :
797
- self ._configure_container (container )
798
- except ContainerNotReadyError :
799
- event .defer ()
800
- return
801
-
802
- self .upgrade ._reconcile_upgrade (event )
803
-
804
769
def is_db_service_ready (self ) -> bool :
805
770
"""Checks if the MongoDB service is ready to accept connections."""
806
771
with MongoDBConnection (self .mongodb_config , "localhost" , direct = True ) as direct_mongo :
@@ -892,12 +857,12 @@ def _on_start(self, event: StartEvent) -> None:
892
857
if not self .unit .is_leader ():
893
858
return
894
859
895
- if not self .get_secret (APP_SCOPE , "webhook-certificate" ) or not self .get_secret (
896
- APP_SCOPE , "webhook-key"
860
+ if not self .get_secret (APP_SCOPE , Config . WebhookManager . CRT_SECRET ) or not self .get_secret (
861
+ APP_SCOPE , Config . WebhookManager . KEY_SECRET
897
862
):
898
- cert , key = gen_certificate (Config . WebhookManager . SERVICE_NAME , self .model .name )
899
- self .set_secret (APP_SCOPE , "webhook-certificate" , cert .decode ())
900
- self .set_secret (APP_SCOPE , "webhook-key" , key .decode ())
863
+ cert , key = gen_certificate (SERVICE_NAME , self .model .name )
864
+ self .set_secret (APP_SCOPE , Config . WebhookManager . CRT_SECRET , cert .decode ())
865
+ self .set_secret (APP_SCOPE , Config . WebhookManager . KEY_SECRET , key .decode ())
901
866
self ._initialise_replica_set (event )
902
867
try :
903
868
self ._initialise_users (event )
@@ -1041,7 +1006,7 @@ def _on_stop(self, event) -> None:
1041
1006
client .delete (
1042
1007
MutatingWebhookConfiguration ,
1043
1008
namespace = self .model .name ,
1044
- name = Config . WebhookManager . SERVICE_NAME ,
1009
+ name = SERVICE_NAME ,
1045
1010
)
1046
1011
self .__handle_partition_on_stop ()
1047
1012
if self .unit_departed :
0 commit comments