Fix a few remaining Pushover issues from the PR.
All checks were successful
build / test (push) Successful in 5m45s
build / docs (push) Successful in 1m39s

This commit is contained in:
Dan Helfman 2024-11-18 20:32:17 -08:00
parent 9807549f88
commit d09b4c72a9
5 changed files with 12 additions and 25 deletions

2
NEWS
View File

@ -11,6 +11,8 @@
file to support the new runtime and state directory logic.
* #939: Fix borgmatic ignoring the "BORG_RELOCATED_REPO_ACCESS_IS_OK" and
"BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK" environment variables.
* Add a Pushover monitoring hook. See the documentation for more information:
https://torsion.org/borgmatic/docs/how-to/monitor-your-backups/#pushover-hook
1.9.1
* #928: Fix the user runtime directory location on macOS (and possibly Cygwin).

View File

@ -1719,7 +1719,6 @@ properties:
otherwise just the URL is shown.
example: Pushover Link
finish:
type: object
type: object
properties:
message:

View File

@ -39,10 +39,10 @@ def ping_monitor(hook_config, config, config_filename, state, monitoring_log_lev
if state_config.get('priority') == EMERGENCY_PRIORITY:
if 'expire' not in state_config:
logger.info(f'{config_filename}: Setting expire to default (10min).')
logger.info(f'{config_filename}: Setting expire to default (10 min).')
state_config['expire'] = 600
if 'retry' not in state_config:
logger.info(f'{config_filename}: Setting retry to default (30sec).')
logger.info(f'{config_filename}: Setting retry to default (30 sec).')
state_config['retry'] = 30
else:
if 'expire' in state_config or 'retry' in state_config:
@ -51,14 +51,15 @@ def ping_monitor(hook_config, config, config_filename, state, monitoring_log_lev
)
state_config = {
key: (int(value) if key in 'html' else value) for key, value in state_config.items()
key: (int(value) if key == 'html' else value) for key, value in state_config.items()
}
data = dict(
{
'token': token,
'user': user,
'message': state.name.lower(), # default to state name. Can be overwritten in state_config loop below.
# Default to state name. Can be overwritten by state_config below.
'message': state.name.lower(),
},
**state_config,
)

View File

@ -338,7 +338,7 @@ pushover:
fail:
message: "Backup <font color='#ff6961'>Failed</font>"
priority: 2 # Requests acknowledgement for messages.
expire: 1200 # Used only for priority 2. Default is 1200 seconds.
expire: 600 # Used only for priority 2. Default is 600 seconds.
retry: 30 # Used only for priority 2. Default is 30 seconds.
device: "pixel8"
title: "Backup Failed"

View File

@ -222,7 +222,7 @@ def test_ping_monitor_start_state_backup_default_message_with_priority_emergency
)
def test_ping_monitor_start_state_backup_default_message_with_priority_high_declared_expire_and_retry_ignored_success():
def test_ping_monitor_start_state_backup_default_message_with_priority_high_declared_expire_and_retry_raises():
'''
This simulates priority level 1, retry and expiry being set. Since expire
and retry are only used for priority level 2, they should not be included
@ -238,6 +238,7 @@ def test_ping_monitor_start_state_backup_default_message_with_priority_high_decl
flexmock(module.logger).should_receive('warning').never()
flexmock(module.requests).should_receive('post').never()
with pytest.raises(ValueError):
module.ping_monitor(
hook_config,
@ -452,15 +453,7 @@ def test_ping_monitor_config_with_minimum_config_fail_state_backup_successfully_
'''
hook_config = {'token': 'ksdjfwoweijfvwoeifvjmwghagy92', 'user': '983hfe0of902lkjfa2amanfgui'}
flexmock(module.logger).should_receive('warning').never()
flexmock(module.requests).should_receive('post').with_args(
'https://api.pushover.net/1/messages.json',
headers={'Content-type': 'application/x-www-form-urlencoded'},
data={
'token': 'ksdjfwoweijfvwoeifvjmwghagy92',
'user': '983hfe0of902lkjfa2amanfgui',
'message': 'fail',
},
).and_return(flexmock(ok=True)).never()
flexmock(module.requests).should_receive('post').and_return(flexmock(ok=True)).never()
module.ping_monitor(
hook_config,
@ -481,15 +474,7 @@ def test_ping_monitor_config_incorrect_state_exit_early():
'user': '983hfe0of902lkjfa2amanfgui',
}
flexmock(module.logger).should_receive('warning').never()
flexmock(module.requests).should_receive('post').with_args(
'https://api.pushover.net/1/messages.json',
headers={'Content-type': 'application/x-www-form-urlencoded'},
data={
'token': 'ksdjfwoweijfvwoeifvjmwghagy92',
'user': '983hfe0of902lkjfa2amanfgui',
'message': 'start',
},
).and_return(flexmock(ok=True)).never()
flexmock(module.requests).should_receive('post').and_return(flexmock(ok=True)).never()
module.ping_monitor(
hook_config,