80 lines
2.1 KiB
Python
80 lines
2.1 KiB
Python
#!/usr/bin/python3
|
|
"""
|
|
Main entrypoint to run Alertify
|
|
"""
|
|
|
|
import argparse
|
|
import logging
|
|
import os
|
|
import sys
|
|
|
|
from src import alertify
|
|
|
|
if __name__ == '__main__':
|
|
|
|
def parse_cli():
|
|
"""
|
|
Function to parse the CLI
|
|
"""
|
|
maxlen = max([len(key) for key in alertify.Config.defaults()])
|
|
defaults = [
|
|
f' * {key.upper().ljust(maxlen)} (default: {val if val != "" else "None"})'
|
|
for key, val in alertify.Config.defaults().items()
|
|
]
|
|
|
|
parser = argparse.ArgumentParser(
|
|
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
description='Bridge between Prometheus Alertmanager and Gotify\n',
|
|
epilog='The following environment variables will override any config or default:\n'
|
|
+ '\n'.join(defaults),
|
|
)
|
|
|
|
parser.add_argument(
|
|
'-c',
|
|
'--config',
|
|
default=f'{os.path.splitext(__file__)[0]}.yaml',
|
|
help=f'path to config YAML. (default: {os.path.splitext(__file__)[0]}.yaml)',
|
|
)
|
|
|
|
parser.add_argument(
|
|
'-H',
|
|
'--healthcheck',
|
|
action='store_true',
|
|
help='simply exit with 0 for healthy or 1 when unhealthy',
|
|
)
|
|
|
|
return parser.parse_args()
|
|
|
|
def main():
|
|
"""
|
|
main()
|
|
"""
|
|
logging.basicConfig(
|
|
format='%(levelname)s: %(message)s',
|
|
level=logging.INFO,
|
|
)
|
|
|
|
args = parse_cli()
|
|
|
|
# forwarder = alertify.Alertify(args.config)
|
|
forwarder = alertify.Alertify()
|
|
|
|
if forwarder.config.verbose:
|
|
logger = logging.getLogger()
|
|
logger.setLevel(logging.DEBUG)
|
|
|
|
if args.healthcheck:
|
|
# Invert the sense of 'healthy' for Unix CLI usage
|
|
return not forwarder.healthcheck.report()
|
|
|
|
if forwarder.config.verbose:
|
|
logging.debug('Parsed config:')
|
|
for key, val in forwarder.config.items():
|
|
logging.debug('%s: %s', key, val)
|
|
|
|
forwarder.server.listen_and_run()
|
|
|
|
return 0
|
|
|
|
sys.exit(main())
|