112
112
from relations .postgresql_provider import PostgreSQLProvider
113
113
from rotate_logs import RotateLogs
114
114
from upgrade import PostgreSQLUpgrade , get_postgresql_dependencies_model
115
- from utils import new_password
115
+ from utils import new_password , snap_refreshed
116
116
117
117
logger = logging .getLogger (__name__ )
118
118
@@ -753,7 +753,9 @@ def _start_stop_pgbackrest_service(self, event: HookEvent) -> None:
753
753
self .backup .coordinate_stanza_fields ()
754
754
755
755
if "exporter-started" not in self .unit_peer_data :
756
- self ._setup_exporter ()
756
+ cache = snap .SnapCache ()
757
+ postgres_snap = cache [POSTGRESQL_SNAP_NAME ]
758
+ self ._setup_exporter (postgres_snap )
757
759
758
760
def _update_new_unit_status (self ) -> None :
759
761
"""Update the status of a new unit that recently joined the cluster."""
@@ -1330,7 +1332,7 @@ def _restart_metrics_service(self) -> None:
1330
1332
return None
1331
1333
1332
1334
if snap_password != self .get_secret (APP_SCOPE , MONITORING_PASSWORD_KEY ):
1333
- self ._setup_exporter ()
1335
+ self ._setup_exporter (postgres_snap )
1334
1336
1335
1337
def _restart_ldap_sync_service (self ) -> None :
1336
1338
"""Restart the LDAP sync service in case any configuration changed."""
@@ -1352,37 +1354,26 @@ def _restart_ldap_sync_service(self) -> None:
1352
1354
return
1353
1355
1354
1356
if self .is_primary and self .is_ldap_enabled :
1355
- self ._setup_ldap_sync ()
1357
+ self ._setup_ldap_sync (postgres_snap )
1356
1358
1357
- def _setup_exporter (self ) -> None :
1359
+ def _setup_exporter (self , postgres_snap : snap . Snap ) -> None :
1358
1360
"""Set up postgresql_exporter options."""
1359
- cache = snap .SnapCache ()
1360
- postgres_snap = cache [POSTGRESQL_SNAP_NAME ]
1361
-
1362
- if postgres_snap .revision != next (
1363
- filter (lambda snap_package : snap_package [0 ] == POSTGRESQL_SNAP_NAME , SNAP_PACKAGES )
1364
- )[1 ]["revision" ].get (platform .machine ()):
1365
- logger .debug (
1366
- "Early exit _setup_exporter: snap was not refreshed to the right version yet"
1367
- )
1368
- return
1369
-
1370
1361
postgres_snap .set ({
1371
1362
"exporter.user" : MONITORING_USER ,
1372
1363
"exporter.password" : self .get_secret (APP_SCOPE , MONITORING_PASSWORD_KEY ),
1373
1364
})
1365
+
1374
1366
if postgres_snap .services [MONITORING_SNAP_SERVICE ]["active" ] is False :
1375
1367
postgres_snap .start (services = [MONITORING_SNAP_SERVICE ], enable = True )
1376
1368
else :
1377
1369
postgres_snap .restart (services = [MONITORING_SNAP_SERVICE ])
1370
+
1378
1371
self .unit_peer_data .update ({"exporter-started" : "True" })
1379
1372
1380
- def _setup_ldap_sync (self ) -> None :
1373
+ def _setup_ldap_sync (self , postgres_snap : snap . Snap ) -> None :
1381
1374
"""Set up postgresql_ldap_sync options."""
1382
- cache = snap .SnapCache ()
1383
- postgres_snap = cache [POSTGRESQL_SNAP_NAME ]
1384
-
1385
1375
ldap_params = self .get_ldap_parameters ()
1376
+
1386
1377
ldap_url = urlparse (ldap_params ["ldapurl" ])
1387
1378
ldap_host = ldap_url .hostname
1388
1379
ldap_port = ldap_url .port
@@ -2053,6 +2044,14 @@ def update_config(self, is_creating_backup: bool = False, no_peers: bool = False
2053
2044
})
2054
2045
2055
2046
self ._handle_postgresql_restart_need (enable_tls )
2047
+
2048
+ cache = snap .SnapCache ()
2049
+ postgres_snap = cache [POSTGRESQL_SNAP_NAME ]
2050
+
2051
+ if not snap_refreshed (postgres_snap .revision ):
2052
+ logger .debug ("Early exit: snap was not refreshed to the right version yet" )
2053
+ return True
2054
+
2056
2055
self ._restart_metrics_service ()
2057
2056
self ._restart_ldap_sync_service ()
2058
2057
0 commit comments