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
8 changes: 5 additions & 3 deletions ops/pebble.py
Original file line number Diff line number Diff line change
Expand Up @@ -1260,9 +1260,11 @@ def _merge(self, other: Check):
self._merge_exec(value)
elif name == 'startup' and value == CheckStartup.UNSET:
continue
# Note that CheckLevel.UNSET has a different meaning to
# CheckStartup.UNSET. In the former, it means 'there is no level';
# in the latter it means 'use the default'.
elif name == 'level' and value == CheckLevel.UNSET:
# Like every other field, a level the other layer does not
# set leaves this layer's level alone (which is what Pebble
# does when it combines the layers).
continue
else:
setattr(self, name, value)

Expand Down
13 changes: 13 additions & 0 deletions test/test_pebble.py
Original file line number Diff line number Diff line change
Expand Up @@ -1220,6 +1220,19 @@ def test_level_raw(self):
check = pebble.Check('chk-http', d)
assert check.level == 'foobar!' # remains a string

def test_merge_keeps_level(self):
base = pebble.Check(
'chk', {'override': 'replace', 'level': 'alive', 'http': {'url': 'http://a/'}}
)
override = pebble.Check('chk', {'override': 'merge', 'period': '5s'})
base._merge(override)
assert base.level == pebble.CheckLevel.ALIVE
assert base.period == '5s'

override = pebble.Check('chk', {'override': 'merge', 'level': 'ready'})
base._merge(override)
assert base.level == pebble.CheckLevel.READY

def test_equality(self):
d: pebble.CheckDict = {
'override': 'replace',
Expand Down
Loading