Skip to content

Commit

Permalink
added default juju data to default remote unit databag
Browse files Browse the repository at this point in the history
  • Loading branch information
PietroPasotti committed Feb 7, 2024
1 parent 138a9dd commit 75a09fd
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 1 deletion.
10 changes: 9 additions & 1 deletion scenario/state.py
Original file line number Diff line number Diff line change
Expand Up @@ -444,6 +444,14 @@ def broken_event(self) -> "Event":
)


_DEFAULT_IP = "42.42.42.42"
DEFAULT_JUJU_DATABAG = {
"egress-subnets": _DEFAULT_IP,
"ingress-address": _DEFAULT_IP,
"private-address": _DEFAULT_IP,
}


@dataclasses.dataclass(frozen=True)
class Relation(RelationBase):
remote_app_name: str = "remote"
Expand All @@ -453,7 +461,7 @@ class Relation(RelationBase):

remote_app_data: "RawDataBagContents" = dataclasses.field(default_factory=dict)
remote_units_data: Dict["UnitID", "RawDataBagContents"] = dataclasses.field(
default_factory=lambda: {0: {}},
default_factory=lambda: {0: DEFAULT_JUJU_DATABAG.copy()}, # dedup
)

@property
Expand Down
40 changes: 40 additions & 0 deletions tests/test_e2e/test_relations.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
from ops.framework import EventBase, Framework

from scenario.state import (
_DEFAULT_IP,
DEFAULT_JUJU_DATABAG,
PeerRelation,
Relation,
RelationBase,
Expand Down Expand Up @@ -229,6 +231,44 @@ def callback(charm: CharmBase, event):
)


@pytest.mark.parametrize(
"evt_name",
("changed", "broken", "departed", "joined", "created"),
)
def test_relation_events_remote_units_data_defaults(mycharm, evt_name, caplog):
relation = Relation(
endpoint="foo",
interface="foo",
)

def callback(charm: CharmBase, event):
if isinstance(event, CollectStatusEvent):
return

assert event.app # that's always present
remote_unit = event.relation.units.pop()

assert event.relation.data[remote_unit] == DEFAULT_JUJU_DATABAG

mycharm._call = callback

trigger(
State(
relations=[
relation,
],
),
getattr(relation, f"{evt_name}_event"),
mycharm,
meta={
"name": "local",
"requires": {
"foo": {"interface": "foo"},
},
},
)


@pytest.mark.parametrize(
"evt_name",
("changed", "broken", "departed", "joined", "created"),
Expand Down

0 comments on commit 75a09fd

Please sign in to comment.