diff --git a/metadata.yaml b/metadata.yaml index b13f3d18..7a530806 100644 --- a/metadata.yaml +++ b/metadata.yaml @@ -17,7 +17,7 @@ resources: oci-image: type: oci-image description: OCI image for hydra container - upstream-source: ghcr.io/canonical/hydra:2.1.1 + upstream-source: ghcr.io/canonical/hydra:2.2.0 requires: pg-database: interface: postgresql_client diff --git a/src/charm.py b/src/charm.py index 049ee63a..7809357f 100755 --- a/src/charm.py +++ b/src/charm.py @@ -619,6 +619,9 @@ def _on_run_migration(self, event: ActionEvent) -> None: self._set_peer_data(self._migration_peer_data_key, self._hydra_cli.get_version()) event.log("Updated migration version in peer data.") + if self.unit.status == WaitingStatus("Waiting for migration to run"): + self._handle_status_update_config(event) + def _on_database_relation_departed(self, event: RelationDepartedEvent) -> None: """Event Handler for database relation departed event.""" self.unit.status = BlockedStatus("Missing required relation with postgresql") diff --git a/tests/unit/test_charm.py b/tests/unit/test_charm.py index 5d80a6b0..ed548b9b 100644 --- a/tests/unit/test_charm.py +++ b/tests/unit/test_charm.py @@ -1179,3 +1179,36 @@ def test_timeout_on_run_migration_action( mocked_run_migration.assert_called_once() event.fail.assert_called() + + +def test_unit_status_before_run_migration_action( + harness: Harness, + mocked_migration_is_needed: MagicMock, + mocked_run_migration: MagicMock, + mocked_get_secrets: MagicMock, +) -> None: + harness.set_can_connect(CONTAINER_NAME, True) + mocked_migration_is_needed.return_value = True + setup_peer_relation(harness) + setup_ingress_relation(harness, "public") + setup_postgres_relation(harness) + assert harness.charm.unit.status == WaitingStatus("Waiting for migration to run") + + +def test_unit_status_after_run_migration_action( + harness: Harness, + mocked_migration_is_needed: MagicMock, + mocked_run_migration: MagicMock, + mocked_get_secrets: MagicMock, +) -> None: + harness.set_can_connect(CONTAINER_NAME, True) + mocked_migration_is_needed.return_value = True + setup_peer_relation(harness) + setup_ingress_relation(harness, "public") + setup_postgres_relation(harness) + + mocked_migration_is_needed.return_value = False + event = MagicMock() + harness.charm._on_run_migration(event) + + assert isinstance(harness.model.unit.status, ActiveStatus)