— Add command to test gotify configuration

This commit is contained in:
Luc Didry 2024-09-04 14:19:51 +02:00
parent 255fa77ac3
commit 8072a485a1
No known key found for this signature in database
GPG key ID: EA868E12D0257E3C
3 changed files with 92 additions and 1 deletions

View file

@ -3,6 +3,7 @@
## [Unreleased]
- 💄 — Improve email and gotify notifications
- ✨ — Add command to test gotify configuration
## 0.3.1

View file

@ -607,12 +607,76 @@ async def test_mail(config, domain, severity):
notify_by_mail(
result,
task,
severity="SEVERITY",
severity=severity,
old_severity="OLD SEVERITY",
config=conf.general.mail,
request=_FalseRequest(),
)
@server.command()
@click.option(
"--config",
default="argos-config.yaml",
help="Path of the configuration file. "
"If ARGOS_YAML_FILE environment variable is set, its value will be used instead.",
envvar="ARGOS_YAML_FILE",
callback=validate_config_access,
)
@click.option("--domain", help="Domain for the notification", default="example.org")
@click.option("--severity", help="Severity", default="CRITICAL")
@coroutine
async def test_gotify(config, domain, severity):
"""Send a test gotify notification"""
os.environ["ARGOS_YAML_FILE"] = config
from datetime import datetime
from argos.logging import set_log_level
from argos.server.alerting import notify_with_gotify
from argos.server.main import read_config
from argos.server.models import Result, Task
conf = read_config(config)
if not conf.general.gotify:
click.echo("Gotify notifications are not configured, cannot test", err=True)
sysexit(1)
else:
now = datetime.now()
task = Task(
url=f"https://{domain}",
domain=domain,
check="body-contains",
expected="foo",
frequency=1,
selected_by="test",
selected_at=now,
)
result = Result(
submitted_at=now,
status="success",
context={"foo": "bar"},
task=task,
agent_id="test",
severity="ok",
)
class _FalseRequest:
def url_for(*args, **kwargs):
return "/url"
set_log_level("debug")
notify_with_gotify(
result,
task,
severity=severity,
old_severity="OLD SEVERITY",
config=conf.general.gotify,
request=_FalseRequest(),
)
if __name__ == "__main__":
cli()

View file

@ -85,6 +85,7 @@ Commands:
migrate Run database migrations
reload-config Load or reload tasks configuration
start Starts the server (use only for testing or development!)
test-gotify Send a test gotify notification
test-mail Send a test email
user User management
watch-agents Watch agents (to run routinely)
@ -491,3 +492,28 @@ Options:
<!--[[[end]]]
-->
#### Test the Gotify settings
You can verify that your Gotify settings are ok by sending a test notification
<!--
.. [[[cog
help(["server", "test-gotify", "--help"])
.. ]]] -->
```man
Usage: argos server test-gotify [OPTIONS]
Send a test gotify notification
Options:
--config TEXT Path of the configuration file. If ARGOS_YAML_FILE
environment variable is set, its value will be used instead.
--domain TEXT Domain for the notification
--severity TEXT Severity
--help Show this message and exit.
```
<!--[[[end]]]
-->