Skip to content

Commit 20112c9

Browse files
committed
Check juju version before removing revision
1 parent c699e1f commit 20112c9

File tree

2 files changed

+29
-9
lines changed

2 files changed

+29
-9
lines changed

src/charm.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
CharmEvents,
5959
Container,
6060
HookEvent,
61+
JujuVersion,
6162
LeaderElectedEvent,
6263
MaintenanceStatus,
6364
ModelError,
@@ -1450,6 +1451,12 @@ def promote_primary_unit(self, event: ActionEvent) -> None:
14501451
event.fail("Switchover failed or timed out, check the logs for details")
14511452

14521453
def _on_secret_remove(self, event: SecretRemoveEvent) -> None:
1454+
if self.model.juju_version < JujuVersion("3.6.11"):
1455+
logger.warning(
1456+
"Skipping secret revision removal due to https://github.com/juju/juju/issues/20782"
1457+
)
1458+
return
1459+
14531460
# A secret removal (entire removal, not just a revision removal) causes
14541461
# https://github.com/juju/juju/issues/20794. This check is to avoid the
14551462
# errors that would happen if we tried to remove the revision in that case

tests/unit/test_charm.py

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import pytest
1111
from lightkube import ApiError
1212
from lightkube.resources.core_v1 import Endpoints, Pod, Service
13+
from ops import JujuVersion
1314
from ops.model import (
1415
ActiveStatus,
1516
BlockedStatus,
@@ -1694,12 +1695,24 @@ def test_get_ldap_parameters(harness):
16941695

16951696

16961697
def test_on_secret_remove(harness):
1697-
event = Mock()
1698-
harness.charm._on_secret_remove(event)
1699-
event.remove_revision.assert_called_once_with()
1700-
event.reset_mock()
1701-
1702-
# No secret
1703-
event.secret.label = None
1704-
harness.charm._on_secret_remove(event)
1705-
assert not event.remove_revision.called
1698+
with (
1699+
patch("ops.model.Model.juju_version", new_callable=PropertyMock) as _juju_version,
1700+
):
1701+
event = Mock()
1702+
1703+
# New juju
1704+
_juju_version.return_value = JujuVersion("3.6.11")
1705+
harness.charm._on_secret_remove(event)
1706+
event.remove_revision.assert_called_once_with()
1707+
event.reset_mock()
1708+
1709+
# Old juju
1710+
_juju_version.return_value = JujuVersion("3.6.9")
1711+
harness.charm._on_secret_remove(event)
1712+
assert not event.remove_revision.called
1713+
event.reset_mock()
1714+
1715+
# No secret
1716+
event.secret.label = None
1717+
harness.charm._on_secret_remove(event)
1718+
assert not event.remove_revision.called

0 commit comments

Comments
 (0)