diff --git a/src/charm.py b/src/charm.py index b880eb18c9..0ecf24cb45 100755 --- a/src/charm.py +++ b/src/charm.py @@ -413,6 +413,8 @@ def _on_postgresql_pebble_ready(self, event: WorkloadEvent) -> None: # Create a new config layer. new_layer = self._postgresql_layer() + self.unit.set_workload_version(self._patroni.rock_postgresql_version) + # Defer the initialization of the workload in the replicas # if the cluster hasn't been bootstrap on the primary yet. # Otherwise, each unit will create a different cluster and diff --git a/tests/unit/test_charm.py b/tests/unit/test_charm.py index 7282f8d53a..81979aedf4 100644 --- a/tests/unit/test_charm.py +++ b/tests/unit/test_charm.py @@ -97,6 +97,7 @@ def test_on_leader_elected(self, _, __, _render_postgresql_conf_file, ___): replication_password, ) + @patch("charm.Patroni.rock_postgresql_version", new_callable=PropertyMock) @patch("charm.Patroni.primary_endpoint_ready", new_callable=PropertyMock) @patch("charm.PostgresqlOperatorCharm.update_config") @patch("charm.PostgresqlOperatorCharm.postgresql") @@ -120,7 +121,10 @@ def test_on_postgresql_pebble_ready( _postgresql, ___, _primary_endpoint_ready, + _rock_postgresql_version, ): + _rock_postgresql_version.return_value = "14.7" + # Mock the primary endpoint ready property values. _primary_endpoint_ready.side_effect = [False, True] @@ -157,10 +161,13 @@ def test_on_postgresql_pebble_ready( self.assertEqual(container.get_service(self._postgresql_service).is_running(), True) _push_tls_files_to_workload.assert_called_once() + @patch("charm.Patroni.rock_postgresql_version", new_callable=PropertyMock) @patch("charm.PostgresqlOperatorCharm._create_pgdata") - def test_on_postgresql_pebble_ready_no_connection(self, _): + def test_on_postgresql_pebble_ready_no_connection(self, _, _rock_postgresql_version): mock_event = MagicMock() mock_event.workload = self.harness.model.unit.get_container(self._postgresql_container) + _rock_postgresql_version.return_value = "14.7" + self.charm._on_postgresql_pebble_ready(mock_event) # Event was deferred and status is still maintenance