@@ -77,7 +77,7 @@ def version(self) -> str:
77
77
return ""
78
78
79
79
def upgrade (
80
- self , * , unit : ops .Unit , tls : bool , exporter_config : "relations.cos.ExporterConfig"
80
+ self , * , event , unit : ops .Unit , tls : bool , exporter_config : "relations.cos.ExporterConfig"
81
81
) -> None :
82
82
"""Upgrade MySQL Router.
83
83
@@ -157,6 +157,7 @@ def _disable_router(self) -> None:
157
157
def reconcile (
158
158
self ,
159
159
* ,
160
+ event ,
160
161
tls : bool ,
161
162
unit_name : str ,
162
163
exporter_config : "relations.cos.ExporterConfig" ,
@@ -253,15 +254,17 @@ def _get_bootstrap_command(
253
254
"--conf-use-gr-notifications" ,
254
255
]
255
256
256
- def _bootstrap_router (self , * , tls : bool ) -> None :
257
+ def _bootstrap_router (self , * , event , tls : bool ) -> None :
257
258
"""Bootstrap MySQL Router."""
258
259
logger .debug (
259
260
f"Bootstrapping router { tls = } , { self ._connection_info .host = } , { self ._connection_info .port = } "
260
261
)
261
262
# Redact password from log
262
- logged_command = self ._get_bootstrap_command (self ._connection_info .redacted )
263
+ logged_command = self ._get_bootstrap_command (
264
+ event = event , connection_info = self ._connection_info .redacted
265
+ )
263
266
264
- command = self ._get_bootstrap_command (self ._connection_info )
267
+ command = self ._get_bootstrap_command (event = event , connection_info = self ._connection_info )
265
268
try :
266
269
self ._container .run_mysql_router (command , timeout = 30 )
267
270
except container .CalledProcessError as e :
@@ -311,31 +314,31 @@ def _router_username(self) -> str:
311
314
"""
312
315
return self ._parse_username_from_config (self ._container .router_config_file .read_text ())
313
316
314
- def _restart (self , * , tls : bool ) -> None :
317
+ def _restart (self , * , event , tls : bool ) -> None :
315
318
"""Restart MySQL Router to enable or disable TLS."""
316
319
logger .debug ("Restarting MySQL Router" )
317
320
assert self ._container .mysql_router_service_enabled is True
318
321
self ._container .update_mysql_router_service (enabled = True , tls = tls )
319
322
logger .debug ("Restarted MySQL Router" )
320
- self ._charm .wait_until_mysql_router_ready ()
323
+ self ._charm .wait_until_mysql_router_ready (event )
321
324
# wait_until_mysql_router_ready will set WaitingStatus—override it with current charm
322
325
# status
323
326
self ._charm .set_status (event = None )
324
327
325
- def _enable_router (self , * , tls : bool , unit_name : str ) -> None :
328
+ def _enable_router (self , * , event , tls : bool , unit_name : str ) -> None :
326
329
"""Enable router after setting up all the necessary prerequisites."""
327
330
logger .debug ("Enabling MySQL Router service" )
328
331
self ._cleanup_after_upgrade_or_potential_container_restart ()
329
332
# create an empty credentials file, if the file does not exist
330
333
self ._container .create_router_rest_api_credentials_file ()
331
- self ._bootstrap_router (tls = tls )
334
+ self ._bootstrap_router (event = event , tls = tls )
332
335
self .shell .add_attributes_to_mysql_router_user (
333
336
username = self ._router_username , router_id = self ._router_id , unit_name = unit_name
334
337
)
335
338
self ._container .update_mysql_router_service (enabled = True , tls = tls )
336
339
self ._logrotate .enable ()
337
340
logger .debug ("Enabled MySQL Router service" )
338
- self ._charm .wait_until_mysql_router_ready ()
341
+ self ._charm .wait_until_mysql_router_ready (event )
339
342
340
343
def _enable_exporter (
341
344
self , * , tls : bool , exporter_config : "relations.cos.ExporterConfig"
@@ -356,6 +359,7 @@ def _enable_exporter(
356
359
def reconcile (
357
360
self ,
358
361
* ,
362
+ event ,
359
363
tls : bool ,
360
364
unit_name : str ,
361
365
exporter_config : "relations.cos.ExporterConfig" ,
@@ -376,23 +380,23 @@ def reconcile(
376
380
key = key , certificate = certificate , certificate_authority = certificate_authority
377
381
)
378
382
if custom_certificate != certificate and self ._container .mysql_router_service_enabled :
379
- self ._restart (tls = tls )
383
+ self ._restart (event = event , tls = tls )
380
384
else :
381
385
self ._disable_tls ()
382
386
if custom_certificate and self ._container .mysql_router_service_enabled :
383
- self ._restart (tls = tls )
387
+ self ._restart (event = event , tls = tls )
384
388
385
389
# If the host or port changes, MySQL Router will receive topology change
386
390
# notifications from MySQL.
387
391
# Therefore, if the host or port changes, we do not need to restart MySQL Router.
388
- is_charm_exposed = self ._charm .is_externally_accessible ()
392
+ is_charm_exposed = self ._charm .is_externally_accessible (event = event )
389
393
socket_file_exists = self ._container .path ("/run/mysqlrouter/mysql.sock" ).exists ()
390
394
require_rebootstrap = is_charm_exposed == socket_file_exists
391
395
if require_rebootstrap :
392
396
self ._disable_router ()
393
397
394
398
if not self ._container .mysql_router_service_enabled :
395
- self ._enable_router (tls = tls , unit_name = unit_name )
399
+ self ._enable_router (event = event , tls = tls , unit_name = unit_name )
396
400
397
401
if (not self ._container .mysql_router_exporter_service_enabled and exporter_config ) or (
398
402
self ._container .mysql_router_exporter_service_enabled
@@ -417,7 +421,7 @@ def status(self) -> typing.Optional[ops.StatusBase]:
417
421
)
418
422
419
423
def upgrade (
420
- self , * , unit : ops .Unit , tls : bool , exporter_config : "relations.cos.ExporterConfig"
424
+ self , * , event , unit : ops .Unit , tls : bool , exporter_config : "relations.cos.ExporterConfig"
421
425
) -> None :
422
426
enabled = self ._container .mysql_router_service_enabled
423
427
exporter_enabled = self ._container .mysql_router_exporter_service_enabled
@@ -429,7 +433,7 @@ def upgrade(
429
433
super ().upgrade (unit = unit , tls = tls , exporter_config = exporter_config )
430
434
if enabled :
431
435
logger .debug ("Re-enabling MySQL Router service after upgrade" )
432
- self ._enable_router (tls = tls , unit_name = unit .name )
436
+ self ._enable_router (event = event , tls = tls , unit_name = unit .name )
433
437
if exporter_enabled :
434
438
self ._enable_exporter (tls = tls , exporter_config = exporter_config )
435
439
0 commit comments