Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions src/charm.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@
CharmEvents,
Container,
HookEvent,
JujuVersion,
LeaderElectedEvent,
MaintenanceStatus,
ModelError,
Expand Down Expand Up @@ -1450,6 +1451,12 @@ def promote_primary_unit(self, event: ActionEvent) -> None:
event.fail("Switchover failed or timed out, check the logs for details")

def _on_secret_remove(self, event: SecretRemoveEvent) -> None:
if self.model.juju_version < JujuVersion("3.6.11"):
logger.warning(
"Skipping secret revision removal due to https://github.com/juju/juju/issues/20782"
)
return

# A secret removal (entire removal, not just a revision removal) causes
# https://github.com/juju/juju/issues/20794. This check is to avoid the
# errors that would happen if we tried to remove the revision in that case
Expand Down
31 changes: 22 additions & 9 deletions tests/unit/test_charm.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import pytest
from lightkube import ApiError
from lightkube.resources.core_v1 import Endpoints, Pod, Service
from ops import JujuVersion
from ops.model import (
ActiveStatus,
BlockedStatus,
Expand Down Expand Up @@ -1694,12 +1695,24 @@ def test_get_ldap_parameters(harness):


def test_on_secret_remove(harness):
event = Mock()
harness.charm._on_secret_remove(event)
event.remove_revision.assert_called_once_with()
event.reset_mock()

# No secret
event.secret.label = None
harness.charm._on_secret_remove(event)
assert not event.remove_revision.called
with (
patch("ops.model.Model.juju_version", new_callable=PropertyMock) as _juju_version,
):
event = Mock()

# New juju
_juju_version.return_value = JujuVersion("3.6.11")
harness.charm._on_secret_remove(event)
event.remove_revision.assert_called_once_with()
event.reset_mock()

# Old juju
_juju_version.return_value = JujuVersion("3.6.9")
harness.charm._on_secret_remove(event)
assert not event.remove_revision.called
event.reset_mock()

# No secret
event.secret.label = None
harness.charm._on_secret_remove(event)
assert not event.remove_revision.called
Loading