Skip to content

Commit 4ee374b

Browse files
authored
[DPE-8550] Revision removal version check 16 (#1150)
* Check juju version before removing revision * Update spread list and redis deployments
1 parent 9273964 commit 4ee374b

File tree

4 files changed

+32
-13
lines changed

4 files changed

+32
-13
lines changed

src/charm.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
CharmEvents,
6262
Container,
6363
HookEvent,
64+
JujuVersion,
6465
LeaderElectedEvent,
6566
MaintenanceStatus,
6667
ModelError,
@@ -1581,6 +1582,12 @@ def promote_primary_unit(self, event: ActionEvent) -> None:
15811582
event.fail("Switchover failed or timed out, check the logs for details")
15821583

15831584
def _on_secret_remove(self, event: SecretRemoveEvent) -> None:
1585+
if self.model.juju_version < JujuVersion("3.6.11"):
1586+
logger.warning(
1587+
"Skipping secret revision removal due to https://github.com/juju/juju/issues/20782"
1588+
)
1589+
return
1590+
15841591
# A secret removal (entire removal, not just a revision removal) causes
15851592
# https://github.com/juju/juju/issues/20794. This check is to avoid the
15861593
# errors that would happen if we tried to remove the revision in that case

tests/integration/new_relations/test_new_relations_1.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
DATABASE_APP_NAME = "database"
3030
ANOTHER_DATABASE_APP_NAME = "another-database"
3131
DISCOURSE_APP_NAME = "discourse-k8s"
32-
REDIS_APP_NAME = "redis-k8s"
3332
APP_NAMES = [APPLICATION_APP_NAME, DATABASE_APP_NAME, ANOTHER_DATABASE_APP_NAME]
3433
DATABASE_APP_METADATA = yaml.safe_load(Path("./metadata.yaml").read_text())
3534
FIRST_DATABASE_RELATION_NAME = "database"

tests/integration/new_relations/test_new_relations_2.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ async def test_discourse(ops_test: OpsTest):
6969
await gather(
7070
ops_test.model.deploy(DISCOURSE_APP_NAME, application_name=DISCOURSE_APP_NAME),
7171
ops_test.model.deploy(
72-
REDIS_APP_NAME, application_name=REDIS_APP_NAME, channel="latest/edge", base=CHARM_BASE
72+
REDIS_APP_NAME, application_name=REDIS_APP_NAME, channel="latest/edge", series="jammy"
7373
),
7474
)
7575

@@ -151,10 +151,10 @@ async def test_indico_datatabase(ops_test: OpsTest) -> None:
151151
series="focal",
152152
)
153153
await ops_test.model.deploy(
154-
"redis-k8s", channel="edge", application_name="redis-broker", base="[email protected]"
154+
REDIS_APP_NAME, application_name="redis-broker", channel="latest/edge", series="jammy"
155155
)
156156
await ops_test.model.deploy(
157-
"redis-k8s", channel="edge", application_name="redis-cache", base="[email protected]"
157+
REDIS_APP_NAME, application_name="redis-cache", channel="latest/edge", series="jammy"
158158
)
159159
await asyncio.gather(
160160
ops_test.model.relate("redis-broker", "indico:redis-broker"),

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,
@@ -1642,12 +1643,24 @@ def test_get_ldap_parameters(harness):
16421643

16431644

16441645
def test_on_secret_remove(harness):
1645-
event = Mock()
1646-
harness.charm._on_secret_remove(event)
1647-
event.remove_revision.assert_called_once_with()
1648-
event.reset_mock()
1649-
1650-
# No secret
1651-
event.secret.label = None
1652-
harness.charm._on_secret_remove(event)
1653-
assert not event.remove_revision.called
1646+
with (
1647+
patch("ops.model.Model.juju_version", new_callable=PropertyMock) as _juju_version,
1648+
):
1649+
event = Mock()
1650+
1651+
# New juju
1652+
_juju_version.return_value = JujuVersion("3.6.11")
1653+
harness.charm._on_secret_remove(event)
1654+
event.remove_revision.assert_called_once_with()
1655+
event.reset_mock()
1656+
1657+
# Old juju
1658+
_juju_version.return_value = JujuVersion("3.6.9")
1659+
harness.charm._on_secret_remove(event)
1660+
assert not event.remove_revision.called
1661+
event.reset_mock()
1662+
1663+
# No secret
1664+
event.secret.label = None
1665+
harness.charm._on_secret_remove(event)
1666+
assert not event.remove_revision.called

0 commit comments

Comments
 (0)